[论文解读] Evading network-level emulation
本文研究了针对入侵检测系统(IDS)中网络级仿真技术的逃避技术,其中仿真器在受控环境中动态执行可疑代码以检测未知威胁。本文提出了实用的逃避方法,如基于时间的延迟、FPU/SSE指令滥用以及内存操作,证明即使采用复杂的启发式检测机制,仅通过极少的代码修改即可实现绕过。
Recently more and more attention has been paid to the intrusion detection systems (IDS) which don't rely on signature based detection approach. Such solutions try to increase their defense level by using heuristics detection methods like network-level emulation. This technique allows the intrusion detection systems to stop unknown threats, which normally couldn't be stopped by standard signature detection techniques. In this article author will describe general concepts of network-level emulation technique including its advantages and disadvantages (weak sides) together with providing potential countermeasures against this type of detection method.
研究动机与目标
- 分析网络级仿真在入侵检测系统中的安全假设与局限性。
- 识别并演示可绕过基于仿真检测恶意载荷的实际逃避技术。
- 评估通过时序攻击、指令级操作和间接代码执行逃避仿真的可行性。
- 强调当前基于仿真的IDS对简单、低开销混淆技术的脆弱性。
- 为未来更鲁棒的抗仿真检测系统的发展提供理论基础。
提出的方法
- 将网络数据缓冲区中的每一个字节都作为潜在的shellcode入口点进行仿真,以分析执行行为。
- 通过RDTSC或循环指令引入基于时间的延迟,消耗仿真器的时间预算,从而触发提前终止。
- 利用FPU和SSE指令的不完整或错误仿真,导致仿真失败或行为偏差。
- 利用原生操作系统API调用(例如ZwWriteVirtualMemory)执行内存写入操作,从而绕过仿真器的可见性。
- 利用预取输入队列(PIQ)触发仿真器的未定义行为,因其对自覆盖指令的处理存在缺陷。
- 应用群体攻击模式,将shellcode解码逻辑分布在多个数据包中,避免在任一单个数据流中被检测到。
实验结果
研究问题
- RQ1基于时间的延迟在耗尽网络级仿真器时间预算方面的有效性如何?
- RQ2FPU和SSE指令的不完整或错误仿真在多大程度上导致检测绕过?
- RQ3是否可以利用原生操作系统API调用执行仿真器无法检测到的内存写入操作?
- RQ4指令级副作用(例如PIQ破坏)如何影响基于仿真的分析的可靠性?
- RQ5通过群体攻击将shellcode分发到多个数据包中,能否绕过网络级仿真系统中的检测?
主要发现
- 使用RDTSC或循环指令的时间延迟可有效消耗仿真器的时间预算,导致在完整代码分析完成前即提前终止。
- FPU和SSE指令的不完整或错误仿真可能引发仿真失败,尤其当shellcode依赖其结果时更为明显。
- 像ZwWriteVirtualMemory这样的原生API调用可执行仿真器无法察觉的内存写入操作,从而规避代码注入检测。
- 预取输入队列(PIQ)可被利用来破坏仿真器状态,原因在于其对自覆盖指令的处理存在缺陷。
- 群体攻击通过将shellcode及解码逻辑分散在多个数据包中,可避免在单一数据流中实现完整代码重构,从而规避检测。
- 即使采用启发式检测,网络级仿真仍易受简单、低复杂度混淆技术的攻击,这些技术利用了仿真器的局限性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。