利用Phison 2303 (2251-03)的主控U盘制作BadUSB

by LauCyun Apr 19,2018 01:39:38 33,342 views

在2014年美国Black Heart上,柏林SRLabs的安全研究人员JakobLell和独立安全研究人员Karsten Nohl展示了他们称为BadUSB的攻击方法,这种攻击方法让USB安全和几乎所有和USB相关的设备(包括具有USB端口的电脑)都陷入相当危险的状态。

0x00 背景

BadUSB的原理介绍,请移步至www.freebuf.com/articles/terminal/53886.html

从而得知,BadUSB最可怕的一点是恶意代码存在于U盘的固件中,由于PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法应对BadUSB进行攻击。

那么,要制作BadUSB有两个核心:

  • 能为USB设备编写相应的固件
  • 能将编写的固件烧录到USB设备中

要编写相应的固件就需要掌握USB设备中微控制器(或者说芯片)的指令规范文档(如果Intel不提供开发文档,那么除了Intel自己没有人能为Intel处理器编写程序)。而要将固件烧录到USB设备中,要么使用相应的硬件编程器,要么就需要USB设备本身已经存在的Bootloader来辅助进行烧录工作(Bootloader是USB设备厂商在生产时就放在USB设备中的,网上某些优盘的优盘量产工具也是从厂商流出的,而不是第三方编写的)。要同时满足两个核心条件比较难的,即便是JakobLell和Karsten Nohl公布的BadUSB利用代码也是针对满足一定条件的优盘。

0x01 准备

上面,要同时满足两个核心条件比较难的,BadUSB现在有很多成熟的产品(USB RUBBER DUCKY、烧鹅、等),但是他们要么贵、要么买不着,所以用Psychson来制作BadUSB。

Psychson只支持Phison 2303 (2251-03)的芯片的U盘,具体如下:

  • Kingston DataTraveler 3.0 T111 8GB
  • Silicon power marvel M60 64GB
  • Toshiba TransMemory-MX™ Black 16 GB
  • Patriot Stellar 64 Gb Phison
  • Silicon Power32G
  • Sandisk Ultra 16GB USB 3.0

OK,开始准备如下:

先用检测工具(Flash Drive Information Extractor v9.0.0.612)检查一下U盘的主控是否为Phison 2303 (2251-03),如图2所示:


图2 U盘信息

0x02 制作

1. 编译Psychson

用VS2012编译Psychson\DriveComPsychson\EmbedPayloadPsychson\Injector,如图3所示:


图3 编译生成Psychson


图4 编译DriveCom成功

当看到图4即为编译成功,全部编译完成后,工具会自动生成在tools目录下,如图5所示:


图5 Psychson工具

2. 准备攻击Payload

https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads获取到需要使用的攻击命令,这里使用的是Payload - Hello World

DELAY 3000
GUI r
DELAY 500
STRING notepad
DELAY 500
ENTER
DELAY 750
STRING Hello World!!!
ENTER

使用USB-Rubber-Ducky中的Encoder\encoder.jar加工成.bin文件,命令如下:

java -jar ..\USB-Rubber-Ducky\Encoder\encoder.jar -i injector.txt -o injector.bin


图6 Encoder Payload

3. 嵌入Payload至固件

先执行Psychson\firmware中的build.bat编译生成FW固件,如图7所示:


图7 生成固件

执行完后,会在firmware生成bin文件夹,如图8所示:


图8 生成的固件

然后将攻击Payloadinjector.bin嵌入到firmware\bin\fw.bin中,命令如下:

tools\EmbedPayload.exe injector.bin firmware\bin\fw.bin


图9 将攻击Payload嵌入固件

哦对了,还得解压firmware_ps2251-03.rar,把BN03V104M.BIN拷贝至Psychson目录下。

4. 备份固件

在写入之前,先备份一下U盘的固件,命令如下:

tools\DriveCom.exe /drive=D /action=SetBootMode # 设置U盘的BOOT模式
tools\DriveCom.exe /drive=D /action=SendExecutable /burner=BN03V104M.BIN
tools\DriveCom.exe /drive=D /action=DumpFirmware /burner=BN03V104M.BIN /firmware=fw-backup.bin # 刷入固件跟载荷


图10 备份固件

如果U盘的指示灯将亮起并保持亮起,则说明进入BOOT模式。

如果从软件进入不了BOOT模式,则可以拆开U盘使用短接(短接小圆点斜对面的针脚2和3)的办法来设置(在插入U盘时),如图11所示:

图11 从硬件进入BOOT模式

ok,万事具备,只欠写入了~~

5. 写入固件

写入固件的命令如下:

tools\DriveCom.exe /drive=D /action=SetBootMode
tools\DriveCom.exe /drive=D /action=SendExecutable /burner=BN03V104M.BIN
tools\DriveCom.exe /drive=D /action=SendFirmware /burner=BN03V104M.BIN /firmware=firmware\bin\fw.bin


图12 写入固件

这样咱们的邪恶小U盘就制作完成了~~

0x03 恢复出厂固件

如果你已经刷坏,请先在不插电脑时短接住芯片上圆点斜对面的最外两个针脚,然后使用MPALL工具重写刷一遍备份固件就恢复U盘了。

具体可以参考:http://www.usbdev.ru/articles/a_phison/mpall-repair

下载和解压Phison_MPALL_v3.63.0D_for_Netac.rar,请先在不插电脑时短接住芯片上圆点斜对面的最外两个针脚,然后启动MPALL_F1_EC00_v363_0D.exe,如图13所示:


图13  MPALL界面

如果没显示,多点几次Update按钮。

然后点击Setting按钮进行设置,如图14所示:


图14 MPALL设置类型

在出现的“Setting Type”窗口中,选择Basic Setting > Load Last Setting,然后单击OK

接下来就是设置恢复固件的信息了,具体如图15所示:


图15 设置恢复固件信息

其中,Burner File 推荐使用BN03V104.BIN,Fireware File推荐使用FW03FF01V10053M.BIN

保存后,点击Start即可开始恢复固件了,其过程如图16所示:


图16 恢复固件

几分钟后,恢复完毕~~又变成了一个正常的U盘了,可以继续搞事情啦~~

0x04 演示

最后,来测试一下刚才制作的BadUSB,如图17所示:


图17 演示BadUSB

OK,利用Phison 2303 (2251-03)的主控U盘制作BadUSB就介绍完了~~

小伙子们,开始躁动起来吧~~

0x05 参考

Tags