模拟键盘攻击——BadUSB制作
0x00 什么是BadUSB
BadUSB主要依靠USB拇指驱动器的构建方式,USB通常有一个大的可重写的内存芯片用于实际的数据存储,以及一个独立的控制器芯片。类似于笔记本电脑的硬盘驱动器包含一个隐藏的主引导记录(Master Boot Record),内存芯片中内存单元的第一段包含让USB记录的编程,也就是说他不是利用普通u盘的autorun.inf,不会被检测到,这样攻击者植入恶意软件就不会被发现。
0x01 USB协议漏洞
现在的USB设备很多,比如音视频设备、摄像头等,因此要求系统提供最大的兼容性,甚至免驱;所以在设计USB标准的时候没有要求每个USB设备像网络设备那样占有一个唯一可识别的MAC地址让系统进行验证,而是允许一个USB设备具有多个输入输出设备的特征。这样就可以通过重写U盘固件,伪装成一个USB键盘,并通过虚拟键盘输入集成到U盘固件中的指令和代码而进行攻击。
0x02 需要的工具
- 一块Arduino leonardo开发板,选择他是因为板子体积小容易包装成一个普通的u盘,并且代码非常好书写。
- Arduino ide,我们需要用它写代码并且烧录到badusb里面。
- 外壳,将它包装的像一个普通u盘,不然这么块板子谁电脑会让你随便插,当然你也可以直接去淘宝购买已经包装好的badusb。
0x03 写入代码
我们通过keyboard.h库里面提供的方法模拟键盘输入。如果进攻对象是windows的话,首先win+r然后输入cmd,进入命令行,这个时候几乎可以做到所有事情。如果进攻对象是linux,一般是ctrl+alt+t的组合开启terminal然后再输入命令。无论是进入哪种,只要你预先写好代码,对目标计算机上的文件下载,上传,删除,运行······怎么做都可以。
这里我们给出一个windows下的无害代码,使得我们u盘插入后目标计算机十秒关机。
1 |
|
然后我们接入开发板,选择好串口和板子型号,按ctrl+u烧录,之后就可以用它来测试了。
0x04 扩展
上面只提供了一个无害代码,有危害的恶意代码我不会在这里提供,但是我们应该意识到它的危害是巨大的,在针对性的编程下,可以不知不觉拷贝你电脑的任何数据,可以偷偷的下载木马病毒并且添加到启动项,控制你的通讯工具发送消息,甚至可以越过虚拟机进攻宿主机。
所以usb外设提供了太多很难防御的入侵方式,存放重要数据的电脑尽量避免与人共享usb外设。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!