摘要:免责声明:本系列文章仅供网络安全研究人员在合法授权下学习与研究使用,严禁用于任何非法目的。违者后果自负。
免责声明 :本系列文章仅供网络安全研究人员在合法授权下学习与研究使用,严禁用于任何非法目的。违者后果自负。
本专题第一篇文章 破解迷雾:红队视角下的 C2 对抗与绕检艺术 里提到 C2 绕检涉及的三个核心层面,这最后一个层面就是 EXE 层面,通过对成品 EXE 文件处理来实现绕检,本文介绍以下五种处理 EXE 的方式。
降熵 降低文件的熵值,使其更像常规文件,从而绕过静态分析 1. 添加低熵填充(插入 0x00、空格等); 2. 添加合法资源(如光标资源) 降低文件熵值,避免静态检测 添加详细信息 提高程序可信度,绕过启发式规则和白名单过滤 使用 ResourceHacker 或 Qadder 工具添加自定义详细信息(如公司名、版本号) 增加文件的“正规”外观,绕过部分静态检测 自定义签名 增强文件可信度,绕过基于签名的静态拦截机制 使用 signtool.exe 生成并应用自签名证书 签名后文件通过静态检测,避免被标记为潜在威胁 添加花指令 混淆指令流,破坏静态特征匹配与行为分析 插入无用指令(花指令),扰乱杀软特征匹配和分析 增强免杀能力,绕过基于签名和静态扫描的检测机制 加壳脱壳 隐藏攻击特征,绕过静态特征识别与分析 1. 加壳(压缩、加密或重构文件); 2. 脱壳(修改文件结构、对齐方式、时间戳等元数据) 隐蔽文件内容,增加免杀成功率一、降熵
熵(Entropy)是一个来源于热力学和信息论的重要概念,用来度量系统的混乱程度、不确定性或信息量。不同领域对熵的定义略有不同,但核心思想是一致的:熵越大,系统越混乱或不确定。
文件熵值是衡量一个文件中数据“混乱程度”或“信息熵”的指标,常用于判断数据是否加密、压缩或混淆。在免杀中,文件熵值是杀软静态检测时的关键参考指标之一:
熵值范围 判断倾向 含义 0–4 正常 常见于未压缩/未加密的PE段如 .text 、 .rdata 5–6.5 可疑 可能经过混淆或部分加密 6.5–8 高度可疑 极可能为加密shellcode、压缩数据、packer等杀毒软件一看到某个节(Section)熵值在 6.8+,马上标红扫描。
熵值分析
使用“仇辉攻防”自主研发的 EXE 工具集 QEToolkit 中的 Hlyzer 模块,可以一键查看 .exe 文件熵值。
QEToolkit 所有模块不仅支持以上交互模式,还支持命令行模式
QEToolkit.exe entropy -t target QEToolkit.exe reduce -t target -o outdir QEToolkit.exe junk -t target -o outdir -j 2048 QEToolkit.exe detail -r C:\Path\ResourceHacker.exe -t target -o outdirQEToolkit.exe sign -s signtool.exe -t target -o outdir那么如何来降低文件熵值呢?对已编译好的 .exe 文件进行降熵处理,核心目标是让文件看起来更“正常”,以躲避杀软的静态检测。这里介绍两种方法:添加低熵填充、添加合法资源
1、添加低熵填充添加低熵填充即向高熵节(通常是 .text 或含有加密 shellcode 的节)中插入 0x00/空格/常数序列,让高熵节看起来更“正常”。
使用工具集中的 Qducer 模块可以实现一键自动化降熵
把降熵前后的两个 .exe 文件拖到360中检测,原文件被杀,降熵后的文件绕过静态扫描!
砸熵利器——Qducer:将熵值砸到“1”以下!
有没有必要另说,Qducer 模块能将熵值砸到“1”以下,如图示例已将熵值砸到 0.612!使用 Restorator2018 类似工具添加合法资源也能达到降熵的效果。
比如,在上面 16.exe 降熵后继续添加光标资源
添加完,再次检查,发现文件熵值又下降了一些(3.78→3.27)
添加“详细信息”(如公司名、版本号、描述等)能提升免杀效果,是因为这些元数据能让你的程序看起来更像“正规软件”,从而绕过杀毒软件在静态分析阶段的启发式规则与白名单过滤,避免因信息缺失或异常而被标记为可疑,进而提高整体免杀成功率。
首先,拿一个未做处理的样本塞到360嘴里,直接秒吞
QEToolkit 工具集中的 Qadder 模块可以实现一键自动化调用 ResourceHacker 工具写入自定义详细信息。
对刚才被杀的 .exe 添加自定义详细信息
效果示例:
再次塞到360嘴里,成功绕过!
Qadder 模块实现原理(常规操作流程)1、创建签名资源模板 .rc
1 VERSIONINFOFILEVERSION 1,0,0,0PRODUCTVERSION 1,0,0,0FILEOS 0x4FILETYPE 0x1{ BLOCK "StringFileInfo" { BLOCK "040904B0" { VALUE "CompanyName", "Security Intelligence" VALUE "FileDescription", "Entropy Analyzer Tool" VALUE "FileVersion", "1.0.0.0" VALUE "InternalName", "entropytool.exe" VALUE "OriginalFilename", "entropytool.exe" VALUE "ProductName", "Entropy Toolkit" VALUE "ProductVersion", "1.0.0.0" VALUE "LegalCopyright", "Copyright © 2025 Security" } } BLOCK "VarFileInfo" { VALUE "Translation", 0x0409 0x04B0 }} .rc 为 .res (一次性) ResourceHacker.exe -open version_info.rc -save version_info.res -action compile3、将所有需要的文件放到同一目录
4、写入签名信息到目标程序
ResourceHacker.exe -open md回调.exe -save md回调_signed.exe -action addoverwrite -res version_info.res -mask VERSIONINFO,三、自定义签名添加数字签名可以增强免杀效果,核心在于它提升了可执行文件的“可信度”,使安全产品更倾向于放行已签名的程序。签名后的文件不仅可绕过部分基于“未知/无签名程序”的初级拦截策略,还能在静态检测中掩盖文件结构异常、避免被直接标记为潜在威胁。即使使用的是自签名证书,也可在本地测试中模拟真实可信文件行为,有助于降低被 AV/EDR 即时阻断的风险。
实现方案和步骤
QEToolkit 工具集中的 Qsigner 模块通过调用微软官方提供的数字签名工具 signtool.exe 实现一键自定义签名。
继续对上文处理过的文件进行自定义签名操作
效果示例:
免杀效果测试
1、准备一批 .exe 样本,全部进行自定义签名处理
2、将原文件和处理过的签名文件全部塞给360检测:原文件全军覆没,自定义签名的文件9个成功免杀
且均可正常运行:
Qsigner 模块实现原理(常规操作流程)
这里介绍使用Powershell全自动生成证书并实现签名的方法:
1、前提工具
名称 用途 来源或路径示例 signtool.exe 负责签名与验证 .exe 文件 Windows SDK 安装路径,如: C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\signtool.exe2、生成测试证书脚本(gen_cert.ps1)
3、一键执行证书生成 + 签名操作(run_all.bat)
4、签名 EXE 的脚本(sign_test.bat)
四、添加花指令添加花指令(Junk Code)可以增强免杀效果的本质在于:通过插入对程序逻辑无影响的无用指令,打乱原本清晰的指令结构和静态特征,干扰杀毒软件的特征匹配和行为分析,从而降低被识别为可疑程序的概率。这种混淆手段尤其对抗基于签名和静态扫描的检测机制效果显著。
使用工具集中的 Qjector 模块可以实现自动化添加花指令
批量测试9个文件,全部拖到360下测试,还剩4个,可见添加花指令也具有一定的功效!
五、加壳脱壳1、加壳
加壳可以增强免杀效果的根本原因在于:它通过压缩、加密或重构原始可执行文件的内容,隐藏了关键的可疑特征(如 API 调用、字符串、节结构等),从而有效干扰杀毒软件的静态特征识别与行为分析。尤其是使用非公开、定制壳时,更容易绕过依赖特征库或启发式分析的检测机制,提升免杀能力。
这里就拿UPX演示,项目地址: https://github.com/upx/upx
upx shell.exe #加壳upx -d shell.exe #脱壳对原先被杀的md回调.exe进行默认加壳
检测,加完壳不杀了。这种有一定的运气成分,最好批量测试
有时加完壳立马再脱壳,也能增强免杀效果。是因为这一过程中会改变原始 EXE 的节区结构、对齐方式、入口点偏移、时间戳等元数据,破坏了杀软依赖的静态特征匹配和哈希指纹,即使最终内容还原,文件在二进制层面已发生变化,从而绕过了基于特征库和静态分析的检测机制,达到意外的免杀效果。
总结在攻防演练中,EXE 文件处理是一项强有力的绕检手段, 尤其对国内部分杀软具有奇效。 通过不同的处理手段,如降熵、添加详细信息、自定义签名、花指令、加壳等,可以有效地绕过多种杀软和安全防护措施,提升载荷的隐蔽性和生存时间。
来源:端庄优雅橘子atlbjcO