做过其他免杀吗,比如结合 CS 和 MSF 的
MSFvenom 生成的 Payload 如何免杀?
msfvenom
是一个强大的命令行工具,用于生成各种 Payload。它自带了多种编码器(Encoder),可以对 Payload 进行编码来绕过简单的静态特征码检测
- 编码器(Encoders):最简单的免杀方法是使用
msfvenom
自带的编码器,例如shikata_ga_nai
。这个编码器会对 Shellcode 进行多态编码,使得每次生成的 Payload 都不一样。但是,这种方法对于现代杀软来说已经不够了,因为杀软可以识别出编码器本身的行为模式 - 利用模板文件(Templates):你可以使用
-x
参数指定一个合法的可执行文件(例如notepad.exe
)作为模板,msfvenom
会将 Payload 注入到这个文件中。这样可以改变文件哈希,并且文件看起来像一个正常的程序 - 自定义 Shellcode 和加载器(Loader):
- 生成纯 Shellcode:使用
-f raw
或-f bin
参数生成原始的 Shellcode 二进制文件,不带任何可执行文件头 - 编写自定义加载器:用 C++、C# 或 PowerShell 等语言编写一个加载器,它的任务是将 Shellcode 加载到内存并执行
- 混淆加载器代码:对加载器的代码进行混淆,比如使用花指令、字符串加密,以及反沙箱技术,来绕过杀软对加载器的静态检测
- 内存执行:加载器可以使用一些技巧,如
VirtualAlloc
、WriteProcessMemory
和CreateThread
等 API,来分配内存、将 Shellcode 写入,并在新线程中执行。由于 Shellcode 只是数据,不直接在文件中,静态杀软很难发现它
- 生成纯 Shellcode:使用
Cobalt Strike 生成的 Payload 如何免杀?
Cobalt Strike 生成的 Beacon Payload 同样非常强大,但它的默认 Payload 也会被杀软识别。CS 的免杀需要更高级的技巧
- 分离 Payload 和 Stager:CS 的 Beacon Payload 通常分为两个阶段:一个小的
Stager
和一个大的Stageless
Payload。Stager
的任务是下载Stageless
Payload。你可以只生成Stager
,并对其进行混淆,而将Stageless
Payload 托管在自己的服务器上 - 使用自定义的 Shellcode 加载器(Loader):
- CS 可以导出原始的 Shellcode。你可以使用前面提到的方法,用自定义的加载器来加载它
- 很多攻击者会使用反射式 DLL 注入来加载 Payload。他们将 Shellcode 封装成一个 DLL,然后通过进程注入技术将 DLL 加载到另一个无害的进程中,以隐藏其行为
- 绕过行为检测:CS 的 Beacon 在网络通信、权限提升等方面有很多特征,可能会被杀软的行为监控引擎捕获为了绕过这些检测:
- 混淆网络通信:使用自定义的通信协议或加密方式,使得流量看起来不像 Beacon 的默认流量
- 进程注入的规避:使用更隐蔽的进程注入技术,例如直接在内存中执行,而不是写入磁盘文件
- 使用合法的证书和签名:对 Payload 文件进行代码签名,增加其可信度
- 使用第三方工具:除了自己编写加载器,还有很多开源或商业的工具专门用于混淆和打包 MSF/CS 的 Shellcode,例如
sliver
和Mythic
等。这些工具通常包含了更高级的免杀技术