-
函数哈希的随机化:将一些静态数据如函数哈希和密钥/iv 做了随机化处理,确保每一次生成的 loader 的静态数据都是不唯一的。
-
shellcode 加密编码:aes 加密 uuid/ipv4 编码。
-
ollvm 混淆:使用 clang 编译器,支持 ollvm 混淆功能。
-
动态混淆策略:使用到了开源 syscall 工具 hell’s gate,结合本项目,其详细功能如下:
-
动态解析 ssn 号:遍历 ntdll 导出表。(动态解析 ssn 号,能防止源码嵌入 ssn 号而提取静态特征。)
-
直接 syscall:动态获取 nt 函数地址并进行 0x12 偏移来提取多个 syscall 地址。
-
-
项目拓展:支持根据导出表生成 dll 文件。
本项目设计目标之一是验证相同的静态混淆策略对主流终端安全软件的触发行为差异,以评估各加载方式的有效性与隐蔽性。
- windows 10 22H2(x64)
- 测试平台:VMware 17
- 是否接入互联网:是
- 测试样本(被控端代理程序):
- cobaltstrike 4.8 beacon
- havoc demon
- 安全软件版本
- Microsoft Defender(客户端版本: 4.18.1909.6)
- 360 安全卫士(版本:13.0.0.2009)
- 火绒安全(个人版:6.0.6.6,病毒库:2025.6.28)
- 卡巴斯基(企业版:kes 11.6.0.394)
| 阶段 | 说明 |
|---|---|
| 静态查杀 | 下载 loader 可执行文件并执行后是否触发报毒。 |
| 解密解码 | 解密解码 shellcode 后是否触发报毒 |
| 执行阶段 | 开始执行是否触发报毒 |
| 执行后 | 执行后进行常规操作是否触发报毒(这里采用读取文件信息进行测试) |
| 敏感操作 | 执行后进行敏感操作是否触发报毒(这里采 用读取系统进程信息进行测试) |
cobaltstrike 4.8 beacon 测试结果
| 安全软件 | 文件类型 | 静态查杀 | 解密解码 | 执行阶段 | 执行后 | 敏感操作 |
|---|---|---|---|---|---|---|
| Microsoft Defender | exe 可执行文件 | ❌触发扫描,但未报毒 | ❌内存明文存放 shellcode,未报毒 | ✔️立刻报毒 | 无 | 无 |
| Microsoft Defender | dll 劫持 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 360 安全卫士 | exe 可执行文件 | ❌主动扫描,未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 360 安全卫士 | dll 劫持 | ✔️立刻报毒,标记为检测到 dll 劫持 | 无 | 无 | 无 | 无 |
| 火绒安全个人版 | exe 可执行文件 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 火绒安全个人版 | dll 劫持 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 卡巴斯基企业版 | exe 可执行文件 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 卡巴斯基企业版 | dll 劫持 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
havoc demon 测试结果
| 安全软件 | 文件类型 | 静态查杀 | 解密解码 | 执行阶段 | 执行后 | 敏感操作 |
|---|---|---|---|---|---|---|
| Microsoft Defender | exe 可执行文件 | ❌触发扫描,但未报毒 | ❌内存明文存放 shellcode,未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| Microsoft Defender | dll 劫持 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 360 安全卫士 | exe 可执行文件 | ❌主动扫描,未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 360 安全卫士 | dll 劫持 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 火绒安全个人版 | exe 可执行文件 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 火绒安全个人版 | dll 劫持 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 卡巴斯基企业版 | exe 可执行文件 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 卡巴斯基企业版 | dll 劫持 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 | ❌未报毒 |
| 对比维度 | cobaltstrike 4.8 beacon | havoc demon |
|---|---|---|
| 静态检测风险 | 高(即使高强度加密编码,仍能被 360 启发式识别) | 极低(无法识别) |
| 内存行为检测风险 | 高(Defender 捕获 exe 内存特征可以识别) | 极低(无法识别) |
| 感知强度 | 高(安全厂商针对性研究) | 极低(全平台规避监测) |
| 安全厂商 | 查杀方式类别 | 对 beacon 的响应 | 对 demon 的响应 | 查杀策略水平评估 | 初步技术判断/推测机制 |
|---|---|---|---|---|---|
| Microsoft Defender | 内存行为感知 + 部分特征扫描 | ✔️ 执行阶段立刻报毒 | ❌ 全程绕过 | ⭐⭐⭐⭐(4/5) | 监控内存 + 内存扫描 |
| 360 安全卫士 | 启发式判定 | ✔️ dll 劫持加载瞬间拦截,exe 无响应 | ❌ 全程绕过 | ⭐⭐⭐(3/5) | 启发式判定系统评估 |
| 火绒安全软件 | 以防护为主 | ❌ 全程绕过 | ❌ 全程绕过 | ⭐⭐(2/5) | 未知 |
| 卡巴斯基企业版 | 未知 | ❌ 全程绕过 | ❌ 全程绕过 | ⭐⭐(2/5) | 未知 |
- Python:3.11.0
- ninja:1.12.0.git
- ollvm-clang:https://github.com/lux-QAQ/ollvm-clang21.0
- vs 2022 C++ 桌面开发环境
- python 库:pycryptodome=3.20.0
- python 库:pyfiglet=1.0.2
注:以上是本人使用的运行环境,仅仅作为参考。
- --i:用于输入 shellcode.bin 文件。
- shellcode 的 文件路径。
- --exec:用于设置执行方式。
- thread:创建线程执行 shellcode。
- fiber:创建纤程执行 shellcode。
- callback:Winapi 回调函数执行 shellcode。
- --encode:
- ipv4:用于将加密的 shellcode 编码成 ipv4 地址。
- uuid:用于将加密的 shellcode 编码成 uuid 地址。
- --file:
- exe:用于指定生成 exe 文件。
- dll:用于指定生成 dll 文件。
- --export(仅在生成 dll 文件情况下生效):
- 文件路径:用于指定 dll 文件的导出函数。
其中 --export 导出函数文件存储如下示例内容:
使用如上默认配置进行构建,python 将执行如下操作进行构建:
配置注入:
- 获取 loader 的项目路径(c 语言) 。
- 获取 shellcode.bin 文件路径,读取、加密、编码并 patch 到源文件。
- 初始化 aes 密钥和 iv,并 patch 到源文件。
- 初始化 Winapi 函数哈希,并 patch 到源文件。
编译 loader:
- 构建并编译 loader。
构建完成后,在 build 目录下会生成 loader。
本项目设计初衷为在合法授权的环境中,用作以下内容的研究与评估:
- 安全软件测试评估:测试安全软件在严苛的静态对抗环境下的检测能力。
- 安全软件行为研究:测试安全软件用于检测威胁的技术方式。
- 教学与演示:适合作为教学样例,展示设计架构和静态混淆技术。
- 提供数据:向研究人员提供数据参考。
本项目不包含任何恶意 payload 或远控功能,仅提供 loader 框架和加密封装机制,所有测试 payload 必须由用户在合法授权环境下自行提供,且尽在授权环境中使用。
- 本人不对任何非法使用本项目代码所产生的后果负责。
- 严禁在未授权的目标环境中部署与测试。
- 若您是安全厂商/研究人员,欢迎就技术实现展开探讨。
本项目仅供安全研究、教育教学和防御评估。不得将其用于任何非法用途,包括但不仅限于未授权渗透、后门植入等。所有示例均在授权环境下进行测试。



