在做IOT网络安全测试的时候要经常需要用到USB模糊测试的工具,Facedancer21是一个非常经典的支持硬件USB模拟和测试工具,得益于其全部开源的特点,用户可以自行打样硬件和使用软件
一、硬件购买
这个硬件在国内还是比较少有的,博主也是在闲鱼上收的

二、刷写固件
固件刷写的话可以需要具备python2环境,这里使用kali-linux进行操作
1、检查系统是否识别了facedancer21
使用Tpye-C的数据线连接电脑,输入lsusb,如果存在类似Bus 007 Device 013: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC的提示就可以说明设备已经识别到了facedancer21,如果没有显示的话就输入ls /dev/ttyUSB*查看是否有显示设备
2、下载固件源码
sudo su
mkdir ~/svn
cd ~/svn
git clone https://github.com/travisgoodspeed/goodfet goodfet
cd goodfet/client
sudo make linkShellScript3、下载python依赖包
export board=facedancer21
pip2 install pyserialShellScript4、刷写固件
cd ~/svn/goodfet/firmware/prebuilt
board=facedancer21 goodfet.bsl -e -p facedancer21.hexShellScript当最后提示”5374 bytes programmed.”说明固件刷写成功了,等待一会就会正常启动了

5、测试固件是否刷写成功
goodfet.monitor listapps fullShellScript如果有固件信息提示说明固件刷写成功

三、使用umap2进行设备模拟和fuzz
umap2可以支持调用facedancer21进行USB设备模拟和fuzz输入,这个工具大部分操作是支持python3的,但是模糊测试部分的脚本只能使用python2,因此建议只使用python2打开
1、安装
#安装依赖
pip2 install setuptools
#安装umap2
pip2 install git+https://github.com/nccgroup/umap2.git#egg=umap2
#或者使用源码安装
#拉取源码
git clone https://github.com/nccgroup/umap2.git
cd umap2
#手动编译并安装
pip2 install .
#也可以仅编译运行
git clone https://github.com/nccgroup/umap2.git
cd umap2
python2 setup.py build
#应用都在build/lib/umap2/apps/下
python2 build/lib/umap2/apps/list_classes.pyShellScript可以输入umap2list来测试是否安装成功,如果显示/dev/ttyUSB0没有权限的话可以临时手动设定权限来运行sudo chmod 777 /dev/ttyUSB0
2、工具集
umap2有几个命令可以使用,详细用法可以参考Github,建议使用root权限运行,避免其他BUG
(1)、umap2list
这个命令可以显示umap2支持的设备列表,目前支持下列几类设备的模拟和fuzz

(3)、umap2scan
扫描主机支持的USB设备类型
umap2scan -P fd:/dev/ttyUSB0ShellScript还可以使用特定厂商设备的USB扫描,下载git源码后在data/vid_pid_db.py有部分设备的 vid-pid 号,也可以自己手动添加模拟设备
umap2vsscan -P fd:/dev/ttyUSB0 -d $UMAP2_DIR/data/vid_pid_db.pyShellScript甚至可以扫描特定的 vid-pid 范围,遍历从1001-1004到0000-ffff的vid-pid设备号
umap2vsscan -P fd:/dev/ttyUSB0 -s 1001-1004:0000-ffffShellScript(2)、umap2emulate
用于模拟USB设备,列表可以在umap2list中查看
umap2emulate -P fd:/dev/ttyUSB0 -C mass_storageShellScript- Mass Storage
对于大容量存储Mass Storage ,需要在运行目录存在一个stick.img的磁盘镜像文件;
可以使用下面命令创建一个stick.img镜像
dd if=/dev/zero of=stick.img bs=1M count=100ShellScript- MTP
对于MTP,需要在运行命令下创建一个mtp_fs的文件夹,并且需要pymtpdevice库
pip2 install git+https://github.com/BinyaminSharet/Mtp.git#egg=pymtpdeviceShellScript(4)、umap2fuzz模糊测试
①枚举可支持的USB设备
umap2模糊测试请务必使用python2来运行,使用fuzz之前建议先使用umap2scan扫描出来设备可支持的USB来进行有效模拟
②记录有效流程
用于获取设备协商和通讯流程,因为不同设备的协商和通讯过程可能会有不同
umap2stages -P fd:/dev/ttyUSB0 -C keyboard -s keyboard.stagesShellScript这里是模拟键盘设备,并且导出keyboard.stages文件,不同设备的.stages会不同,不能跨设备使用
③开启模糊测试后端kitty
# keyboard.stages 为umap2stages生成的文件
umap2kitty -s keyboard.stages
#可以手动指定字符输入的payload长度与范围,支持python语法
umap2kitty -s keyboard.stages -k "-t 1-5,7,9,100-"
#1,2,3,4,5,7,9,大于100ShellScript如何还有更多的定制化设置请使用umap2kitty -k "--help"参考
④启动模糊测试Web页面
再开一个新的终端,输入下列命令启动fuzz
umap2fuzz -P fd:/dev/ttyUSB0 -C keyboardShellScript输入后就可以访问http://localhost:26000即可访问Web页面

四、使用官方模拟功能
待攻关
五、使用facedancer框架
待攻关
六、Hydradancer
待攻关
📌 本文由 FishBoss_Tca 原创,转载请注明作者和原文链接。
原文链接:https://www.ytca.top/hack/iotsec/2302/



