freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Radamsa:一款高性能通用模糊测试工具
Alpha_h4ck 2024-07-29 10:26:41 103169

关于Radamsa

Radamsa是一款高性能的通用模糊测试工具,广大研究人员可以将其当作一个应用程序稳定性测试的测试用例生成工具。

工具运行机制

该工具使用简单,支持自定义脚本开发,可以用于测试程序对格式错误和潜在恶意输入的承受能力。它的工作原理是读取有效数据的示例文件并从中生成有趣的不同输出。

Radamsa旨在成为适用于所有类型数据的通用模糊测试工具。其目标是无论程序处理哪种数据(无论是xml还是mp3),都能发现问题,反之,如果找不到错误,则意味着其他类似工具可能也找不到。这是通过各种启发式方法和更改模式来实现的,这些方法和模式在测试过程中会发生变化。

Radamsa是一种基于黑盒测试技术的模糊测试工具,因此它不需要任何有关目标应用程序或数据格式的相关信息。在测试期间,可以将其与覆盖率分析配对,以在连续测试运行期间提高样本集的质量。

工具要求

支持的操作系统

GNU/Linux

OpenBSD

FreeBSD

Mac OS X

Windows(使用Cygwin)

软件要求

gcc / clang

make

git

wget

工具安装

$ git clone https://gitlab.com/akihe/radamsa.git

 $ cd radamsa

 $ make

 $ sudo make install # optional, you can also just grab bin/radamsa

 $ radamsa --help

Radamsa本身只是一个二进制文件,没有外部依赖项,我们可以将其移动到任意位置并删除其余部分。

工具使用

使用Radamsa对通过管道的数据执行模糊测试:

$ echo "aaa" | radamsa

 aaaa

这里Radamsa决定在输入中添加一个“a”,然后再试一次:

$ echo "aaa" | radamsa

 :aaa

默认情况下,如果未指定特定的随机状态,Radamsa将从 /dev/urandom 中获取随机种子,并且每次启动时通常都会看到不同的结果,但对于较小的输入,可能会经常看到相同的结果或原始结果。可以使用 -s 参数指定要使用的随机状态,该参数后跟一个数字。需要注意的是,使用相同的随机状态将导致生成相同的数据:

$ echo "Fuzztron 2000" | radamsa --seed 4

 Fuzztron 4294967296

我们还可以使用 -n 参数生成多个输出,如下所示:

$ echo "1 + (2 + (3 + 4))" | radamsa --seed 12 -n 4

 1 + (2 + (2 + (3 + 4?)

 1 + (2 + (3 +?4))

 18446744073709551615 + 4)))

 1 + (2 + (3 + 170141183460469231731687303715884105727))

工具无法保证所有的输出都是唯一的,但相同的输出结果情况还是很罕见的。

现在,我们已经拿到了测试用例,接下来就可以将其输入到待测应用程序中了:

$ echo "100 * (1 + (2 / 3))" | radamsa -n 10000 | bc

 [...]

 (standard_in) 1418: illegal character: ^_

 (standard_in) 1422: syntax error

 (standard_in) 1424: syntax error

 (standard_in) 1424: memory exhausted

 [hang]

或者测试用于编译Radamsa的编译器:

$ echo '((lambda (x) (+ x 1)) #x124214214)' | radamsa -n 10000 | ol

 [...]

 > What is 'ó µ'?

 4901126677

 > $

或测试gzip:

$ gzip -c /bin/bash | radamsa -n 1000 | gzip -d > /dev/null

我们还可以加入无限循环执行测试:

$ gzip -c /bin/bash > sample.gz

 $ while true; do radamsa sample.gz | gzip -d > /dev/null; done

输出选项

-o参数

意义

示例

:port

充当给定端口的 TCP 服务器

# radamsa -o :80 -n inf samples/*.http-resp

ip:port

作为 TCP 客户端连接到 ip 端口

$ radamsa -o 127.0.0.1:80 -n inf samples/*.http-req

-

写入stdout

$ radamsa -o - samples/*.vt100

path

写入文件,%n 是测试用例 #,%s 是第一个后缀

$ radamsa -o test-%n.%s -n 100 samples/*.foo

许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

Radamsa:【GitHub传送门

参考资料

http://www.gnu.org/software/gdb/

http://valgrind.org/

http://code.google.com/p/address-sanitizer/wiki/AddressSanitizer

http://sourceforge.net/projects/strace/

http://www.circlemud.org/~jelson/software/tcpflow/

http://lcamtuf.coredump.cx/afl/

http://caca.zoy.org/wiki/zzuf

http://code.google.com/p/bunny-the-fuzzer/

http://peachfuzzer.com/

http://code.google.com/p/sulley/

# 模糊测试 # 安全测试 # Fuzzer # Web模糊测试 # 模糊测试工具
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Alpha_h4ck 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Alpha_h4ck LV.10
好好学习,天天向上
  • 2359 文章数
  • 1023 关注者
Tetragon:一款基于eBPF的运行时环境安全监控工具
2025-01-21
DroneXtract:一款针对无人机的网络安全数字取证工具
2025-01-21
CNAPPgoat:一款针对云环境的安全实践靶场
2025-01-21
文章目录