此C程序包含上述所有漏洞的易受攻击的代码,然后用户可以使用AFL或hongfuzz或其他所需的方法对其进行模糊处理。
AFL配合DynamoRIO,没错,就是drAFL。在drAFL的帮助下,我们就可以在没有源代码的情况下对LInux二进制代码进行模糊测试了。
0x00 AFL 基础 American Fuzz Lop简称 AFL,是一款模糊测试工具。模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。通常的流程:提供一个正常的输入;修改一部分内容;输入给程序;观察程序的处理过程是否异常。 环境 Ubuntu 16.04 LTS X86_64 安装 apt install afl 如果大家需要较新版本的AFL,也可通过AFL的官网下载源码自行编译。http://lcamtuf.coredump.cx/afl/rel
PTFuzzer是基于AFL框架实现的一款开源fuzz工具,它采用了Intel Processor Trace硬件部件来收集程序执行的路径信息,改进了原来AFL通过编译插桩方式获取程序执行路径信息的方法。和AFL相比,硬件收集的路径信息更加丰富,同时可以直接对目标程序进行fuzz,无需源码支持。
在四月份的时候出了那么一个新闻,说微信有一个打开图片就崩溃的 bug,当时微信群里都在传播导致手机各种闪退。
由于Frida(https://frida.re)动态插桩框架的跨平台、简单易用,现在已经被广泛应用于安全领域。相比Xposed而言,虽不能更底层地去Hook系统进程,但它可以免启动,应对App的hook完全够用,更关键的是,它完全可以用JavaScript来写代码,免去编译的烦恼,调试也方便。
pe-afl是一款基于了PE二进制和WinAFL上的静态二进制检测的工具,可以用于fuzzWindows应用程序和内核模式驱动程序,而无需源代码或完整符号或硬件支持。
最近winafl增加支持对Intel PT的支持的,但是只支持x64,且覆盖率计算不全,比如条件跳转等,所以它现在还是不如直接用插桩去hook的方式来得准确完整,这里主要想分析也是基于 DynamoRIO插桩的覆盖率反馈原理。
目前流行的fuzzing(如AFL)通常使用较为简单的coverage information,这种覆盖的不准确和不完整给fuzzing带来了严重的局限性。首先,它会导致路径冲突,从而影响fuzzing挖掘出导致新崩溃的潜在路径。更重要的是,它也会影响fuzzing的最优决策。此外,学术界的大部分研究的是Coverage-guided fuzzing,很少有目光真正的投在Coverage上,所以CollAFL做了这一块的内容。
之前GitHub上有人整理过一个叫Awesome-Fuzzing的资料,整理了关于Fuzzing技术的电子书、视频、工具、教程以及用于练习的漏洞程序。整体上不错,但工具上还是不够全,有些不错且希望阅读代码学习的工具,发现未在其中,因此重新整理出下面这一份资源,其中有些还曾二次开发过,有些是还未来得及学习的,写出来权且当作学习计划。
今年S&P顶会上有一篇研究论文"IJON: Exploring Deep State Spaces via Fuzzing",他们通过改造AFL来探测程序的空间状态,以发现更多程序行为,并拿游戏"超级玛丽"来作演示:
AFLSmart 是一个在 AFL 基础上,结合了 Peach 的结构化输入组件的灰盒 smart fuzz 工具。
本文主要介绍如果使用 qemu 和 unicorn 来搜集程序执行的覆盖率信息以及如何把搜集到的覆盖率信息反馈到 fuzzer 中辅助 fuzz 的进行。
本文前两节将简要讨论 fuzzing 的基本理念以及 WinAFL 中所用到的插桩框架 DynamoRIO ,而后我们从源码和工具使用角度带你了解这个适用于 Windows 平台的 fuzzing 利
AFL-fuzzer用一个全局的map用来存储之前执行时看到的tupes。这些数据可以被用来对不同的trace进行快速对比,从而可以计算出是否新执行了一个dword指令/一个qword-wide指令/一个简单的循环。 当一个变异的输入产生了一个包含新路径(tuple)的执行trace时,对应的输入文件就被保存,然后被用在新的fuzzing过程中。对于那些没有产生新路径的输入,就算他们的instrumentation输出模式是不同的,也会被抛弃掉。 这种算法考虑了一个非常细粒度的、长期的对程序状态的探索,同时它还不必执行复杂的计算,不必对整个复杂的执行流进行对比,也避免了路径爆炸的影响。为了说明这个算法是怎么工作的,考虑下面的两个trace,第二个trace出现了新的tuples(CA, AE)
本篇文章主要讲述数据如何在传递给AFL++之前,通过后处理的方式进行自定义突变。本篇也是【custom mutator】系列的最后一篇文章,祝愿正在看这篇文章的你能够早日得到自己的原创漏洞~
1988年,在威斯康星大学Barton Miller教授的计算机实验课上(http://pages.cs.wisc.edu/~bart/fuzz/CS736-Projects-f1988.pdf),首次提出Fuzz生成器(Fuzz Generator)的概念,用于测试Unix程序的健壮性,即用随机数据来测试程序直至崩溃。因此,Barton Miller教授也被多数人尊称为"模糊测试之父"。但是,当时更多是为了验证代码质量和程序的稳定性,而非专门用于挖掘安全漏洞,真正用于软件安全漏洞挖掘的开端要从下面两件事说起。
本文主要是向大家推荐一系列,用于fuzzing和Exploit开发初始阶段学习的资源合集,其中将包括相关的书籍,课程 - 免费或收费的,视频,工具,教程,以及一些供大家练习使用的靶机应用。(PS:文内所有链接点击“阅读原文”均可查看)
最近在尝试用 Qiling Framework + AFLplusplus 进行fuzz,在ubuntu 22.04(GLIBC版本2.35)下构建环境并测试时遇到了以下问题:
"The best alternative to defense mechanisms is to find and fix the bugs."
1. fuzz的概念,afl与程序交互的方法,afl fuzz过什么?afl有什么成果
一直想学fuzz,但是由于自己太懒,一直没开始,最近终于开始学了,一直认为学习一个东西最好的办法,就是阅读源码,只有理解了源码,才能一通百通,我将从afl-gcc开始,一步一步的分析AFL的源码。
定向灰盒模糊测试(DGF)类似AFLGo,旨在对预先选择的潜在易受攻击的目标位置执行压力测试,应用于不同的安全场景:(1)漏洞复现;(2)补丁测试;(3)静态分析报告验证;近期,研究人员也做了很多工作,有效地提高了定向模糊测试的有效性和效率。
Nautilus是一款基于覆盖指引和语法的反馈式模糊测试工具,广大研究人员可以使用Nautilus来提升模糊测试过程中的测试覆盖率,以寻找到更多的安全漏洞。在Nautilus的帮助下,研究人员可以通过指定半有效的输入语法,来执行更加复杂的变异操作,并生成更多有效的测试用例。
Fpicker是一款基于Frida的模糊测试套件,可以帮助广大研究人员以多种模式来进行渗透测试,例如AFL++模式或被动追踪模式等。值得一提的是,该工具可以在所有支持Firda的系统平台上运行。
Typestate-Guided Fuzzer for Discovering Use-after-Free Vulnerabilities报告人:jxin本文发表于软件工程顶级会议ICSE 20,第一作者是来自蚂蚁金服集团的王海军博士。 一、主要内容 1. 关注点 程序中已分配的内存区域在释放后再次被访问,就会产生Use-after
近年来,基于模糊的抽象自动化软件测试经历了一次复兴,特别是反馈驱动模糊以其在有限输入语料库下高效地进行随机测试的能力而闻名(such afl)。尽管取得了许多进展,但有两个常见的问题是 magic numbers 和 checksums,这些问题通常使用 taint tracking 和symbolic execution 等计算开销较大的方法来克服这些障碍。不幸的是,这样的方法通常需要访问源代码、对环境的需求较高(例如,库调用或底层操作系统的行为)或平台指令集的确切语义。
近期,有一群研究人员设计出了一种智能灰盒模糊测试模型,他们声称这种Fuzzer模型在搜寻代码库(解析复杂文件)漏洞方面跟现有Fuzzer相比,新模型的漏洞挖掘效率会更高。
Frelatage是一款基于覆盖率的Python模糊测试工具,在该工具的帮助下,广大研究人员可以轻松对Python代码进行模糊测试。
作者介绍:陈志兴,Google I/O 2017大会的小时光茶社特派员 ,腾讯SNG增值产品部内容中心Android组leader,主要负责手Q个性化业务、手Q WebView等项目。喜欢阅读优秀的开源项目,听听音乐,偶尔也会打打竞技类游戏。 悄然而至 今天是Google I/O 2017开发者大会的第三天,也是本次开发者大会的最后一天。早上跟同事丁教授来到会场准备停车的时候,发现Google把停车位置从之前的大空地转到不远处的大草地上了。停好车后,我们绕了一条小路快速向会场方向走去,突然发现路边有
【新智元导读】众所周知,神经网络难以debug。谷歌大脑的Augustus Odena和Ian Goodfellow提出了一种新方法,能够自动Debug神经网络。Goodfellow表示,希望这将成为涉及ML的复杂软件回归测试的基础,例如,在推出新版本的网络之前,使用fuzz来搜索新旧版本之间的差异。
路由器、防火墙、NAS和摄像头等由于功能复杂,为方便交互一般都会提供web管理服务,和服务器web相比,IOT的web功能较为简单,也就避免了一些复杂功能存在的漏洞,但是由于嵌入式设备的硬件瓶颈,设备自身的安全检测与防护能力有限,也就增加了其安全风险。 IoT Web服务 IOT web常采用开源框架+自研模块的方式,漏洞特点也较为明显: (一) 自研CGI模块中存在漏洞的概率较高,漏洞差异性大 (二) 开源框架(可能的)漏洞广泛存在各种设备,漏洞同源性强 虽然具体漏洞存在差异,但常见的大致分为几类。 2.
Discover Vulnerabilities with Flow Sensitive Fuzzing
honggfuzz在对输入文件进行变异前,会先创建个临时文件名(honggfuzz+pid+time),然后将输入数据变异后写入临时文件。
“ 反馈驱动:通过监控样本触发的代码覆盖率,进而改进输入样本以提高代码覆盖率,增加发现漏洞的概率。”
原本碎片化学习很难系统的掌握知识点,但是现在有了系统大模型,想法就能实现,碎片化知识也能拼成一个完整的系统。
qPBOC基本信息数据采用TLV(tag-length-value)的表示方式,即每项由tag标签(T),长度(L)和取值(V)构成。
如果你是第一次设置 MySQL 或 MariaDB 数据库,你可以直接运行 mysql_secure_installation 来实现基本的安全设置。
从笔者个人的感觉上来看,这三者尽管通常水乳交融、相互依赖,但难度是不尽相同的。本文就这三者分别谈谈自己的经验和想法。
Bashtop是Linux中基于终端的资源监控实用程序。它是一个漂亮的命令行工具,可以直观地显示CPU、内存、正在运行的进程和带宽的统计数据。
在如今的技术领域中,做一个完全安全的系统是一个不可能实现的目标。正如 FBI 的 Dennis Hughes 所说,“真正安全的计算机是没有连线、锁在一个保险箱中、埋藏在一个秘密场所的地下 20 英尺处的计算机……我甚至不确定这样是否安全。”在不能选择通过拔掉线缆、锁住和掩埋计算机来保护系统的世界里,可通过以下步骤缩小 您系统的攻击面。Open Web Application Security Project (OWASP) 的 攻击面分析备忘录 提供了有关攻击面的更多信息。 sane 系统配置等流程可
关于WINGFUZZ SaaS WINGFUZZ SaaS是水木羽林推出的智能模糊测试在线服务,可以在不需要用户上传源代码的情况下利用云端资源开展覆盖率引导的模糊测试。作为国内首个模糊测试SaaS服务平台,当前已开放beta版免费注册使用,支持C/C++程序内存问题等安全漏洞的自动化测试。 注册使用 平台注册地址是:https://wingfuzz.com/ 注册后即可登入平台查看demo项目与相关功能,等待审核激活后就可以跑测试了。 技术原理 平台后端基于覆盖率引导的模糊测试实现,引入了团队自研的
它带有游戏风格的响应式终端UI和可自定义的菜单。各种显示部分的整齐排列使监视各种系统指标变得容易。Bashtop是Linux中基于终端的资源监控实用程序。它是一个漂亮的命令行工具,可以直观地显示CPU、内存、正在运行的进程和带宽的统计数据。
--[ 0 - 简介 直到最近,为了在运行时攻击者破坏整个系统 发现并利用内核漏洞。这使他们能够执行 各种动作;在内核上下文中执行恶意代码, 修改内核数据结构以提升权限,访问受保护的数据, 等已经引入了各种缓解措施来防止此类 动作和管理程序也被使用,除了他们的 为实现这一目标而使用传统的虚拟化支持。在里面 ARM 虚拟化促进了 Android 生态系统 扩展,允许供应商/OEM 实施自己的保护 功能/逻辑。 另一方面,Android 设备已普遍成为主要的 PITA 由于引入的 OEM 和供应商种类繁多,
其实这篇是临时加进来的,因为下一篇文章是libprotobuf + AFL++的内容,所以写的时候需要使用AFL++自定义突变的API,觉得还是需要单独写一篇API的介绍,一共十一个方法,也不是很多,下一篇文章就不再用大篇幅描述API了~
对于需要对软件进行安全评估的漏洞研究人员来说,通常会使用AFL++和libFuzzer这样的强大工具来增强基于覆盖率的模糊测试。这一点非常重要,因为它可以自动执行错误查找过程,并快速发现和利用目标中存在的安全问题。然而,遇到大型复杂的代码库或闭源二进制文件时,研究人员必须花时间手动审查并对它们进行逆向工程分析,以确定目标可以进行模糊测试。
这篇文章主要是在libprotobuf-mutator_fuzzing_learning开源模糊测试练习项目第4个练习的基础上进行详细讲解,主要内容为通过libprotobuf-mutator为AFL++提供自定义protobuf结构突变。练习和写作的过程中也是踩了不少的坑,文章末尾会有我遇到的全部问题及解决办法。特别感谢Sakura的fuzzinglab教学,以及漫牛师傅的耐心指导
陈鹏:大家好,今天我给大家分享一下怎么从零开始实现Rust Fuzzer,又叫模糊测试工具。首先介绍一下我自己,我叫陈鹏,来自腾讯安全的安全大数据实验室,我们实验室主要以人工智能和大数据来解决安全问题为目标,在这个过程中我们也在尝试把Rust和安全与大数据这两个核心要素结合在一块,包括两个方面。
领取专属 10元无门槛券
手把手带您无忧上云