
虽然DLL sideloading可用于合法目的,例如加载程序运行所需的库,但它也可能被用于恶意用途。攻击者可以利用DLL sideloading在目标系统上执行任意代码,通常利用加载DLL的合法应用程序中的漏洞。
为了自动化DLL sideloading过程并使其更有效,我们创建了Chimera,该工具包含了规避EDR/AV产品的逃避方法。该工具可以使用随机密钥通过XOR自动加密shellcode,并创建可导入Visual Studio以生成恶意DLL的模板镜像。
此外,还使用了来自SysWhispers3的动态系统调用(Dynamic Syscalls)以及修改后的汇编版本,以逃避EDR搜索的模式,添加了随机NOP滑板并移动了寄存器。同时,还使用Early Bird Injection将shellcode注入用户指定的其他进程,并带有沙箱逃避机制(如硬盘检查及进程是否被调试)。最后,加载器中设置了定时攻击,利用可等待定时器延迟shellcode的执行。
该工具已测试并证明能有效绕过EDR/AV产品,在目标系统上执行任意代码。
Chimera Unleashed的更新版本在规避静态和动态分析方面显示出显著进步,特别是在Microsoft 365的端点检测与响应(EDR)系统环境下。该工具的sideloading技术——即使应用于OneDrive等知名二进制文件——也成功逃脱了检测。然而值得注意的是,虽然sideloading部分未被检测到,但工具使用的Early Bird Injection过程被EDR系统识别。这凸显了在增强工具整体隐蔽性方面需要进一步改进的领域。
主要更新与特性:
Chimera使用Python 3编写,无需安装任何额外依赖。
Chimera目前支持两种DLL选项:Microsoft Teams或Microsoft OneDrive。
用户可以创建userenv.dll(这是Microsoft Teams缺失的DLL)并将其放入特定文件夹:
%USERPROFILE%/Appdata/local/Microsoft/Teams/current
对于Microsoft OneDrive,脚本使用版本DLL(version.dll),因为这在二进制文件中(例如onedriveupdater.exe)缺失较为常见。
Chimera Unleashed使用argparser解析命令行参数。可用参数如下:
--raw 或 -r:包含shellcode的文件路径。必填。--path 或 -p:输出C模板文件的路径。必填。--pname 或 -n:要注入shellcode的进程名称。必填。--dexports 或 -d:指定要使用的DLL导出('teams'或'onedrive')。必填。--enc 或 -e:指定首选加密方式(XOR / AES)。必填。--inj 或 -i:指定首选注入技术(EB / MS)。必填。--rshell 或 -s:[可选] 为shellcode变量名替换为唯一名称。默认值为'encoded_shell'。--rxor 或 :[可选] 为XOR加密名称替换为唯一名称。默认值为'do_xor'。示例用法:
python Chimera.py --raw <shellcode路径> --path <输出路径> --pname <进程名> --dexports <导出文件> --enc AES --inj EB --rshell my_shellcode
编译完成后,将生成一个DLL,该DLL应包含“version.dll”(用于OneDrive)或“userenv.dll”(用于Microsoft Teams)。接下来,需要重命名原始DLL。
例如,原始的“userenv.dll”应重命名为“tmpB0F7.dll”,而原始的“version.dll”应重命名为“tmp44BC.dll”。此外,您可以根据需要修改代理DLL的名称——通过修改DLL导出源代码,而不是使用默认脚本名称。
code.h文件包含shellcode。
步骤1:使用DLL模板创建新的Visual Studio项目


步骤2:将文件导入Visual Studio项目
步骤3:生成自定义(Build Customization)
步骤4:启用MASM

步骤5:


步骤1:更改优化设置

步骤2:移除调试信息

原始贡献者:
贡献者:
在适用法律允许的最大范围内,本人(George Sotiriadis)和/或已向我的仓库提交内容的关联方,不对任何间接、附带、特殊、后果性或惩罚性损害赔偿,或任何利润或收入损失(无论是直接还是间接产生的),或任何数据、使用、商誉或其他无形损失承担责任,这些损失由以下原因导致:(i)您访问此资源和/或无法访问此资源;(ii)此资源引用的任何第三方的任何行为或内容,包括但不限于其他用户或第三方的诽谤、冒犯或非法行为;(iii)从此资源获得的任何内容
https://evasions.checkpoint.com/
https://github.com/Flangvik/SharpDllProxy
-x--rkey 或 -k:[可选] 为密钥变量名替换为唯一名称。默认值为'key'。--rsleep 或 -z:[可选] 执行期间包含的总睡眠时间(秒)。默认值为4000。--size 或 -f:[可选] 垃圾数据的文件大小(KB)。零(0)表示禁用,一(1)表示随机文件大小。默认值为0。