杀软动态查杀的几种绕过方法,思路分享

admin 2026-07-22 07:39:08 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文结合C2远控项目探讨了十种绕过杀软动态查杀的技术思路,涵盖API哈希解析隐藏敏感函数、编译时字符串加密消除静态特征、直接系统调用绕过NTDLLHook、垃圾代码混淆干扰行为分析、延迟执行规避沙箱、两阶段内存保护避免RWX检测,以及进程注入、Fiber执行、DLL空洞注入与PE反射加载等进程与内存级规避手段。文章强调这些技术常组合构建多层防御绕过体系,安全研究人员可据此优化免杀策略,同时提示杀软厂商需持续升级检测引擎以应对新型威胁。 综合评分: 76 文章分类: 免杀,红队,实战经验,渗透测试,安全建设


cover_image

杀软动态查杀的几种绕过方法,思路分享

原创

仙草里没有草噜丶 仙草里没有草噜丶

泷羽Sec

2026年6月5日 17:20 湖南

在小说阅读器读本章

去阅读

前言

现代杀毒软件已经从早期的静态特征码检测,进化到基于行为分析的动态查杀引擎。动态查杀通过监控程序运行时的API调用序列、内存操作模式、进程行为等特征来识别恶意行为。本文将结合实际C2远控项目代码,深入分析几种常见的动态查杀绕过技术。

全文只提供思路,不易提供代码,请见谅。另外本文仅用于安全研究和教学目的。读者应遵守当地法律法规,在合法授权的环境中使用相关技术。作者不对任何滥用行为承担责任。

一、API哈希解析 – 隐藏敏感函数/命令执行

1.1 原理分析

杀软动态检测的核心之一是监控敏感API的调用。当程序直接调用VirtualAllocCreateRemoteThread等函数时,杀软的Inline Hook会拦截这些调用并进行行为分析。

API哈希解析技术通过以下方式绕过检测:

  • 使用哈希算法(如DJB2)对函数名进行哈希
  • 通过PEB(Process Environment Block)遍历已加载模块
  • 在导出表中通过哈希值查找函数地址

比如需要执行添加、枚举用户功能

image-20260530201542468

image-20260530201229394

1.2 优势分析

  • 绕过IAT检测:导入表中不会出现敏感函数名
  • 绕过Inline Hook:直接获取原始函数地址
  • 静态分析困难:哈希值在反编译中无法直接识别函数名

二、编译时字符串加密 – 消除静态特征

2.1 原理分析

杀软的静态扫描会检测二进制文件中的敏感字符串,如ntdll.dllcmd.exe、注册表路径等。编译时字符串加密技术在编译阶段对字符串进行加密,运行时动态解密。

image-20260530202017183

2.2 优势分析

静态不可见:二进制文件中不存在明文字符串

零开销:加密在编译时完成,不影响运行时性能

抗逆向:反编译工具无法直接还原字符串

三、直接系统调用(Direct Syscall)- 绕过NTDLL Hook

3.1 原理分析

现代杀软普遍对ntdll.dll进行Inline Hook,拦截所有系统调用。直接系统调用技术通过以下步骤绕过:

1、从ntdll.dll中读取系统服务号(SSN)

2、在用户态构建syscall stub

3、直接执行syscall指令,绕过ntdll的hook

3.2 优势分析

完全绕过ntdll:不经过被hook的ntdll代码

动态适应:SSN在运行时从ntdll读取,适应不同Windows版本

隐蔽性强:syscall stub在动态分配的内存中,难以检测

四、垃圾代码混淆 – 干扰行为分析

4.1 原理分析

杀软的行为分析引擎会监控API调用序列和执行流程。通过插入大量无意义的”垃圾代码”,比如垃圾数学计算,垃圾浮点运算,垃圾数组操作,性能计数器读取,在关键操作前后插入垃圾代码等等,另外还可以:

增加代码复杂度,干扰静态分析

产生大量噪音,干扰行为特征匹配

模拟正常程序的执行模式

4.2 优势分析

  • 增加分析成本:逆向工程师需要花费大量时间识别真正的恶意代码
  • 干扰特征匹配:大量噪音使得行为特征难以准确匹配
  • 模拟正常行为:数学计算、数组操作是正常程序的常见行为

五、延迟执行 – 绕过沙箱检测

5.1 原理分析

杀软的动态分析通常使用沙箱环境,沙箱有时间限制(通常60-120秒)。通过在执行恶意代码前加入延迟,可以:

  • 超出沙箱的分析时间窗口
  • 等待沙箱环境超时后自动终止
  • 模拟正常程序的启动延迟

image-20260530203437750

5.2 优势分析

绕过沙箱:大多数沙箱分析时间不超过60秒

隐蔽性高:正常程序也有启动延迟

可配置:延迟时间可以根据需要调整

六、两阶段内存保护 – 避免RWX检测

6.1 原理分析

杀软会监控内存保护属性的变化。直接分配PAGE_EXECUTE_READWRITE(RWX)内存是高度可疑的行为。两阶段内存保护技术:

1、第一阶段:分配PAGE_READWRITE(RW)内存,写入数据,例如shellcode

2、第二阶段:修改为PAGE_EXECUTE_READ(RX)内存,执行代码

6.2 优势分析

避免RWX检测:内存中从未出现RWX状态

符合正常模式:许多合法程序也使用两阶段内存管理

降低可疑度:分开的内存操作更难被关联分析

七、进程注入 – 利用合法进程执行

7.1 原理分析

进程注入技术将恶意代码注入到合法进程中执行,利用合法进程的:

  • 合法身份和权限
  • 已建立的信任关系
  • 正常的网络行为模式

image-20260530202823924

7.2 优势分析

  • 身份隐藏:恶意代码在合法进程中执行
  • 绕过父进程检测:杀软检查进程父子关系时会认为是正常行为
  • 网络隐蔽:网络流量来自合法进程

八、Fiber执行 – 替代线程创建

8.1 原理分析

杀软会监控CreateThread等线程创建API。Windows Fiber是一种用户态的轻量级线程机制,可以在不创建新线程的情况下执行代码。

8.3 优势分析

  • 避免线程创建:不触发线程创建的监控规则
  • 执行上下文:在当前线程上下文中执行,更难检测
  • 资源效率:Fiber比线程更轻量

九、DLL空洞注入 – 利用已加载模块

9.1 原理分析

DLL空洞注入(DLL Hollowing)利用已加载DLL的代码段空间。由于DLL的.text段通常是可执行的,可以:

1、找到一个已加载的DLL

2、修改其.text段的内存保护

3、将shellcode写入该段

4、恢复内存保护并执行

9.2 优势分析

  • 不分配新内存:利用已有的合法内存空间
  • 隐藏性强:shellcode位于合法DLL的地址空间内
  • 绕过内存扫描:杀软通常不会扫描已加载DLL的代码段

十、PE反射加载 – 内存中加载PE文件

10.1 原理分析

PE反射加载技术在内存中手动加载PE文件,而不使用Windows的PE加载器。这避免了:

  • 文件系统操作(无文件落地)
  • 标准的DLL加载流程
  • 注册表和模块列表的更新

10.2 优势分析

  • 无文件落地:完全在内存中加载,不写入磁盘
  • 绕过模块监控:不通过标准加载流程,不触发模块加载事件
  • 灵活性高:可以加载任意PE文件,包括加密的payload

总结

本文分析了10种常见的杀软动态查杀绕过技术,这些技术在实际的C2远控项目中被广泛使用。每种技术都有其特定的绕过目标和适用场景:

| 技术 | 绕过目标 | 难度 | 效果 | | — | — | — | — | | API哈希解析 | IAT检测、Inline Hook | 中 | 高 | | 编译时字符串加密 | 静态特征扫描 | 低 | 高 | | 直接系统调用 | NTDLL Hook | 高 | 极高 | | 垃圾代码混淆 | 行为分析 | 低 | 中 | | 延迟执行 | 沙箱检测 | 低 | 高 | | 两阶段内存保护 | RWX内存检测 | 低 | 高 | | 进程注入 | 进程行为监控 | 中 | 高 | | Fiber执行 | 线程创建监控 | 中 | 中 | | DLL空洞注入 | 内存扫描 | 高 | 高 | | PE反射加载 | 文件/模块监控 | 高 | 极高 |

这些技术通常会组合使用,形成多层防御绕过体系。理解这些技术对于安全研究人员和红队成员至关重要,同时也提醒杀软厂商需要不断进化检测技术。

免责声明

本文仅用于安全研究和教育目的。读者应遵守当地法律法规,在合法授权的环境中使用相关技术。作者不对任何滥用行为承担责任。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:泷羽Sec 仙草里没有草噜丶 仙草里没有草噜丶《杀软动态查杀的几种绕过方法,思路分享》

评论:0   参与:  0