Facedancer21-从0开始的USB口模糊测试

民生   2024-07-19 10:07   海南  

先说结论:

很荣幸,在微薄的薪水靠爱发电支撑下,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 ~/svncd ~/svngit clone https://github.com/travisgoodspeed/goodfet goodfetcd goodfet/clientsudo make link
export board=facedancer21pip2 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 facedancerexport 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

道玄网安驿站
本号主推OSCP,vulnhub,车联网,红蓝对抗,挖洞,网络新闻等网络安全信息,喜欢的可以关注
 最新文章