1、Bad usb介绍及原理
介绍
BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。用户插入BadUSB,就会自动执行预置在固件中的恶意代码,如下载服务器上的恶意文件,执行恶意操作等。由于恶意代码内置于设备初始化固件中,而不是通过autorun.inf等媒体自动播放文件进行控制,因此无法通过禁用媒体自动播放进行防御,杀毒软件更是无法检测设备固件中的恶意代码。这种攻击方式可以在不经意间实施攻击,而且不易被杀软或系统发觉~~事了拂袖去,深藏功与名~~
原理
HID是Human Interface Device的缩写,HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击载荷隐藏在一个正常的鼠标键盘中,或者将带有攻击载荷的设备伪装成HID设备。当用户将含有攻击载荷的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。
Arduino
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。Arduino IDE可以在Windows、Macintosh OS X、Linux三大主流操作系统上运行,基于processing IDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino语言基于wiring语言开发,是对 avr-gcc库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,可以快速的进行开发。
Keyboard库
keyboard库的功能是将arduino 模拟成一个usb键盘。可以控制按下/放开键盘上的任意按键。通过设置按键顺序和恰当的延时可以实现组合键的键入
备注:说了这么多其实bad usb看着像u盘,其实是块集成板,插入时电脑会当做虚拟键盘,所以杀毒软件等无法检测和查杀。
2、准备
硬件:需要买一块bad usb,可以去淘宝。很多的,几十块钱就可以。也有很便宜的,那种没有U盘壳,一看就能看出是块板子。
软件:硬件准备好我们就要开始准备软件了,我们需要下载Arduino IDE.
下载链接:https://www.arduino.cc/en/Main/Software
注意:找到对应的操作系统,博主用的是windows所以选择windows的。也有linux版本的
3、开始
注意:如果不放心可以在虚拟机里进行操作
安装:没有什么要注意的,一路next就行了。安装成功后就会在桌面生成如下图标
刻录代码:双击点开程序,刚打开的时候是这样的
我们需要在这里输入我们的代码,代码主要基于keyboard库。keyboard库的功能是将arduino 模拟成一个usb键盘。可以控制按下/放开键盘上的任意按键。通过设置按键顺序和恰当的延时可以实现组合键的键入。不会写代码的没关系,网上很多。也可以看博主写的,很容易理解
代码:
#include<Keyboard.h> //包含键盘模块头文件(放第一条)
void setup(){
//初始化
Keyboard.begin();//开始键盘通信
delay(1000);//延时1000毫秒,不要太短,因为每天电脑的运行速度都不一样
Keyboard.press(KEY_CAPS_LOCK); //按下大写键 这里我们最好这样写 不然大多数电脑在中文输入的情况下就会出现问题
Keyboard.release(KEY_CAPS_LOCK); //释放大写键
delay(500);
Keyboard.press(KEY_LEFT_GUI);//按下徽标键 也就是win键
delay(500);
Keyboard.press('r');//按下r键
delay(500);
Keyboard.release(KEY_LEFT_GUI);//松掉win键
Keyboard.release('r');//松掉r键
delay(500);
Keyboard.println("notepad");//输入notepad 打开记事本
delay(500);
Keyboard.press(KEY_RETURN); //按下回车键
Keyboard.release(KEY_RETURN); //释放回车键
delay(500);
Keyboard.println(" fuck the world!!!");//输入我们想显示的信息
Keyboard.press(KEY_RETURN); //按下回车键
Keyboard.release(KEY_RETURN); //释放回车键
delay(500);
Keyboard.press(KEY_CAPS_LOCK); //按下大写键
Keyboard.release(KEY_CAPS_LOCK); //释放大写键 我们再次关闭开启的大写键
delay(500);
Keyboard.end();//结束键盘通讯
}
void loop() {
// put your main code here, to run repeatedly:
}
这段代码的主要操作就是打开记事本显示一行我们输入的信息。还能做很多操作,可以去网上找找。
代码写好就要刻录进U盘(其实严格来说不是U盘),首先插入U盘然,新买的U盘应该没有刻进东西所以不会进行任何操作,如果有莫名奇怪的操作那就去找买家吧。
U盘插入后需要在工具里将开发板设置为如下图所示
然后将端口改为如下,可能你们的电脑不是COM3不过没关系,只要后面的括号里一样就行
设置好就可以点击下图的上传箭头进行上传,这里上传成功会默认在你的电脑运行一次,所以不要写有害系统的东西或者去虚拟机里运行。
上传成功后这块U盘插入电脑就会运行你写的代码。
还没看懂的可以去看这个视频,博主就是按照这个视频学习的:https://www.bilibili.com/video/av20517610