BadUSB是什么
★
简单来讲,就是通过硬件直接插入目标设备,让目标设备执行代码,达到干扰、控制主机或者窃取信息等目的。属于一种HID攻击,全称Human Interface Device,看名字来讲,HID设备是直接与人交互的设备,例如鼠标,键盘,手柄等设备。
Teensy简介
★
为什么一个看起来像USB的设备,会具备攻击性呢?因为攻击者在定制这款设备时,会向设备中置入一个攻击芯片,此攻击芯片是一个非常小且功能完整的单片机系统,名字就是Teensy,通过这个攻击设备会模拟出键盘和鼠标等HID设备,当插入时,系统就会识别为一个HID设备,利用设备中的微处理器与储存空间和攻击代码,来控制主机。
Arduino简介
★
Arduino是一款便捷灵活、方便上手的开源电子原型平台;它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境;我们只需要在IDE中编写程序代码,将程序上传到Arduino电路板后,就可以让电路板做我们想做的事
实验环境
★
BadUSB硬件和[Arduino软件](https://www.arduino.cc/en/software)
实验过程
★
烧录过程
首先打开Arduino程序,然后选择工具,选择端口,选择BadUSB对应的端口
打开工具,选择开发板"Arduino Leonardo"
编辑脚本,实现反弹shell,烧录进去
void
setup
()
{
Keyboard.begin();
//开启键盘通讯
...
Keyboard.press(KEY_LEFT_GUI);
//按下win键
delay(
500
);
Keyboard.release(KEY_LEFT_GUI);
//释放win键
..
}
void
loop
()
{
// put your main code here, to run repeatedly:
}
arduino的语法并不复杂,setup函数主要是安装时运行的代码,loop函数为重复执行的代码。一般我们都写入到setup函数中。
参考[文章](https://wiki.arduino.cn/?file=011-USB%E9%A9%B1%E5%8A%A8%E5%BA%93/001-%E6%A8%A1%E6%8B%9F%E9%94%AE%E7%9B%98)模拟键盘代码的语法并不多,主要有:
1
.Keyboard
.begin
()
2
.Keyboard
.end
()
3
.Keyboard
.press
(
char
)
4
.Keyboard
()
5
.Keyboard
.println
()
6
.Keyboard
.release
()
7
.Keyboard
.releaseAll
()
8
.Keyboard
.write
()
arduino硬件虚拟键盘中对应键盘上的按键,参考[文章](https://blog.csdn.net/qq_41840148/article/details/104072033)
键盘左边ctrl
--- KEY_LEFT_CTRL
键盘左边shift
--- KEY_LEFT_SHIFT
键盘左边alt
--- KEY_LEFT_ALT
键盘左边win
--- KEY_LEFT_GUI
键盘右边ctrl
--- KEY_RIGHT_CTRL
键盘右边shift
--- KEY_RIGHT_SHIFT
键盘右边alt
--- KEY_RIGHT_ALT
键盘右边win
--- KEY_RIGHT_GUI
方向键上
--- KEY_UP_ARROW
方向键下
--- KEY_DOWN_ARROW
方向键左
--- KEY_LEFT_ARROW
方向键右
--- KEY_RIGHT_ARROW
空格键
--- KEY_BACKSPACE
tab键
--- KEY_TAB
回车键
--- KEY_RETURN
esc键
--- KEY_ESC
insert
键
--- KEY_INSERT
delete
键
--- KEY_DELETE
page up键
--- KEY_PAGE_UP
page down键
--- KEY_PAGE_DOWN
home键
--- KEY_HOME
end
键
--- KEY_END
capslock键
--- KEY_CAPS_LOCK
F1
--- KEY_F1
F2
--- KEY_F2
F3
--- KEY_F3
F4
--- KEY_F4
F5
--- KEY_F5
F6
--- KEY_F6
F7
--- KEY_F7
F8
--- KEY_F8
F9
--- KEY_F9
F10
--- KEY_F10
F11
--- KEY_F11
F12
--- KEY_F12
现在可以自由编辑模拟键盘啦~
linux上测试
受害机ubuntu22.04,linux反弹shell演示
mac上测试
注意问题
需要考虑到输入法的原因,输入法可能会影响输入,就会导致异常产生
还需要考虑搜索栏或者运行栏中已经存在字符串,也会出现很多异常
文献参考
★
https://wiki.arduino.cn/?file=011-USB%E9%A9%B1%E5%8A%A8%E5%BA%93/001-%E6%A8%A1%E6%8B%9F%E9%94%AE%E7%9B%98
https://blog.csdn.net/qq_41840148/article/details/104072033
往期回顾
01 华云安荣膺创新赛道之攻击面收敛赛道领航者,入选2021数字安全「年度创新力十强」 |
02 媒体聚焦:从漏洞管理到攻击面管理 |
03 华云安沈传宝:攻击面管理要做的是比攻击者更快一步 |
04 数字时代,安全从攻击面管理开始——2022网络安全运营技术峰会在北京(线上)召开 |
05 产品视角看攻击面管理,华云安发布攻击面管理产品解决方案 |
原文始发于微信公众号(华云安):USB攻击之BadUSB实现linux和macOS反弹shell
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论