zoukankan      html  css  js  c++  java
  • 针对基于Phison(群联)U盘的BadUSB攻击

    修改U盘固件使之在插入电脑时能执行键盘指令。原文和源码在此,粗略翻译了一下。https://github.com/adamcaudill/Psychson

    其实还有类似的成品卖,叫做USB Rubber Ducky :http://192.64.85.110/

    ——————以下是翻译——————

    Phison 2251-03 (2303) 自定义固件 & 固件打补丁

    这个库包含以下项目:

    • DriveCom -- 一个PC上的C# 程序,用来与基于Phison主控的设备连接。

    • EmbedPayload -- 一个PC上的C# 程序,将 Rubber Ducky inject.bin key scripts嵌入到定制的firmware,使之在设备上工作。

    • Injector -- 一个PC上的C# 程序,用来从固件中提取 addresses/equates以及在固件上打补丁代码。

    • firmware -- 用C语言写的8051自定义固件。

    • patch -- 用C语言写的8051补丁代码。

    发布了以下各项目:

    • patch -- 用C语言写的8051补丁代码。

    • tools -- 这是所需工具。皆为编译过的二进制文件。

    • CFW.bin -- 这个自定义固件的作用是发送预设的键盘指令。

    请注意,这个固件的补丁仅针对PS2251-03 ,固件版本1.03.53(就是那个8K eD3 NAND flash chip)。其他设备有可能会运行。

    只要你用了正确的固件镜像使之与控制器版本、NAND 芯片适配,在降级为早期版本的时候不会有什么损害。 (比如 1.10.53).

    注意: 这是实验性质的软件,无论用在不支持的设备还是支持的设备上面,都有可能造成数据丢失,乃至对 设备造成永久损坏。请自负风险。

    1.开始

    查看 Known Supported Devices ,获知所支持的设备。对不被支持的设备进行操作的话可能会造成永久损坏。

    开始之前,我们应该去弄一个烧录器镜像,就是8051的可执行文件。它应该被写入设备的FLASH芯片中。

    浏览 Obtaining a Burner Image 获得更多信息。

    2.构建编译环境

    在修改当前的固件之前,你必须要设置好编译环境。

    浏览 Setting Up the Environment 获得更多信息。在最小安装模式下,SDCC 需要被安装在 C:Program FilesSDCC.

    3.读出固件

    运行DriveCom, 通过盘符来选择想要写入的盘,以及烧录器镜像的路径和存放固件的路径:

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

    如果盘符为E,BN03V104M.BIN 就是烧录器的镜像,fw.bin就是读出来的固件镜像。

    目前只有 大小为200KB 固件镜像能被读出。(这也说明了为何要用 Patriot 8GB Supersonic Xpress 这个U盘)。

    4.装入固件

    运行DriveCom, 通过盘符来选择想要写入的盘,以及烧录器镜像的路径和(存放?)固件的路径:

    toolsDriveCom.exe /drive=E /action=SendFirmware /burner=BN03V104M.BIN /firmware=fw.bin

    如果盘符为E,BN03V104M.BIN 就是烧录器的镜像,fw.bin就是要写入的固件镜像。

    5.测试Demo 1 (HID Payload)

    Rubber Ducky format创建一个 key script,然后用Duckencoder 创建 inject.bin ,如下所示:

    java -jar duckencoder.java -i keys.txt -o inject.bin

    其中 keys.txt 就是key script的路径。

    你可能会注意到在Rubber Ducky与drive二者的延迟并不完全相同,可以通过调整script来补偿。

    (工具来自 https://code.google.com/p/ducky-decode/.)

    生成 inject.bin 以后,按以下操作来将其嵌入到定制化的固件中:

    copy CFW.bin hid.bintoolsEmbedPayload.exe inject.bin hid.bin

     上文Inject.bin的路径设置为刚才生成 inject.bin 文件的路径, hid.bin 是 HID payload固件的路径。

    (Notice that the firmware image is copied, and the payload is embedded into the copy -- 因为payload 只能被嵌入一次, 所以原来的 CFW.bin 必须保持完整.)

    现在可以将固件写入设备:

    toolsDriveCom.exe /drive=E /action=SendFirmware /burner=BN03V104M.BIN /firmware=hid.bin

    如果目标盘符为E,BN03V104M.BIN就是烧录器镜像,hid.bin就是 HID payload 固件。

    Huge thanks to the Hak5 team for their work on the excellent USB Rubber Ducky!

  • 相关阅读:
    《代码整洁之道》阅读笔记(三)
    pyqt5知识
    软件开发的生命周期
    软件过程与管理CMMI
    pyQt5练习(三)
    pyQt5练习(二)
    《代码整洁之道》阅读笔记(二)
    pyQt5练习(一)
    Android Studio错误:Connect to 127.0.0.1:1080 [/127.0.0.1] failed: Connection refused: connect
    AndroidStudio:Minimum supported Gradle version is XXX Current version is XXX
  • 原文地址:https://www.cnblogs.com/codex/p/4051821.html
Copyright © 2011-2022 走看看