[论文解读] Generic Unpacking of Self-modifying, Aggressive, Packed Binary Programs
本文提出 MmmBop,一种适用于 Windows XP 的通用、用户态动态二进制仪器化框架,用于解包自修改、行为激进的加壳恶意软件二进制文件。该框架可绕过反逆向工程技巧,并通过监控代码缓存和基本块转移来检测原始入口点,对 PESpin 和 tElock 等多数加壳器实现解包时间低于 5 秒。
Nowadays most of the malware applications are either packed or protected. This techniques are applied especially to evade signature based detectors and also to complicate the job of reverse engineers or security analysts. The time one must spend on unpacking or decrypting malware layers is often very long and in fact remains the most complicated task in the overall process of malware analysis. In this report author proposes MmmBop as a relatively new concept of using dynamic binary instrumentation techniques for unpacking and bypassing detection by self-modifying and highly aggressive packed binary code. MmmBop is able to deal with most of the known and unknown packing algorithms and it is also suitable to successfully bypass most of currently used anti-reversing tricks. This framework does not depend on any other 3rd party software and it is developed entirely in user mode (ring3). MmmBop supports the IA-32 architecture and it is targeted for Microsoft Windows XP, some of the further deliberations will be referring directly to this operating system.
研究动机与目标
- 解决自修改、激进加壳器带来的挑战,这些加壳器可逃避传统逆向工程与基于签名的检测方法。
- 开发一种通用的解包解决方案,可在不依赖第三方框架或调试 API 的情况下,适用于未知和已知的加壳算法。
- 绕过现代恶意软件中常见的反调试、校验和与代码混淆等反逆向技术。
- 实现在用户态(ring3)下的透明、稳定解包,无需虚拟机、仿真或操作系统级别的修改。
- 在复杂控制流与代码变异的环境下,实现高效率与高精度的原始入口点(OEP)检测。
提出的方法
- 基于动态二进制仪器化构建自定义 DBI 引擎,实时追踪执行流程并监控代码缓存行为。
- 实现一个位置无关的注入器桩代码,将 DBI 引擎加载到目标进程空间,而无需修改原始文件。
- 通过仪器化或 Adler-32 校验和监控基本块转移,检测代码修改,以识别加载器桩解包有效载荷的时刻。
- 仅将一个代码块同时存储在代码缓存中,以减少开销,并避免复杂的优化技术如间接跳转链接。
- 利用原生代码执行而非仿真,以最小化解包过程中的性能下降。
- 通过识别加载器桩完成执行后,解压代码开始执行的时刻,来检测原始入口点。
实验结果
研究问题
- RQ1一种通用的、用户态动态二进制仪器化框架是否能有效解包自修改、激进加壳器,而无需依赖外部框架?
- RQ2MmmBop 在存在反调试和代码混淆技术的情况下,如何检测原始入口点?
- RQ3MmmBop 在解包不同类型加壳二进制文件时,尤其是具有高控制转移频率的文件,会产生多大的性能开销?
- RQ4为何现有框架如 Pin 和 Saffron 无法解包激进加壳器(如 tElock 和 PESpin)?
- RQ5MmmBop 在处理未知或此前未见过的加壳算法方面,其适用范围有多大?
主要发现
- MmmBop 使用 Adler-32 校验和方法,成功解包了 PESpin(4.6084 秒)、tElock(1.2804 秒)和 yC(0.7611 秒)等激进加壳器保护的二进制文件。
- 基于仪器化的方案与 Adler-32 校验和方法在检测代码修改方面表现相当,性能差异极小。
- PESpin 解包耗时最高(4.6084 秒),因其涉及 2,364,189 次基本块转移,表明控制流复杂度与执行时间之间存在显著相关性。
- MmmBop 对所有测试加壳器的解包时间均低于 5 秒,包括 UPX(0.0759 秒),证明其在真实恶意软件分析中具有高效率。
- 该框架在处理自修改代码方面优于基于 Pin 的解决方案(如 Saffron 和 Renovo),尤其在触发 Pin 限制的激进加壳器中表现更优。
- MmmBop 避免被检查内存注入的加壳器检测到,因其完全在用户态运行,且不干扰系统稳定性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。