关于CrimsonEDR
CrimsonEDR是一个功能强大的开源项目,该项目旨在帮助广大研究人员识别特定的恶意软件模式,以此来优化终端检测与响应(EDR)的策略方案。通过使用各种不同的检测方案,可以加深开发人员与研究人员加深对安全规避策略的理解。
功能介绍
检测 | 描述 |
直接系统调用 | 检测直接系统调用的使用情况,恶意软件通常使用直接系统调用来绕过传统的 API 钩子。 |
NTDLL 解除钩子 | 识别尝试解除 NTDLL 库中的函数的钩子,这是一种常见的规避技术。 |
AMSI 补丁 | 通过字节级分析检测对反恶意软件扫描接口 (AMSI) 的修改。 |
ETW 补丁 | 检测 Windows 事件跟踪 (ETW) 的字节级更改,恶意软件通常会操纵这些更改来逃避检测。 |
PE Stomping | 识别 PE(可移植可执行文件)Stomping 的实例。 |
反射型PE 加载 | 检测 PE 文件的反射加载,这是恶意软件用来避免静态分析的一种技术。 |
未备份线程来源 | 识别源自不受支持的内存区域的线程,这通常表示恶意活动。 |
未备份线程起始地址 | 检测起始地址指向未备份内存的线程,这是代码注入的潜在迹象。 |
API 钩子 | 在 NtWriteVirtualMemory 函数上放置一个钩子来监视内存修改。 |
自定义模式搜索 | 允许用户搜索 JSON 文件中提供的特定模式,从而有助于识别已知的恶意软件签名。 |
工具安装
首先,我们需要使用下列命令安装该工具所需的依赖组件:
sudo apt-get install gcc-mingw-w64-x86-64
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/Helixo32/CrimsonEDR
然后切换到项目目录中,并使用下列命令完成代码编辑:
cd CrimsonEDR; chmod +x compile.sh; ./compile.sh
工具使用
确保ioc.json文件位于正在监视的可执行文件的启动目录中。比如说,如果你想要监控的可执行程序位于C:\Users\admin\,则DLL会尝试在C:\Users\admin\ioc.json路径下寻找ioc.json。当前版本的ioc.json包含与msfvenom相关的模式,我们可以根据自己的需求进行修改,格式如下:
{ "IOC": [ ["0x03", "0x4c", "0x24", "0x08", "0x45", "0x39", "0xd1", "0x75"], ["0xf1", "0x4c", "0x03", "0x4c", "0x24", "0x08", "0x45", "0x39"], ["0x58", "0x44", "0x8b", "0x40", "0x24", "0x49", "0x01", "0xd0"], ["0x66", "0x41", "0x8b", "0x0c", "0x48", "0x44", "0x8b", "0x40"], ["0x8b", "0x0c", "0x48", "0x44", "0x8b", "0x40", "0x1c", "0x49"], ["0x01", "0xc1", "0x38", "0xe0", "0x75", "0xf1", "0x4c", "0x03"], ["0x24", "0x49", "0x01", "0xd0", "0x66", "0x41", "0x8b", "0x0c"], ["0xe8", "0xcc", "0x00", "0x00", "0x00", "0x41", "0x51", "0x41"] ] }
然后使用下列参数执行CrimsonEDRPanel.exe:
-d <path_to_dll>:指定CrimsonEDR.dll文件的路径; -p <process_id>:指定需要注入DLL的目标进程PID;
运行命令样例如下:
.\CrimsonEDRPanel.exe -d C:\Temp\CrimsonEDR.dll -p 1234
注意事项
Windows Defender 和其他防病毒程序可能会将该 DLL 标记为恶意程序,因为其包含用于验证 AMSI 是否包含补丁字节的内容。因此在使用CrimsonEDR时,请确保将 DLL 列入白名单或暂时禁用防病毒软件,以避免任何中断。
工具使用演示
项目地址
CrimsonEDR:【GitHub传送门】
参考资料
https://pre.empt.blog/2023/windows-processes-nefarious-anomalies-and-you