Chimera是一款带有EDR规避功能的自动化DLL侧加载工具,在该工具的帮助下,广大研究人员可以在渗透测试过程中,绕过EDR的检测并实现自动化DLL侧加载。
虽然DLL侧加载可以用于合法目的,例如加载程序运行所需的库,但也可以用于恶意目的。而攻击者通常可以通过利用用于加载DLL的合法应用程序中的漏洞,从而使用DLL侧加载技术在目标系统上执行任意代码。
为了自动化实现DLL侧加载过程并提升其效率,我们专门设计并开发了Chimera,并且还引入了EDR/AV产品绕过功能。该工具能够通过XOR并使用随机密钥来对Shellcode执行自动化加密,并创建可以导入到Visual Studio的模板镜像以创建一个恶意ELL。
除此之外,该工具还使用了SysWhispers2的动态系统调用和一个修改版本的汇编代码库来规避EDR的搜索模式,
该工具经过测试,证明在绕过EDR/AV产品和在目标系统上执行任意代码方面是有效的。
由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好Python 3环境。接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/georgesotiriadis/Chimera.git
Chimera的运行不需要安装其他额外的依赖组件。
当前版本的Chimera支持两种DLL选项,即Microsoft teams或Microsoft OneDrive。
我们可以创建userenv.dll(Microsoft Teams缺少的DLL),并将其插入到指定的目录路径中:
%USERPROFILE%/Appdata/local/Microsoft/Teams/current
针对Microsoft OneDrive,工具脚本会使用常见的版本DLL,因为onedriveupdater.exe代码中一般都没有这个DLL。
python3 ./chimera.py met.bin chimera_automation notepad.exe teams
python3 ./chimera.py met.bin chimera_automation notepad.exe onedrive
[raw payload file] : 包含Shellcode的文件路径 [output path] : 输出C模版文件的路径 [process name] : 要注入Shellcode的进程名称 [dll_exports] : 指定要使用的DLL导出,即teams或onedrive [replace shellcode variable name] : [可选] 使用一个唯一的名称替换Shellcode的变量名 [replace xor encryption name] : [可选] 使用一个唯一的名称替换XOR加密名称 [replace key variable name] : [可选] 使用一个唯一的名称替换密钥变量名 [replace sleep time via waitable timers] : [可选] 设置一个新的休眠时间
首先,我们需要使用DLL模版创建一个新的Visual Studio项目:
将镜像导入到Visual Studio项目中,并选择“Build Customizations”进行自定义构建。
启动MASM:
然后进入属性配置页面:
最终的项目结构如下图所示:
修改优化配置:
然后移除调试信息:
本项目的开发与发布遵循MIT开源许可证协议。
Chimera:【GitHub传送门】
https://evasions.checkpoint.com/
https://github.com/Flangvik/SharpDllProxy