背景
当今软件发布面临诸多风险。逆向工程已从技术爱好者的游戏演变为国家级攻击者的专业手段。典型案例是Gauss恶意软件——即使卡巴斯基实验室这样的专业团队也公开求助解密其部分代码,这证明混淆技术可以极为有效。
动机
我们受Gauss启发,旨在打造超越现有分析技术的保护系统。开发者需要保护三类核心信息:
- 算法:专有技术逻辑
- 数据:公司或用户敏感数据
- 漏洞:程序内部缺陷
有效保护系统需满足:
- 易用性:无缝集成开发流程
- 跨平台:支持移动/嵌入式设备
- 抗先进分析:超越现有静态分析工具
技术方案
MAST在LLVM编译器层面实现三重防护:
1. 符号混淆
通过破坏Objective-C方法名可读性,使逆向工程师无法快速理解程序逻辑。虽然基础但能显著增加分析难度。
2. 不透明谓词插入
植入带有隐蔽条件的控制流分支,既拖慢人工分析,又通过膨胀控制流图(CFG)干扰自动化工具。测试显示其对性能的影响与同类工具相当。
3. 代码扩散
最具创新性的技术,借鉴ROP攻击思想进行防御性改造:
- 将代码拆解为"代码片段"(gadgets)
- 通过运行时跳转重组执行流
- 破坏IDA等工具的控制流图显示
- 使BAP等静态分析工具失效
- 消除断点的语义价值(同一代码段可能被多个函数复用)
上图显示简单函数在代码扩散前后的IDA反编译对比
4. 环境密钥绑定
将程序执行与特定设备特征绑定,要求攻击者必须同时获取目标环境才能分析。每个主机运行独特的密钥版本二进制文件。
性能影响
测试显示:
- bzip2经代码扩散后性能下降约55%(x86架构)
- 保护强度与性能损耗需根据场景权衡
结论
MAST作为编译时混淆套件具有:
- 易用性:直接集成LLVM工具链
- 普适性:支持所有LLVM编译目标(包括Swift)
- 先进性:融合多种对抗逆向工程技术
适用于保护安全补丁、专有技术、敏感数据及漏洞信息。现已成为Trail of Bits商业产品,企业可通过info@trailofbits.com获取授权。