五种 EXE 处理方式,突破静态查杀

admin 2025年6月26日17:07:28评论1 views字数 4097阅读13分39秒阅读模式

📌 免责声明:本系列文章仅供网络安全研究人员在合法授权下学习与研究使用,严禁用于任何非法目的。违者后果自负。

本专题第一篇文章 破解迷雾:红队视角下的 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 文件熵值。

五种 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:PathResourceHacker.exe -t target -o outdirQEToolkit.exe sign -s signtool.exe -t target -o outdir

那么如何来降低文件熵值呢?对已编译好的 .exe 文件进行降熵处理,核心目标是让文件看起来更“正常”,以躲避杀软的静态检测。这里介绍两种方法:添加低熵填充、添加合法资源

1、添加低熵填充

添加低熵填充即向高熵节(通常是 .text 或含有加密 shellcode 的节)中插入 0x00/空格/常数序列,让高熵节看起来更“正常”。

使用工具集中的 Qducer 模块可以实现一键自动化降熵

五种 EXE 处理方式,突破静态查杀

把降熵前后的两个 .exe 文件拖到360中检测,原文件被杀,降熵后的文件绕过静态扫描!

五种 EXE 处理方式,突破静态查杀
五种 EXE 处理方式,突破静态查杀

砸熵利器——Qducer:将熵值砸到“1”以下!

有没有必要另说,Qducer 模块能将熵值砸到“1”以下,如图示例已将熵值砸到 0.612!
五种 EXE 处理方式,突破静态查杀
且不影响程序运行
五种 EXE 处理方式,突破静态查杀
但是,请不要妄想单纯以这种方式过杀软
五种 EXE 处理方式,突破静态查杀
2、添加合法资源

使用 Restorator2018 类似工具添加合法资源也能达到降熵的效果。

比如,在上面 16.exe 降熵后继续添加光标资源

五种 EXE 处理方式,突破静态查杀

添加完,再次检查,发现文件熵值又下降了一些(3.78→3.27)

五种 EXE 处理方式,突破静态查杀
二、添加详细信息

添加“详细信息”(如公司名、版本号、描述等)能提升免杀效果,是因为这些元数据能让你的程序看起来更像“正规软件”,从而绕过杀毒软件在静态分析阶段的启发式规则与白名单过滤,避免因信息缺失或异常而被标记为可疑,进而提高整体免杀成功率。

五种 EXE 处理方式,突破静态查杀

首先,拿一个未做处理的样本塞到360嘴里,直接秒吞

五种 EXE 处理方式,突破静态查杀
实现方案和步骤

QEToolkit 工具集中的 Qadder 模块可以实现一键自动化调用 ResourceHacker 工具写入自定义详细信息。

https://www.angusj.com/resourcehacker/

对刚才被杀的 .exe 添加自定义详细信息

五种 EXE 处理方式,突破静态查杀

效果示例: 

五种 EXE 处理方式,突破静态查杀

再次塞到360嘴里,成功绕过!

五种 EXE 处理方式,突破静态查杀
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  }}

2、编译 .rc 为 .res(一次性) 

ResourceHacker.exe -open version_info.rc -save version_info.res -action compile

3、将所有需要的文件放到同一目录 

五种 EXE 处理方式,突破静态查杀

4、写入签名信息到目标程序

ResourceHacker.exe -open md回调.exe -save md回调_signed.exe -action addoverwrite -res version_info.res -mask VERSIONINFO,
五种 EXE 处理方式,突破静态查杀
三、自定义签名

添加数字签名可以增强免杀效果,核心在于它提升了可执行文件的“可信度”,使安全产品更倾向于放行已签名的程序。签名后的文件不仅可绕过部分基于“未知/无签名程序”的初级拦截策略,还能在静态检测中掩盖文件结构异常、避免被直接标记为潜在威胁。即使使用的是自签名证书,也可在本地测试中模拟真实可信文件行为,有助于降低被 AV/EDR 即时阻断的风险。 

实现方案和步骤

QEToolkit 工具集中的 Qsigner 模块通过调用微软官方提供的数字签名工具 signtool.exe 实现一键自定义签名。

继续对上文处理过的文件进行自定义签名操作

五种 EXE 处理方式,突破静态查杀

效果示例: 

五种 EXE 处理方式,突破静态查杀

免杀效果测试

1、准备一批 .exe 样本,全部进行自定义签名处理

五种 EXE 处理方式,突破静态查杀

2、将原文件和处理过的签名文件全部塞给360检测:原文件全军覆没,自定义签名的文件9个成功免杀

五种 EXE 处理方式,突破静态查杀

且均可正常运行: 

五种 EXE 处理方式,突破静态查杀

Qsigner 模块实现原理(常规操作流程)

这里介绍使用Powershell全自动生成证书并实现签名的方法: 

1、前提工具

名称
用途
来源或路径示例
signtool.exe
负责签名与验证 .exe 文件
Windows SDK 安装路径,如:C:Program Files (x86)Windows Kits10bin10.0.26100.0x64signtool.exe

2、生成测试证书脚本(gen_cert.ps1)

3、一键执行证书生成 + 签名操作(run_all.bat)

4、签名 EXE 的脚本(sign_test.bat)

五种 EXE 处理方式,突破静态查杀
四、添加花指令

添加花指令(Junk Code)可以增强免杀效果的本质在于:通过插入对程序逻辑无影响的无用指令,打乱原本清晰的指令结构和静态特征,干扰杀毒软件的特征匹配和行为分析,从而降低被识别为可疑程序的概率。这种混淆手段尤其对抗基于签名和静态扫描的检测机制效果显著。 

使用工具集中的 Qjector 模块可以实现自动化添加花指令

五种 EXE 处理方式,突破静态查杀

批量测试9个文件,全部拖到360下测试,还剩4个,可见添加花指令也具有一定的功效!

五种 EXE 处理方式,突破静态查杀
五、加壳脱壳

1、加壳 

加壳可以增强免杀效果的根本原因在于:它通过压缩、加密或重构原始可执行文件的内容,隐藏了关键的可疑特征(如 API 调用、字符串、节结构等),从而有效干扰杀毒软件的静态特征识别与行为分析。尤其是使用非公开、定制壳时,更容易绕过依赖特征库或启发式分析的检测机制,提升免杀能力。 

这里就拿UPX演示,项目地址: https://github.com/upx/upx

upx shell.exe #加壳upx -d shell.exe #脱壳

对原先被杀的md回调.exe进行默认加壳 

五种 EXE 处理方式,突破静态查杀

检测,加完壳不杀了。这种有一定的运气成分,最好批量测试 

五种 EXE 处理方式,突破静态查杀
2、脱壳

有时加完壳立马再脱壳,也能增强免杀效果。是因为这一过程中会改变原始 EXE  的节区结构、对齐方式、入口点偏移、时间戳等元数据,破坏了杀软依赖的静态特征匹配和哈希指纹,即使最终内容还原,文件在二进制层面已发生变化,从而绕过了基于特征库和静态分析的检测机制,达到意外的免杀效果。 

五种 EXE 处理方式,突破静态查杀
总结

在攻防演练中,EXE 文件处理是一项强有力的绕检手段,尤其对国内部分杀软具有奇效。通过不同的处理手段,如降熵、添加详细信息、自定义签名、花指令、加壳等,可以有效地绕过多种杀软和安全防护措施,提升载荷的隐蔽性和生存时间。

#EXE处理 #静态分析 #降熵 #加壳 #自定义签名 #花指令 #攻防演练

原文始发于微信公众号(仇辉攻防):五种 EXE 处理方式,突破静态查杀

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月26日17:07:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   五种 EXE 处理方式,突破静态查杀https://cn-sec.com/archives/4202495.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息