探索未知边界:Driller - 强大的模糊测试与符号执行工具

探索未知边界:Driller - 强大的模糊测试与符号执行工具

【免费下载链接】driller Driller: augmenting AFL with symbolic execution! 【免费下载链接】driller 项目地址: https://gitcode.com/gh_mirrors/dr/driller

1、项目介绍

Driller是一款基于AFL(Automated Fuzzing Framework)并集成angr的开源模糊测试工具。其设计灵感源于学术论文《Driller: Augmenting Black-Box Fuzzing Through Selective Symbolic Execution》。Driller在AFL的基础上,利用angr作为符号执行引擎,帮助发现和解决AFL在探索路径时遇到的难题,从而有效地挖掘软件中的安全漏洞。

2、项目技术分析

Driller的核心在于它的“卡住”启发式算法。当AFL的“pending_favs”属性(表示潜在有趣路径的数量)降为零时,即认为AFL进入停滞状态,此时Driller会介入。Driller将未被追踪的输入传递给angr,寻找AFL无法满足的基本块转换,并合成新的输入。这些新输入随后会被返回给AFL,进行进一步的变异和路径探索。

此外,该项目提供三种操作模式:

  1. 在单一机器上运行AFL和Driller的脚本。
  2. 监控进程观察fuzzer_stats文件,适时调用Driller。
  3. 利用Celery任务调度器分配多台机器上的工作,一部分用于模糊测试,另一部分用于符号执行。

3、项目及技术应用场景

Driller在实际中表现出色,尤其是在DARPA的Cyber Grand Challenge(CGC)中,Shellphish团队使用它来协助查找可利用的错误。对于需要深入测试复杂二进制代码或执行路径的应用场景,如系统软件、嵌入式设备固件等,Driller都是一个极具价值的工具。

4、项目特点

  • 智能结合:将AFL的模糊测试能力与angr的符号执行相结合,克服了纯模糊测试的局限性。
  • 灵活模式:支持多种运行模式,适应不同规模的环境和需求。
  • 实战验证:在CGC中的成功应用证明了其实战效果。
  • 广泛兼容:虽然主要针对DECREE二进制格式,但对其他格式也有一部分支持,尽管可能会遇到一些兼容问题。
  • 易于使用:提供了简单的Python API,方便开发人员快速集成和扩展。

例如,下面这段代码展示了如何使用Driller从一个初始测试用例出发,找到新的有效测试用例:

import driller

d = driller.Driller("./CADET_00001",  # 二进制目标文件路径
                    "racecar",  # 初始测试用例
                    "\xff" * 65535  # 没有发现转换的AFL位图
                   )

new_inputs = d.drill()

依赖项包括Mechaphish的Fuzzer和Tracer组件,以及Redis用于同步测试案例。

总的来说,Driller是一个强大的、创新的工具,能够帮助开发者和安全研究人员深入探索软件的潜在缺陷,是提高软件安全性不可或缺的一部分。如果你正在寻求提升你的模糊测试能力,那么不妨尝试一下Driller,开启你的安全之旅吧!

【免费下载链接】driller Driller: augmenting AFL with symbolic execution! 【免费下载链接】driller 项目地址: https://gitcode.com/gh_mirrors/dr/driller

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值