先说结论:
很荣幸,在微薄的薪水靠爱发电支撑下,facedancer21的制作流程打通了,可以批量低成本制造。国内可公开信息看,我应该是第一个复刻成功的。
捷配打样(表扬一下,一个月两次免费打样)->确认设计->材料采购->委托焊接->固件烧录->问题分析->确认批量
缘由
前些年是没关注facedancer21这个东西,也用不上,直到在车联网安全行业的接触,才了解到usb口的模糊测试工具。
国内外现状
随着各大车企业降本增效,上到人力,下到技术也可以降本。国内针对此款工具依靠单纯的海外采购。替代方案也有,价格也是比较贵,所以开始寻思能不能自己动手。
国外有多种设备支持usb口模糊测试工具,但考虑到费用问题(国外成品facedancer21至少$120。失效的官网也是$80+),选择一个经济方案。
过程
第一次采购五套材料
焊接完成,三片只有一片好的,其中两片始终无法驱动,怀疑是芯片问题,故而对芯片卖家进行battle。又换了一家pcb商让他们采购。
后面在某个地方卖,发现有人想买坏的,就给到他了,极低的价格,一块板子的成本,给了他两块(后面这师傅给我反馈了是连锡导致的。)
此次操作合计花了大约1244+RMB,一片成品成本在160+不含快递费。如果需求量多(5pcs+),可以多造几块免费的板子,上钢网,上锡膏,上热风枪。
食用指南
1、python环境
需要python2 的pip安装一些库
python3 同样也需要用于一些脚本运行
2、到手刷固件
烧录环境:Ubuntu 22.04.4 LTS x86_64
https://goodfet.sourceforge.net/tutorial/
首先查看设备是否能被系统识别到
一般是
ttyUSB0
然后开始后续准备: 后面切到root用户
mkdir ~/svn
cd ~/svn
git clone https://github.com/travisgoodspeed/goodfet goodfet
cd goodfet/client
sudo make link
export board=facedancer21
pip2 install pyserial
下面就开始刷固件,刷固件有两种方式,建议都学一下(以下都是在root下执行的):
刷固件:在线
goodfet.bsl --fromweb
注意:你可能需要代理访问目标站点,否则会出现timeout错误
proxychains4 goodfet.bsl--fromweb
固件烧录完成
刷固件:离线
board=facedancer21 goodfet.bsl -e -p facedancer21.hex
3、使用
board=facedancer21 goodfet.monitor test
goodfet.monitor listapps full
软件支持:
https://github.com/greatscottgadgets/facedancer
git clone https://github.com/greatscottgadgets/facedancer.git
pip install facedancer
export BACKEND=goodfet
最优脚本:
https://github.com/nccgroup/umap2
适合人群及功能
模拟存储设备,模拟HID,模拟各类设备。
https://github.com/nccgroup/umap2
-
numap-emulate——USB 设备模拟
-
numap-scan– USB 主机扫描以获取设备支持
-
numap-detect– USB 主机操作系统检测(尚未实现)
-
numap-fuzz– USB 主机模糊测试
Umap2 是 NCC Group 基于 python 的 USB 主机安全评估工具的第二次修订版。
此次修订将具有第一次修订中支持的所有功能:
-
umap2emulate——USB 设备模拟
-
umap2scan– USB 主机扫描以获取设备支持
-
umap2detect– USB 主机操作系统检测(尚未实现)
-
umap2fuzz ——USB 主机模糊测试
在此修订版中将有一些附加功能:
-
USB 主机模糊测试使用 kitty 作为模糊测试引擎
-
Umap2 不仅包含可执行脚本,还可以作为包安装,并可用作库
你可能需要知道umap2 fuzz时候的问题:https://github.com/nccgroup/umap2/issues/28
目前的问题
一些个脚本跑着会出错,大致分几类:
1、缺少某个img 比如stick.img 你可以在
寻到
2、没有mtp_fs目录(MTP问题看git说明)
你需要创建mtp_fs目录
3、环境问题
慢慢磨
后续计划
网上已经有优化好的PCB,走线更舒适,元器件没变,直接用他的文件打就行,目前不打算折腾了。
https://github.com/bvernoux/facedancer
原文始发于微信公众号(网络安全知事):Facedancer21-从0开始的USB口模糊测试