极速模糊测试工具 Shin GRR:重新定义二进制程序漏洞挖掘
Shin GRR:让模糊测试再次提速
Fear GRR
我们曾提及 GRR——这是我们用于模糊测试程序二进制文件的高速全系统模拟器。该项目专为 DARPA 网络大挑战(CGC)开发,现以开源项目形式发布!
漏洞从不畏惧缓慢的模糊测试器,因此 GRR 通过独特创新的设计实现了令人惊叹的高速运行。
技术架构
动态二进制翻译
GRR 在 64 位地址空间内通过动态二进制翻译(DBT)模拟 x86 二进制文件。作为 64 位程序,GRR 可比原程序使用更多硬件寄存器和内存,这使得无需复杂寄存器重调度或内存重映射逻辑即可轻松实现完美隔离。
高性能代码缓存
传统 DBT 每次执行都重新翻译相同程序,而 GRR 通过磁盘缓存避免重复翻译。在模糊测试活动中,所有代码都是"热代码",GRR 会对缓存代码进行生命周期优化。
自适应代码版本控制
GRR 采用逐基本块翻译策略,使用"版本号"(基于可执行内存内容的 Merkle 哈希)索引缓存块。当可执行页面内容修改时,哈希值失效并触发重新翻译。
系统级优化
通过程序快照跳过读取输入字节前的无关设置代码
通过模拟系统调用和内存内 I/O 操作避免内核往返
支持 Radamsa 等可插拔输入变异器和代码覆盖率度量
实战演示
GRR 在处理包含六个通过 IPC 通信二进制文件的 CGC 挑战时,成功在第三个二进制文件中检测到崩溃。演示突出两大特性:
可输出被翻译二进制文件执行的系统调用轨迹
可输出每个执行基本块入口的寄存器状态
当最大基本块大小设置为单指令时,可提供指令级寄存器轨迹
开源贡献
GRR 现已开源并采用宽松许可证,欢迎开发者参与贡献。这款精悍的漏洞挖掘机器将持续推动模糊测试技术的发展。
原文发布于 2016 年 11 月 2 日,涉及 darpa、fuzzing、manticore 等技术领域更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码

办公AI智能小助手
评论