Bad usb实现U盘攻击

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章