使用Facedancer21进行USB模糊测试

参考文章:微信:Facedancer21-从0开始的USB口模糊测试

在做IOT网络安全测试的时候要经常需要用到USB模糊测试的工具,Facedancer21是一个非常经典的支持硬件USB模拟和测试工具,得益于其全部开源的特点,用户可以自行打样硬件和使用软件

一、硬件购买

这个硬件在国内还是比较少有的,博主也是在闲鱼上收的

二、刷写固件

固件刷写的话可以需要具备python2环境,这里使用kali-linux进行操作

使用Tpye-C的数据线连接电脑,输入lsusb,如果存在类似Bus 007 Device 013: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC的提示就可以说明设备已经识别到了facedancer21,如果没有显示的话就输入ls /dev/ttyUSB*查看是否有显示设备

sudo su
mkdir ~/svn
cd ~/svn
git clone https://github.com/travisgoodspeed/goodfet goodfet
cd goodfet/client
sudo make link
ShellScript
export board=facedancer21
pip2 install pyserial
ShellScript
cd ~/svn/goodfet/firmware/prebuilt
board=facedancer21 goodfet.bsl -e -p facedancer21.hex
ShellScript

当最后提示”5374 bytes programmed.”说明固件刷写成功了,等待一会就会正常启动了

goodfet.monitor listapps full
ShellScript

如果有固件信息提示说明固件刷写成功

三、使用umap2进行设备模拟和fuzz

umap2可以支持调用facedancer21进行USB设备模拟和fuzz输入,这个工具大部分操作是支持python3的,但是模糊测试部分的脚本只能使用python2,因此建议只使用python2打开

#安装依赖
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.py
ShellScript

可以输入umap2list来测试是否安装成功,如果显示/dev/ttyUSB0没有权限的话可以临时手动设定权限来运行sudo chmod 777 /dev/ttyUSB0

umap2有几个命令可以使用,详细用法可以参考Github,建议使用root权限运行,避免其他BUG

这个命令可以显示umap2支持的设备列表,目前支持下列几类设备的模拟和fuzz

扫描主机支持的USB设备类型

umap2scan -P fd:/dev/ttyUSB0
ShellScript

还可以使用特定厂商设备的USB扫描,下载git源码后在data/vid_pid_db.py有部分设备的 vid-pid 号,也可以自己手动添加模拟设备

umap2vsscan -P fd:/dev/ttyUSB0 -d $UMAP2_DIR/data/vid_pid_db.py
ShellScript

甚至可以扫描特定的 vid-pid 范围,遍历从1001-1004到0000-ffff的vid-pid设备号

umap2vsscan -P fd:/dev/ttyUSB0 -s 1001-1004:0000-ffff
ShellScript

用于模拟USB设备,列表可以在umap2list中查看

umap2emulate -P fd:/dev/ttyUSB0 -C mass_storage
ShellScript

对于大容量存储Mass Storage ,需要在运行目录存在一个stick.img的磁盘镜像文件;

可以使用下面命令创建一个stick.img镜像

dd if=/dev/zero of=stick.img bs=1M count=100
ShellScript

对于MTP,需要在运行命令下创建一个mtp_fs的文件夹,并且需要pymtpdevice

pip2 install git+https://github.com/BinyaminSharet/Mtp.git#egg=pymtpdevice
ShellScript

umap2模糊测试请务必使用python2来运行,使用fuzz之前建议先使用umap2scan扫描出来设备可支持的USB来进行有效模拟

用于获取设备协商和通讯流程,因为不同设备的协商和通讯过程可能会有不同

umap2stages -P fd:/dev/ttyUSB0 -C keyboard -s keyboard.stages
ShellScript

这里是模拟键盘设备,并且导出keyboard.stages文件,不同设备的.stages会不同,不能跨设备使用

# 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,大于100
ShellScript

如何还有更多的定制化设置请使用umap2kitty -k "--help"参考

再开一个新的终端,输入下列命令启动fuzz

umap2fuzz -P fd:/dev/ttyUSB0 -C keyboard
ShellScript

输入后就可以访问http://localhost:26000即可访问Web页面

四、使用官方模拟功能

待攻关

五、使用facedancer框架

待攻关

六、Hydradancer

待攻关


📌 本文由 FishBoss_Tca 原创,转载请注明作者和原文链接。
原文链接:https://www.ytca.top/hack/iotsec/2302/

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇