本篇文章为IOT Fuzzing的开篇,这里主要讲解一下IOT中常用的Fuzzing框架,后续篇章将针对具体框架进行深入讲解与分析
0x01.什么是Fuzzing?
Fuzz本意是“羽毛、细小的毛发、使模糊、变得模糊”,后来用在软件测试领域,中文一般指“模糊测试”,英文有的叫“Fuzzing”,有的叫“Fuzz Testing”
0x02.Fuzzing有用么?
Fuzzing是模糊测试,顾名思义,意味着测试用例是不确定的、模糊的
使用Fuzzing的主要原因可分为如下几点:
-
无法穷举所有的输入作为测试用例
-
无法想到所有可能的异常场景
-
应该代码量复杂,逆向分析复杂
0x03.Fuzzing框架
#固件层Fuzzing框架
1. AFL:
github:https://github.com/google/AFL
-
AFL(American Fuzzy Lop)是由安全研究员Michał Zalewski(@lcamtuf)开发的一款基于覆盖引导(Coverage-guided)的模糊测试工具,它通过记录输入样本的代码覆盖率,从而调整输入样本以提高覆盖率,增加发现漏洞的概率
-
通过AFL QEMU可完成对无源码固件的Fuzzing测试
-
通过AFL Unicorn可完成对固件的二进制程序的Fuzzing测试
2. AFL++:
github:https://github.com/AFLplusplus/AFLplusplus
-
AFL++ 是 Google 的 AFL 的高级分支——更快的速度、更多更好的突变、更多更好的仪器、自定义模块支持等
-
AFL++的qemu模式可完成对无源码固件的Fuzzing测试,目前还不支持MIPS
3. FIRM-AFL
github:https://github.com/zyw-200/FirmAFL
-
FIRM-AFL 是第一个用于物联网固件的高吞吐量灰盒模糊器。FIRM-AFL 解决了物联网模糊测试中的两个基本问题。首先,它通过对可以在系统模拟器中模拟的 POSIX 兼容固件启用模糊测试来解决兼容性问题。其次,它使用一种称为“增强过程仿真”的新技术解决了由系统模式仿真引起的性能瓶颈。通过以一种新颖的方式结合系统模式仿真和用户模式仿真,增强过程仿真提供了系统模式仿真的高兼容性和用户模式仿真的高吞吐量
-
FIRM-AFL在基于fimadyne生成的模拟固件的基础进行Fuzzing测试
#协议层Fuzzing框架
1.Boofuzz
github:https://github.com/jtpereyda/boofuzz
-
Boofuzz 是古老的[Sulley](https://github.com/OpenRCE/sulley)模糊测试框架的一个分支和继承者。除了众多错误修复外,boofuzz 还旨在实现可扩展性。
-
通过Boofuzz可完成对协议的Fuzzing测试
2.SweynTooth
github:https://github.com/Matheus-Garbelini/sweyntooth_bluetooth_low_energy_attacks
-
一个系统而全面的测试框架,可以有效地模糊测试 BLE 协议
3.expliot
gitlab:https://gitlab.com/expliot_framework/expliot
-
用于安全测试和利用物联网产品和物联网基础设施的框架
-
使用Fuzzer模块可完成Fuzzing测试
0x04.小结
IOT Fuzzing的开篇到此就要结束了,本篇主要简单的介绍了几个Fuzzing框架。后续的文章中,将会拿真实的案例结合Fuzzing框架讲解固件层和协议层的Fuzzing测试,并将搭建及测试过程中的踩坑,也会一并写出,帮助大家减少搭建及测试过程中的问题,使大家能够全身心的投入到Fuzzing测试中。
最后,希望大家看完本系列文章能够有所收获。
官网 |
www.xinruisec.com
社区 |
www.iotsec-zone.com
原文始发于微信公众号(IOTsec Zone):IOT常见Fuzzing框架(一)