文章总结: 本文结合C2远控项目探讨了十种绕过杀软动态查杀的技术思路,涵盖API哈希解析隐藏敏感函数、编译时字符串加密消除静态特征、直接系统调用绕过NTDLLHook、垃圾代码混淆干扰行为分析、延迟执行规避沙箱、两阶段内存保护避免RWX检测,以及进程注入、Fiber执行、DLL空洞注入与PE反射加载等进程与内存级规避手段。文章强调这些技术常组合构建多层防御绕过体系,安全研究人员可据此优化免杀策略,同时提示杀软厂商需持续升级检测引擎以应对新型威胁。 综合评分: 76 文章分类: 免杀,红队,实战经验,渗透测试,安全建设
杀软动态查杀的几种绕过方法,思路分享
原创
仙草里没有草噜丶 仙草里没有草噜丶
泷羽Sec
2026年6月5日 17:20 湖南
在小说阅读器读本章
去阅读
前言
现代杀毒软件已经从早期的静态特征码检测,进化到基于行为分析的动态查杀引擎。动态查杀通过监控程序运行时的API调用序列、内存操作模式、进程行为等特征来识别恶意行为。本文将结合实际C2远控项目代码,深入分析几种常见的动态查杀绕过技术。
❝
全文只提供思路,不易提供代码,请见谅。另外本文仅用于安全研究和教学目的。读者应遵守当地法律法规,在合法授权的环境中使用相关技术。作者不对任何滥用行为承担责任。
一、API哈希解析 – 隐藏敏感函数/命令执行
1.1 原理分析
杀软动态检测的核心之一是监控敏感API的调用。当程序直接调用VirtualAlloc、CreateRemoteThread等函数时,杀软的Inline Hook会拦截这些调用并进行行为分析。
API哈希解析技术通过以下方式绕过检测:
- 使用哈希算法(如DJB2)对函数名进行哈希
- 通过PEB(Process Environment Block)遍历已加载模块
- 在导出表中通过哈希值查找函数地址
比如需要执行添加、枚举用户功能
image-20260530201542468
image-20260530201229394
1.2 优势分析
- 绕过IAT检测:导入表中不会出现敏感函数名
- 绕过Inline Hook:直接获取原始函数地址
- 静态分析困难:哈希值在反编译中无法直接识别函数名
二、编译时字符串加密 – 消除静态特征
2.1 原理分析
杀软的静态扫描会检测二进制文件中的敏感字符串,如ntdll.dll、cmd.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 仙草里没有草噜丶 仙草里没有草噜丶《杀软动态查杀的几种绕过方法,思路分享》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论