静态免杀技术分析:原理、方法与实战应用

静态免杀技术分析:原理、方法与实战应用

关注我,后面将免费更新免杀和漏洞原理文章

作者:Factor

  • 静态免杀技术分析:原理、方法与实战应用
    • 一、静态免杀的检测原理回顾
      • 安全软件静态扫描依赖的关键特征
      • 典型被标记的静态特征有哪些?
    • 二、Shellcode 加密与编码策略详解
      • 常见加密/编码方法一览:
      • 加密组合实战模板:
    • 三、Loader 的静态免杀策略
      • Loader 常见免杀技术细分
        • 1.动态 API 解析
        • 2.系统调用替代 (Syscall)
        • 3.反射加载 / 手动映射执行
        • 4.语言免杀选择
        • 5.字符串/结构混淆
        • 6.隐蔽执行技术
    • 四、PE 文件伪装与签名欺骗技巧
      • 文件结构伪装
      • 签名/壳/哈希欺骗手段:
      • 常见白文件执行方式:
    • 五、推荐实战免杀组合方案
    • 六、辅助工具与生态推荐
    • 七、总结与扩展方向

静态免杀(Static AV Evasion)是攻击者在构造恶意程序或 Payload 时,为了绕过杀毒软件、EDR、WAF、沙箱等防御系统的静态检测机制,所采取的一系列文件级、结构级、内容级和逻辑级的隐藏与伪装手段。
本质目标是:在不运行文件的前提下,让恶意载荷在磁盘上看起来像“正常程序”,以此骗过静态扫描引擎的查杀逻辑。
本文将从静态免杀的检测原理出发,系统梳理当前主流的静态免杀技术路径,包括 Shellcode 加密与分发、加载器伪装、PE 文件结构欺骗、签名绕过、组合混淆技术,并提供典型实战组合与工具链建议,供红队、安全测试与研究人员参考使用。


一、静态免杀的检测原理回顾

安全软件静态扫描依赖的关键特征

检测机制 描述
YARA规则匹配 静态签名规则,通过字节序列、字符串、正则、节偏移等匹配判断
PE结构分析 检查节数量、IAT异常、入口点特征、导入表错位、异常节大小
签名哈希识别 直接比对已知病毒样本的哈希、壳加密模板或通用工具特征
敏感字符串检测 检查是否包含关键函数、命令片段、URL、域名等(如 powershell、cmd.exe)
模型分类识别 基于训练模型判断结构是否异常、是否包含常见攻击组件

典型被标记的静态特征有哪些?

  • 明文字符串(如 powershell, calc.exe, rundll32, CobaltStrike, HTTP, ReflectiveLoader)
  • 标准 Shellcode 指令序列(如 H- 标准 Shellcode 指令序列(如 \x48ƒ- 标准 Shellcode 指令序列(如\x48\x83ì- 标准 Shellcode 指令序列(如 \x48\x83\xEC(- 标准 Shellcode 指令序列(如 \x48\x83\xEC\x28, ÿ- 标准 Shellcode 指令序列(如 \x48\x83\xEC\x28, \xFFà- 标准 Shellcode 指令序列(如 \x48\x83\xEC\x28, \xFF\xE0, jmp, call, push, ret组合)
  • 加密壳头特征(UPX壳、donut头、某些加密stub)
  • 一些高频 syscall 序列、hook 函数位置

二、Shellcode 加密与编码策略详解

Shellcode 是执行的核心部分,尤其是 CobaltStrike Beacon、Meterpreter、msfvenom payload、Custom loader 等,是安全引擎首要识别对象。对其加密/编码是最基础也是最重要的静态免杀手段。

常见加密/编码方法一览:

方法 强度 易用性 是否推荐 特点说明
Base64 ★★★★★ 辅助封装,适合最外层封装,易识别
XOR ★★ ★★★★ 快速简单,可多轮错位提升强度
RC4 ★★★ ★★★ 流加密,推荐混合使用
AES-CBC/GCM ★★★★★ ★★ ✅✅✅ 推荐主力算法,适合整段 payload 包裹
多层嵌套编码 ★★★★★ ★★ ✅✅✅ Base64+XOR+RC4+AES+自定义协议组合

加密组合实战模板:

1.AES-CBC 加密 shellcode
2.再 RC4 加密一次(RC4 key 可为随机 UUID 派生)
3.最后 Base64 编码
4.Loader 中解密逻辑嵌入,或通过网络、资源段动态加载解密参数


三、Loader 的静态免杀策略

即便 Shellcode 被加密,载荷如何被加载、执行也是关键因素。Loader 一旦暴露出可疑调用或特征,同样会被识别查杀。

Loader 常见免杀技术细分

1.动态 API 解析
  • 不使用导入表,运行时手动解析 DLL 基地址 + API 函数地址
  • 结合 API 哈希(如 CRC32、djb2)防止字符串特征被识别
2.系统调用替代 (Syscall)
  • 使用 NtWriteVirtualMemory, NtCreateThreadEx, NtProtectVirtualMemory
  • 推荐使用 SysWhispers2/3, HellsGate, TinySyscalls, DirectSyscalls
3.反射加载 / 手动映射执行
  • 将 shellcode 映射到内存中模拟运行 DLL,避开 LoadLibrary 路径
  • 兼容 donut 生成的 shellcode,提升模块化加载能力
4.语言免杀选择
  • Nim:强烈推荐
    ,天生免签名,代码量小、静态特征少
  • Rust:类型安全,生成代码干净,可混淆性高
  • C++:控制粒度细致,适合结合 syscall
  • C# / PowerShell:配合 AMSI bypass 可用,需规避特征
5.字符串/结构混淆
  • 所有敏感字串使用 XOR、AES、反转、base64 等混淆方式动态还原
  • PE 模块结构混淆节名、入口点偏移、插入无害资源段等
6.隐蔽执行技术
  • Parent Process Spoofing (PPID欺骗)
  • Process Hollowing / RunPE / Early Bird Injection
  • Shellcode Staging:第一阶段仅为解密器+下载器,第二阶段动态解密执行主Payload

四、PE 文件伪装与签名欺骗技巧

静态扫描不仅查Shellcode和字符串,更关注整个PE文件的“行为像不像正常程序”。因此,以下对PE结构的改造可以有效规避检测:

文件结构伪装

  • 修改 .text 节为 .doc, .img, .cfg,避免节名触发规则
  • 增加伪造资源节 .rsrc,插入图标、图片混淆(如嵌入真实 PNG)
  • 清除 PE 中的 Rich Header, TimeStamp, Debug Table, PDB 信息等
  • 模拟正常软件结构(如 VS编译的结构),欺骗静态模型判断

签名/壳/哈希欺骗手段:

  • sigthief、sigsploit:将可信签名复制到恶意程序上(仅表面签名)
  • 加壳方式伪装:UPX 改壳、Stub 壳、自定义壳或结合 Themida、VMProtect 进行保护
  • 修改编译器元数据:改编译器版本为 VS2015,修改 Company、Product、Version 字段

常见白文件执行方式:

工具名称 调用方式 功能描述 特点说明
InstallUtil 调用 .NET 程序安装执行入口 支持无窗口执行 利用合法安装机制隐蔽执行
Msbuild 加载 .csproj 中恶意 C# 脚本 文件型上线方法 通过MSBuild工程文件加载混淆代码
Rundll32 执行任意 DLL 入口函数 常用于 DLL Beacon加载 白名单加载DLL导出函数
Regsvr32 注册 COM 对象时执行代码 可配合远程脚本加载 支持远程SCT脚本下载执行

五、推荐实战免杀组合方案

场景 加密方案 Loader技术组合 其他技术
Cobalt Strike Beacon上线 AES-GCM + RC4 + Base64 Nim Loader + DirectSyscalls + 无导入PE + 段结构伪装 内存反射加载,规避静态特征
Msfvenom/Donut Shellcode RC4 + XOR + Base64 Go/C++ Loader + 手动映射 + 反沙箱检测 混淆API调用链,绕过行为监控
内投EXE/外投绑定执行 多层嵌套加密 + 加壳 + 签名 VS EXE 模拟结构 + 合法资源伪装 + 模拟签名 利用白文件捆绑,伪装数字签名
LNK/HTA/恶意文档投放 加密下载器 + 分段Shellcode PowerShell/VBS 启动Loader + 网络解密Payload 自动释放诱饵文档,规避邮件检测
文件Less投递/无落地上线 AES加密Shellcode + DNS通信 Reflective DLL + Beacon Pipe + 反内存扫描 流量伪装 + 内存加密,避免文件写入

六、辅助工具与生态推荐

工具名 功能说明 适用场景 检测规避等级
donut Shellcode生成器(支持EXE/DLL) 内存免杀/载荷投递 ★★★★☆
scarecrow 高级C2 loader 自动加壳 + 加密 载荷投递/内存执行 ★★★★★
ShellcodeLoader 多种静态免杀模板项目,C++/C# 静态免杀/载荷投递 ★★★★☆
sigsploit 签名伪造工具 绕过签名检查 ★★★★
pezor 自定义壳生成器 + 文件瘦身 静态免杀/载荷瘦身 ★★★★☆
obfuscator-llvm C/C++ 源码级混淆工具 代码保护/反逆向分析 ★★★★
AMSIbypass tools 对抗 AMSI、ETW、ScriptBlockLog 绕过运行时检测 ★★★★★

七、总结与扩展方向

静态免杀作为红队链路中的第一步,是让代码从“形”上看起来是安全的。它要求我们既要隐藏好“刀刃”(Shellcode/关键逻辑),又要给“刀鞘”(Loader/EXE文件)精心包装。
在现代检测技术面前,仅靠静态免杀已无法长时间维持潜伏。

关注我,后面将免费更新免杀和漏洞原理文章

作者:Factor

你可能感兴趣的:(Beacon免杀,隐匿的艺术,web安全,安全性测试,安全威胁分析,安全,网络安全)