Manul是一款基于覆盖率引导的并行模糊测试工具,该工具采用纯Python开发,并且已完全开源,广大研究人员可以使用Manul在Windows、Linux和macOS平台上对目标代码进行模糊测试或黑盒测试。

马上使用pip3 install psutil

cd manul

mkdir in

mkdir out

echo "AAAAAA" > in/test

python3 manul.py -i in -o out -n 4 "linux/test_afl @@"

安装Radamsasudo apt-get install gcc make git wget

git clone https://gitlab.com/akihe/radamsa.git && cd radamsa && make && sudo make install

如果你是用的是Windows平台,那你就不需要安装Radamsa了,因为Manul针对Windows平台的发布包中已经包含了Radamsa库了。

公共CVE列表CVE IDs 产品 发现人 CVE-2019-9631 CVE-2019-7310 CVE-2019-9959 Poppler Maksim Shudrak

CVE-2018-17019 CVE-2018-16807 CVE-2019-12175 Bro/Zeek Maksim Shudrak

如果你使用Manul成功发现了新的漏洞的话,大家可以将漏洞信息添加到这个列表之中。

工具演示样例

工具依赖

1、Python3(Python2从2020年1月1日开始就已经过时了,但是Manul在Python2环境下理论来说可以正常工作)

2、Psutil:【传送门】

3、Pywin32(Windows平台下,DBI持久模式),安装命令如下:pip install pywin32

基于覆盖率引导的模糊测试

当前版本的Manul支持两种类型的操作指令,即基于AFL的指令(afl-gcc、afl-clang和afl-clang-fast)和DBI模式。

基于覆盖率引导的模糊测试-AFL指令模式

你可以使用afl-gcc、afl-clang-fast或Address Sanitizer(建议使用)命令来进行操作,演示样例如下:CC=afl-gcc CXX=afl-g++ CFLAGS=-fsanitize=address CXXFLAGS=-fsanitize=address cmake

make -j 8

USE_ASAN=1 CC=afl-clang-fast CXX=afl-clang-fast++ cmake

make -j 8

如需获取详细使用样例,可以点击【这里】获取。

基于覆盖率引导的模糊测试-DBI模式

在使用该模式时,无需使用专门的命令,但是我们需要在Windows或Linux平台中下载最新版本的DynamoRIO框架。Manul在Linux和Windows平台上,是以x86/x64预编译客户端的形式发布的,你可以在下列目录中找到它们:

linux/dbi_32|dbi_64/libbinafl.so (DynamoRIO client)

win/dbi_32|dbi_64/binafl.dll

不幸的是,DynamoRIO目前还不支持在macOS上使用。

使用DynamoRIO对代码进行黑盒模糊测试

DynamoRIO:【最新版下载】

在使用之前,你需要去掉manul.config文件中的下列代码行的注释,并且给DynamoRIO启动器和客户端提供正确的路径:# Choose DBI framework to provide coverage back to Manul ("dynamorio" or "pin"). Example dbi = dynamorio

dbi = dynamorio

# If dbi parameter is not None the path to dbi engine launcher and dbi client should be specified.

dbi_root = /home/max/DynamoRIO/bin64/drrun

dbi_client_root = /home/max/manul/linux/dbi_64/libbinafl.so

dbi_client_libs = None

除此之外,广大用户还可以使用持续内存模糊测试功能来提升黑盒模糊测试的性能。在这个模式下,你可以控制Manul对特定的函数进行测试,并通过取消下列代码行注释来实现循环执行:dbi_persistence_mode = 1

dbi_target_module = afl_test

dbi_target_method = open_file

#dbi_target_offset = 0x3198 # optionally you can provide offset of this function instead of name

dbi_fuzz_iterations = 1000

winAFL的开发者对这种模式进行了非常详细的介绍,感兴趣的话大家可以点击【这里】了解更多。而Manul引用了winAFL中大部分指令库的代码,用来跟待测目标发送指令或进行通信。

编译DynamoRIO客户端代码

编译指令库,我们需要安装最新版本的DynamoRIO。指令库源代码可以在Manul主目录下的“dbi_clients_src”中找到。

64-bit Linuxcd dbi_clients_src

wget - download the latest DynamoRIO

tar xvf DynamoRIO-x86_64-X.XX.XXXX-X.tar.gz

mkdir client_64

cd client_64

cmake ../dr_cov/ -DDynamoRIO_DIR=/home/max/manul/dbi_clients_src/DynamoRIO-x86_64-Linux-X.XX.XXXX-X.tar.gz/cmake

Make

32-bit Linuxcd dbi_clients_src

wget - download the latest DynamoRIO

tar xvf DynamoRIO-x86_64-X.XX.XXXX-X.tar.gz

mkdir client_64

cd client_64

CFLAGS=-m32 CXXFLAGS=-m32 cmake ../dr_cov/ -DDynamoRIO_DIR=/home/max/manul/dbi_clients_src/DynamoRIO-i386-Linux-X.XX.XXXX-X.tar.gz/cmake

Make

在Windows下,需要安装Visual Studio(2017或2013),然后启动“VS20XX Cross Tools Command Prompt”,并运行下列命令:

64-bit Windowscd dbi_clients_src

mkdir client_64

cd client_64

cmake -G"Visual Studio 15 Win64" ..\dr_cov\ -DDynamoRIO_DIR=C:\Users\max\manul\dbi_clients_src\DynamoRIO-Windows-XXXX.XX.X.X\cmake

cmake --build . --config RelWithDebInfo (or just Debug if needed)

32-bit Windowscd dbi_clients_src

mkdir client_32

cd client_32

cmake -G"Visual Studio 15" ..\dr_cov\ -DDynamoRIO_DIR=C:\Users\max\manul\dbi_clients_src\DynamoRIO-Windows-XXXX.XX.X.X\cmake

cmake --build . --config RelWithDebInfo (or just Debug if needed)

工具命令行参数Example: python3 manul.py -i corpus -o out_dir -n 40 "target @@"

positional arguments:

target_binary  The target binary and options to be executed (don't forget to include quotes e.g. "target e @@").

optional arguments:

-h, --help     show this help message and exit

-n NFUZZERS    Number of parallel fuzzers

-s             Run dumb fuzzing (no code instrumentation)

-c CONFIG      Path to config file with additional options (see Configuration File Options section below)

-r             Restore previous session

Required parameters:

-i INPUT       Path to directory with initial corpus

-o OUTPUT      Path to output directory

状态视图

项目地址

*参考来源:mxmssh,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

并行网络测试软件,Manul:一款基于覆盖率引导的并行模糊测试工具相关推荐

  1. cpu针脚测试软件,Sandsifter:一款专门针对X86处理器的模糊测试工具

    前言 今天给大家介绍的是一款名叫Sandsifter的x86处理器模糊测试工具.该工具可以通过系统生成的机器码来搜索处理器指令集,并通过监控异常数据来审计x86处理器中的隐藏指令和硬件漏洞.Sands ...

  2. nmap 命令行执行错误_Unimap:一款基于Nmap实现的扫描速度提升工具

    Unimap Unimap是一款基于Nmap实现的扫描速度提升工具,我们只需要提供一个IP地址给Unimap,即使是大量数据,Unimap也能够以非常快的速度完成网络扫描.Unimap是"U ...

  3. 推荐一款基于docker部署的个人免费笔记工具wiznote

    推荐一款基于docker部署的个人免费笔记工具wiznote 作为一个爱写作爱折腾的程序员,在做某个事情的时候,脑子里总是会联想并且不断蹦出各种奇怪的创意和想法,但是这些想法很多时候都是一闪而逝,事情 ...

  4. 小悦文件保险箱 - 一款基于DuiLib 库开发的文件加密工具

    小悦文件保险箱是一款基于DuiLib 库开发的文件加密工具. 作为学习型编程,所以免费供大家使用.它可以作为加密备忘录使用,也能够为任何文件提供加密保存功能.使用方法也非常简单,先输入密码创建一个自己 ...

  5. 基于TCP协议fuzz testing模糊测试案例分享

    1.模糊测试概念: 模糊测试 (fuzz testing, fuzzing)是一种软件测试技术.其核心思想是自动或半自动的生成随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion ...

  6. 他们从各大操作系统中发现了26个 USB 漏洞,用的是这款模糊测试工具

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 普渡大学的研究员 Hui Peng 和瑞士洛桑联邦理工学院的研究员 Mathias Payer 在多种操作系统(如 Linux.mac ...

  7. 基于uni-app的BLE低功耗蓝牙测试工具

    基于uni-app的BLE低功耗蓝牙测试工具 前言 开发环境:HBuilder X2.8.11,运行环境:微信小程序 本项目是从网上收集他人的源代码,经过测试.修改后的版本,在微信小程序上表现比较稳定 ...

  8. Go-Proxy-Checker,一款基于Go编写的高性能代理服务器验证工具

    简介 Go-Proxy-Checker是一款基于Go编写的高性能HTTP/HTTPS代理服务器验证工具 能够快速的验证你提供的代理列表中有哪些代理可用(是否高匿.是否支持HTTPS),仅需要简单的一条 ...

  9. 检测屏幕.html,15款html5响应式网站跨屏幕测试工具

    手机.平板灯手持设备的增多,网站要顺应变化,就必须要做响应式开发,响应式网站最大的特点在于可以在不同设备下呈现不同的布局,是基于html5+css3技术,目前越来越多的网站开始采用了响应式设计,而下面 ...

  10. 音响白噪音测试软件,精评丨以软件校正系统,Dr.Chol’s TEST LPCD唱片测试工具...

    原标题:精评丨以软件校正系统,Dr.Chol's TEST LP&CD唱片测试工具 影音器材,尤其是发烧立体声系统,都需要对系统进行一定的基本校正工作,如果没有一定的参照,很多商家把器材送到府 ...

最新文章

  1. 韩宇:如何准备天池深度学习比赛?
  2. android常见错误-Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
  3. 在VS中建立一个易于管理的C++工程
  4. Containerd迎来1.0通用版本
  5. Emmet使用-----HTML
  6. 微型计算机及接口技术笔记,微机原理与接口技术笔记(一)
  7. 产品经理经验谈100篇(二)-数据分析应用,如何构建指标体系?
  8. extjs 前后端分离_为什么我不喜欢「前后端分离」(个人观点,欢迎来喷)
  9. asp.net网站后台退出后,点后退按钮仍能进,如何安全退出
  10. Kubernetes 小白学习笔记(2)--基本概念2
  11. 云服务器怎么增加d盘_怎么租用美国云服务器比较便宜?
  12. 功能表单之智能选择字段类型的使用——JEPLUS软件快速开发平台
  13. 《无敌大冒险》技术支持
  14. 昂达v811v1 刷4.22d
  15. Vue的axios封装
  16. java报错establishing_[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket错误解决方法总结...
  17. 106、对待低优先级bug的可行方法
  18. 支配树(Dominator Tree)
  19. 《富爸爸穷爸爸》精髓:穷人思维和富人思维的区别
  20. RPGMV修炼手册2——RPGMV的部分窗口代码学习

热门文章

  1. 企业为什么需要EDI?
  2. 计算机网络软考英语题,计算机软考网络工程师必备英语词汇全集(中级)
  3. Oracle数据库优化的方法
  4. win10sas安装教程_Android Studio详细安装教程
  5. 机器学习模型训练全流程!
  6. win10远程桌面连接凭据怎么设置_如何解决Win10远程桌面提示你的凭证不工作?...
  7. MPLAB X IDE 用Pickit3烧录 提示“找不到目标器件。你必须连接一个目标器件来使用PICkit 3”,解决办法!
  8. 四年背的单词 笔记目录
  9. ios android混合开发框架,iOS基于Cordova框架的混合开发
  10. unity点击按钮跳转页面