简介java
因为“Bad USB漏洞”的存在,USB闪存驱动器也成了常见的攻击目标。Bad-USB让黑客能够从新编程微控器做为一个“人机界面装置”(HID)或键盘,而后在目标机器上执行自定义键盘敲击。这种状况一般被称为“HID Payload攻击”,因为你须要向BadUSB上交你的脚本用于执行(稍后咱们还会有更为详细的讨论)。尽管几乎全部的USB闪存驱动器均可以执行漏洞利用,可是从新编程“群联(Phison)”微控制器的惟一方式已经公开了。git
本教程中咱们将改造USB闪存驱动器的微控制器,使用发布于github上面的源代码进行编译,并构建一个带有内置HID负载的自定义固件,而后把咱们无邪的USB变成一个用于咱们入侵受害者设备的恶意键盘。github
整个过程有点像对你的安卓设备进行编译和清除。:P编程
准备工做windows
· 咱们须要在win环境下工做 · 咱们须要一个带有Phison 2303(2251-03)微处理器的USB 3.0闪存驱动器 教程中,我会使用“Toshiba TransMemory-MX USB 3.0 8GB”,东芝,8GB。 · 肯定你能在不损害USB的状况下打开它。个人一个朋友因为太草率,彻底按照字面意思锯断了他的USB。详情能够阅读“将咱们设备设置为手动‘启动模式’”。
小笔记:工具
·你可以在github找到可支持的设备名单。 有时候拥有一台名单中的可支持设备,并不意味着必定使用了PS2251-03。即便是同一台设备模型,制造商也可能使用不一样的控制器。 ·请你继续本身的冒险,尽管并无办法保证你的设备以后仍然能够工做。理论上,出现任何问题都是不科学的。
改造U盘的微控制器布局
开始以前,先肯定一下咱们的U盘使用的是可支持控制器。咱们能够用一个叫作“闪存驱动器信息提取器”的程序,收集关于U盘的必要信息。网站
并不须要任何安装。只要将Upan插到电脑上,而后打开工具点击“获取U盘信息”按钮。若是你的驱动器使用的是Phison2303(2251-03)控制器,输出应该以下:ui
可是,若是你的U盘不一样,它便很是有可能没法使用exp从新编程为HID设备。我建议在github上找到可支持设备,而后再购买一个便可。spa
开始构建环境
代码开发者推荐咱们使用任意版本或者更高级的“Microsoft Visual Studio 2012”来编译工具,SDCC用于构建自定义固件。
Visual Studio 下载可能须要好几个小时,中间不能停顿,所以你须要保证本身加油足够的时间。使人略烦的一点是,它会在你的主要驱动器上占据好几个G的空间,在个人SSD上占了约10GB。
下载及编译源代码
为了定制U盘,咱们须要构建与之交互的工具。可使用adamcaudill发表于Github上的源代码。
实际上,Visual Studio(简称VS)提供了一个简洁的功能,让咱们复制了整个储存库。你甚至可能从github站点与VS进行交互:
在复制和打开存储库以后,你极可能看到三个解决方案:
· DriveCom
· EmbedPayload
· Injector
咱们只须要“DriveCom”和“EmbedPayload”,若是你可以经过如下进行编译:
Ctrl + Shift + B
或者
Menu bar - Build - Build Solution
若是你没法经过VS复制存储库,从github下载.zip文件并打开每一个解决方案中的.sln文件。
如今,DriveCom和EmbedPayload应该在…\Psychson\tools目录中。
E:\Documents\Bad_USB\Psychson\tools DriveCom and EmbedPayload should be in the ...\Psychson\tools directory now: E:\Documents\Bad_USB\Psychson\tools
获取一个Burner Image
一个“Burner Image”是在你的设备上倾倒与刷新固件所需。它们一般使用“BNxxVyyyz.BIN”规则来命名。用于Phison控制器的Burner Image能够在这里找到。
即便这个网站仅仅在俄罗斯可用也没关系,若是你扫描“BN03”站点,你便会找到下载连接。BN意味着“Burner Image”,而03与PS2251-03对应。下面即是我提取的文件:
E:\Documents\BadUSB\Burner_Image\。
每一个Burner Image应该完成这个工做,但你可以使用最新版本——由名称的一部分“Vyyy”来表示的。
下载Duck Encoder
“Duck Encoder”是基于Java平台的工具,能够将脚本转化为HID负载。这个是创建于黑客Hak5发开的、被称为“Rubber Ducky”的Bad-USD。你能够从这里下载到(不要忘记安装Java)。我将其保存在 E:\Documents\Bad_USB\DuckEncoder\。
创建自定义固件
目前,咱们全部的准备工做已经完成,如今咱们能够开始使用工具了。在这一步咱们只须要进入咱们的…\Psychson\firmware\存储库而后运行build.bat。若是一切顺利,你即可以看到一个里面带许多不一样文件的新文件夹。
fw.bin是咱们接下来会用到的文件。
写一个脚本
你可能会问本身咱们须要使用哪一种语言写脚本。因为DuckEncoder是基于“Rubber Ducky”的,所以咱们使用“Duckyscript”语音。语法很简单,更详细的说明在这里。
咱们须要在咱们喜欢的目录中建立一个.txt文件:
E:\Documents\Bad_USB\DuckEncoder\script.txt
我在这里为大家展现一个比“Hello World”还要有趣的脚本:
你可能在想,Bad U盘会“按下”windows + r,而后这个脚本形成windows当即关闭。此外,你能够很清楚的发现我写的是“/”而不是“-”。这是由于咱们的“键盘”Bad-U盘有一个美国版本,并且在这里windows被设置为德语。记住这点,咱们必须变动windows布局为美式,而后咱们就能够平时同样地写脚本,而不须要为输入方式而困惑。
你甚至可使用自定义脚本,而后在这里进行一些逆向工程。
转换为HID负载
如今是时候开始使用windows终端-cmd。
java -jar "PATH to \duckencode.jar" -i "PATH to \script.txt"-o "\payload.bin Path"
例如:
java -jar E:\Documents\BadUSB\DuckEncoder\duckencode.jar -i E:\Documents\Bad_USB\DuckEncoder\script.txt -o E:\Documents\Bad_USB\DuckEncoder\inject.bin
咱们并不会获得任何输出,可是在个人示例当中应当在"E:\Documents\Bad_USB\DuckEncoder\" 中建立一个inject.bin
将有效负载嵌入固件
如今,咱们须要使用以前与VS一块儿构建的工具。显然EmbedPayload用于嵌入有效负载。咱们只须要在cmd中执行它便可:
"Path to EmbedPayload.exe" "PATH to payload" "PATH to the firmware we built"
个人示例当中:
E:\Documents\BadUSB\Psychson\tools\EmbedPayload.exe
E:\Documents\Bad_USB\DuckEncoder\inject.bin
E:\Documents\Bad_USB\Psychson\firmware\bin\fw.bin
这里须要注意如今fw.bin中包含了有效负载。你也能够经过再次执行build.bat覆盖固件。
清除当前U盘固件
我强烈建议你复制当前U盘中的固件,以防你从此想要恢复它。若是咱们想要采起任何行动来控制咱们的U盘,可使用“tools”工具文件夹中的DriveCom
"PATH to DriveCom.exe" /drive="Drive Letter of our USB" /action=DumpFirmware /burner="PATH to our burner image" /firmware="PATH of the output.bin"
个人示例当中:
E:\Documents\Bad_USB\Psychson-master\tools\DriveCom.exe /drive=F /action=DumpFirmware /burner=E:\Documents\Bad_USB\Firmware\BN03V117M.BIN /firmware=E:\Documents\Bad_USB\originalfw.bin
刷新固件
最后咱们能够将很是恶意的关闭负载嵌入咱们的U盘固件当中:
"PATH to DriveCom.exe" /drive="Drive Letter" /action=SendFirmware /burner="PATH to our burner image" /firmware="PATH to the firmware"
个人示例当中:
E:\Documents\BadUSB\Psychson\tools\DriveCom.exe /drive=F /action=SendFirmware /burner=E:\Documents\Bad_USB\Firmware\BN03V117M.BIN /firmware=E:\Documents\Bad_USB\Psychson\firmware\bin\fw.bin
一个成功的输出应该是这个样子:
DriveCom将咱们U盘切换成固件刷新自动启动模式。如今咱们的U盘变成了咱们没法切换模式的键盘,同时咱们也没法访问内存,但这仅仅是个小问题。在下一节中,我将着重讲述如何解决这个问题。
将设备设置为手动“启动模式”
若是你想用U盘采起进一步的行动,你会发现不管是DriveCom仍是Windows,任何操做系统都没法访问它,毕竟它只是一个键盘。咱们须要打开U盘,而后当咱们把U盘插在电脑的时候链接到两个微控制器的插针上。从上面这个角度看起来,我须要链接底部左边的两个插针:
我一般使用U盘连接器的边缘来链接这两个插针。在这种状况下,另外一个U盘延长线能够会很是有用。看起来或许很难,可是你会习惯的。使用任何你喜欢的工具,只要不伤害你的U盘便可。若是你作得正确,驱动便会再次出如今windows中:
而后咱们能够再次修改咱们的驱动或者清除原始固件。
若是很不幸,你的电脑关闭了,下次再努力试一下吧!
注释:
·Bad-USB不必定在每一个windows电脑上都适用,由于它可能没法加载驱动程序。
·请记住,当你的U盘伪装成HID设备时,你是没法访问内存的。
最后的想法
若是你拥有访问受害者电脑的权限,Bad-USB会是一个很是有用的工具,即便windows会在加载U盘的时候崩溃。此外,因为它是一个“键盘”而不是病毒,所以它逃过了AV检测。
若是你正在考虑找一个简单的借口将U盘插入您选择的电脑,请注意最好准备一个正常的U盘,万一你被抓住了,也能够轻松解围。
此外,感谢各位的阅读和提供的建设性反馈。若是发现任何问题,请及时让我知道。
参考