首页 > 其他分享 >利用硬件Tracer加速的Fuzzer:PTFuzzer

利用硬件Tracer加速的Fuzzer:PTFuzzer

时间:2023-07-01 17:35:47浏览次数:41  
标签:PTFuzzer AFL Intel 模糊 PTfuzz 反馈 Fuzzer 测试 Tracer

概要

PTfuzzer是一款开源的fuzz工具,它基于AFL实现,并利用Intel 处理器提供的Processor Trace硬件部件来跟踪反馈来指导模糊测试,能够快速、准确地记录程序的基本块转换信息,从而实现更高的代码覆盖率和更深入的漏洞挖掘。与之前的灰盒模糊测试技术相比(主要是AFL-qemu),PTfuzz具有更快的反馈机制、更准确的覆盖反馈和更好的二进制支持能力。

PTFuzz的原理

Intel Processor trace(PT)

Intel Processor trace是Intel CPU架构中的追踪技术,从第五代Intel CPU开始提供该技术的支持,主要用于软件调试和分析。它提供了更精确的软件控制流和时间信息的能力,对软件执行的性能影响很小。
Intel PT是一种基于硬件的功能,用于记录处理器上的软件执行信息。它可以用于跟踪程序的执行并识别性能瓶颈或其他问题。Intel PT记录有关处理器执行的指令信息,包括每个指令的地址以及它是否被执行。这些信息可用于重构程序的控制流并识别性能问题。

通过PT改进而来的PTfuzz

PTfuzz利用Intel PT追踪反馈来生成测试用例和指导模糊测试的执行路径。具体来说,PTfuzz使用Intel Processor Trace技术来记录程序执行的基本块转换,并提供准确的覆盖反馈信息。在模糊测试过程中,PTfuzz会根据覆盖反馈信息来选择哪些测试用例需要进一步变异,以便更好地探索程序的执行路径。通过这种方式,PTfuzz能够更准确地测量代码覆盖率,发现更多的漏洞和漏洞深度更深的路径。
PTfuzz在执行测试用例后,通过Processor Trace基础设施提供的信息来决定是否保存或丢弃该用例。如果该用例触发了新的基本块转换,主要的模糊测试循环将保存该用例并将其放入种子队列中进行连续的模糊测试。如果没有检测到新的转换,则该测试用例将被丢弃。保存的测试用例将用于后续的模糊测试,以生成更多的测试用例。
image.png

PTfuzz的特点与局限性

特点

关于PTfuzz的特点,作者本人有提到,我直接引用作者本人对此的描述

PTFuzzer最大的特点是不需要目标程序有源码,这在很多方法是非常有用的。首先,对于很多闭源程序的测试很有优势。例如,某公司对外公布了一个二进制程序的发行版。这时拿不到程序的源代码用AFL就无法测试,而用PTFuzzer就可以。另外,即便是对于一些有源码的程序,可能由于其编译环境极为复杂,用AFL来进行编译插桩变得非常繁琐和耗时,有时也会出现不成功的情况。还有一种情况是对于那些非C语言编写的二进制程序,AFL就无能为力了。例如自己在测试pandoc程序时,发现pandoc是用Haskell语言编写的。这时用AFL就无法进行编译插桩,而使用PTFuzzer进行测试,只需要简单通过apt-get安装一个pandoc可执行程序就OK了。

简言之,PTFuzz的特点包括快速反馈机制、准确的覆盖反馈和能够处理二进制文件的模糊测试。它利用CPU直接提供的快速硬件反馈机制,比QAFL等以前的工作具有更小的性能开销。它使用实际运行时地址来跟踪基本块之间的转换,提供真实的运行代码的控制流信息。

局限性

PTfuzz存在以下局限性或不足:

  1. 硬件和操作系统要求:PTfuzz只能在Intel Core处理器(Broadwell架构)及以上版本的计算机上运行,并且需要运行新版本的内核。这可能会限制PTfuzz的使用范围。
  2. 解码器的实现:PTfuzz在模糊测试任务中比AFL慢。通过分析PTfuzz的代码,发现记录的处理器跟踪信息的解码器可以通过执行类似于管道的解码来大大加速。
  3. 仅限于Linux平台:目前,PTfuzz只能模糊测试Linux程序,因为PT实现依赖于Linux系统。

标签:PTFuzzer,AFL,Intel,模糊,PTfuzz,反馈,Fuzzer,测试,Tracer
From: https://www.cnblogs.com/cx1ng/p/17519581.html

相关文章

  • 结合静态与动态分析优势范围的fuzzer:Arbiter
    对于Arbier这款新型fuzzer的研究,目前网络上几乎没有内容,因此大部分内容的直接来源于Arbier的论文《Arbiter:BridgingtheStaticandDynamicDivideinVulnerabilityDiscoveryonBinaryPrograms》,该论文随着2022年8月的USENIX安全研讨会的论文集中发表。1.引言当前最先......
  • 利用符号执行增强的Fuzzer:Driller
    0x00引言软件与信息系统的漏洞长久以来一直是网络空间安全威胁的重要源头,特别是0dayattack往往导致严重的破坏,因此针对软件与信息系统的漏洞挖掘技术在长时间的发展中提出了以两大特性为基础的技术。第一是基于静态分析。静态分析是没有实质执行程序的情况下进行的程序分析技......
  • 基于覆盖率的Fuzzer:AFL
    0x01Fuzzer的类型模糊测试器的分类方法方式有好几种,本文将着重介绍基于覆盖率的模糊测试器,因此只详细介绍根据fuzzing策略的分类。基于fuzzing的策略,可将fuzzer分为基于定向的fuzzing和基于覆盖率的fuzzing。对于基于覆盖率的模糊测试工具来说,往往需要使用恰当的种子测试目标程......
  • traceroute命令详解
    目录traceroute命令详解traceroute命令详解traceroute命令用于显示数据包到主机间的路径,预设数据包大小是40Bytes。安装命令: yuminstalltraceroute命令格式: traceroute[-46dFITUnreAV][-f存活数值][-g网关][-i网络界面][-m存活数值][-p端口][-s来源地址][-q......
  • 允许Traceroute探测漏洞修复
    vim/etc/sysconfig/iptables-AINPUT-picmp-micmp--icmp-typetime-exceeded-jDROP-AOUTPUT-picmp-micmp--icmp-typetime-exceeded-jDROP重启iptables服务:systemctlrestartiptables检查新添加的规则是否有效,检查命令:iptables-L-n......
  • tracer ftrace笔记(17)——atrace命令抓trace
    一、atrace命令解析1.帮助信息#atrace-h用法:usage:atrace[options][categories...]选项包括:-aappname为逗号分隔的cmdlines列表启用应用程序级跟踪;*是匹配任何进程的通配符-bN使用大小为NKB的跟踪缓冲区-c......
  • Packet tracer 8.2.1注册及使用
    除了不需要登录的版本,所有需要登录的版本在中国大陆只能使用Packettracer8.2.1及以上,使用中国大陆专门的服务器。下面逐步介绍注册使用步骤:1、打开网址:CiscoPacketTracer|NetworkingAcademy(netacad.cn)2、点击进入注册界面 3、跟着引导一步一步注册 4、成功Submi......
  • 解决Cisco packet tracer使用思科账号无法登录的问题
    前言,事情是这样的,原先已经按照标准的账号注册流程进行了思科账号的注册,并且到思科学院进行了课程选修学习后进行了账号关联绑定但是使用了一段时间后再次登录Ciscopackettracer后提示如下图所示: 开始尝试修改密码再次登录也是一样,去思科学院使用思科账号登录点击提交后直接......
  • traceroute命令:网络诊断工具,它可以用于确定数据包从源主机到目标主机所需经过的路由器
    traceroute命令是一种网络诊断工具,它可以用于确定数据包从源主机到目标主机所需经过的路由器节点。traceroute通过发送UDP数据包或ICMPECHO请求,在数据包中设置递增的TTL(TimeToLive)值,每个TTL值代表距离源主机越来越远的路由器。当路由器收到TTL值为0的数据包时,将抛弃该数据包并......
  • r0tracer 源码分析
    使用方法修改r0tracer.js文件最底部处的代码,开启某一个Hook模式。functionmain(){Java.perform(function(){console.Purple("r0tracerbegin...!")//0.增加精简模式,就是以彩虹色只显示进出函数。默认是关闭的,注释此行打开精简模式。//is......