AFL实验「建议收藏」

AFL实验「建议收藏」AFL实验实验内容实验环境实验原理实验步骤实验内容使用AFL对afl_a_b_strcmp和afl_strcmp测试,分析效率差异,掌握AFL二进制工作模式的原理实验环境Ubuntu64位实验原理1、 模糊测试的基本概念、基本分类、主要用途模糊测试基本概念模糊测试(fuzztesting)是一类安全性测试的方法。模糊测试是一种介于完全的手工渗透测试与完全的自动化测试之间的安全性…

大家好,欢迎来到IT知识分享网。

实验内容

使用AFL对afl_a_b_strcmp和afl_strcmp测试,分析效率差异,掌握AFL二进制工作模式的原理

实验环境

Ubuntu 64位

实验原理

1、 模糊测试的基本概念、基本分类、主要用途
模糊测试基本概念
模糊测试(fuzz testing)是一类安全性测试的方法。模糊测试是一种介于完全的手工渗透测试与完全的自动化测试之间的安全性测试类型。它充分利用了机器的能力:随机生成和发送数据;同时,也尝试将安全专家在安全性方面的经验引入进来。
基本分类
环境变量和参数的模糊测试、文件格式的模糊测试、网络协议的模糊测试、Web浏览器的模糊测试、内存数据的模糊测试。
主要用途
模糊测试技术在各行各业都有广泛的应用。在国外,模糊测试工具已广泛应用于金融、教育、软件、设备生产商、评测、国防等领域。
2、 AFL的工作原理
AFL-Fuzz对二进制黑盒目标程序的插桩是通过QEMU的“user emulation”模式实现的。 QEMU使用basic blocks作为翻译单元,利用QEMU做插桩,再使用一个和编译期插桩类似的guided fuzz的模型。 QEMU mode使用一个fork server,通过把一个已经初始化好的进程镜像,直接拷贝到新的进程中。 AFL fork server在emulator和父进程之间提供了一个频道。这个频道用来通知父进程新添加的blocks的地址,之后把这些blocks放到一个缓存中,以便直接复制到将来的子进程中。
3、 AFL工作原理中基于代码覆盖率的启发式算法
在编译程序中注入的插桩能够捕获分支覆盖率,并且还能检测到粗略的分支执行命中次数。在分支点注入的代码大致如下:
cur_location = <COMPILE_TIME_RANDOM>;
shared_mem[cur_location ^ prev_location]++;
prev_location = cur_location >> 1;
cur_location的值是随机产生的,为的是简化连接复杂对象的过程和保持XOR输出分布是均匀的。shared_mem[] 数组是一个调用者传给被插桩的二进制程序的64kb的共享空间。其中的每一位可以理解成对于特别的式的tuple的一次命中。AFL的fuzzer包括一个全局的Map来存储之前执行时看到的tuple。这些数据可以被用来对不同的trace进行快速对比,从而可以计算出是否新执行了一个dword指令/一个qword-wide指令/一个简单的循环。当一个变异的输入产生了一个包含新tuple的执行路径时,对应的输入文件就被保存,然后被发送到下一过程。对于那些没有产生新路径的输入,就算他们的路径是不同的,也会被抛弃掉。变异测试用例是能够产生新的语句转移的测试用例。这种变异测试用例会被加入到输入队列中,当做下一次fuzz的起点。它们作为已有测试用例的补充,但并不替换掉已有测试用例。
4、 AFL工作流程
(1)将用户提供的初始测试用例加载到队列中
(2)从队列中获取下一个输入文件
(3)试着将测试用例修剪到最小且不会改变的尺寸程序的测量行为
(4)使用平衡且经过充分研究的变体反复修改文件对于传统的模糊策略,
(5)如果产生的任何突变导致新的状态转变由仪器记录,将突变输出作为新条目添加到队列中。
(6)转到2

实验步骤

1、下载afl源码

在这里插入图片描述
在这里插入图片描述

2、解压并安装
在这里插入图片描述

        测试是否成功安装

安装成功
3、 构建qemu
进入qemu_mode文件夹,运行./build_qemu_support.sh
在这里插入图片描述

4、 建立输入输出文件夹,并将种子文件放到输入文件夹

在这里插入图片描述
5、测试afl_a_b_strcmp
在这里插入图片描述
测试界面
在这里插入图片描述

测试afl_strcmp
在这里插入图片描述
测试界面
在这里插入图片描述

实验遇到的问题及解决方法
出现如下问题1:
在这里插入图片描述

解决方法:将afl-qemu-trace设置为全局变量,如上图

问题2:

在这里插入图片描述
解决方法:按照提示修改

问题3:在./build_qemu_support.sh是会出现很多缺少库文件的错误
解决方法:将缺少的库文件一一安装。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/13591.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信