近源渗透|HID ATTACK从0到1
前言
对于“近源渗透”这一术语,相信大家已经不再感到陌生。它涉及通过伪装、社会工程学等手段,实地侵入企业办公区域,利用内部潜在的攻击面——例如Wi-Fi网络、RFID门禁、暴露的有线网口、USB接口等——获取关键信息,并以隐蔽的方式将评估结果带出并上报,以此揭示企业安全防护的漏洞。
在此,我们仅作为学习交流,提醒大家,近源渗透涉及相关法律规定,请务必谨慎行事!
我自己对HID ATTACK的启蒙非常早,在16年左右,就有使用过类似橡皮鸭的HID(Human interface device,缩写HID,直译为人类接口设备)设备,最初的时候应该是在freebuf上看到的,以及国内的badusb网站。使用便宜的Digispark USB开发板基于ATTiny85,其速度较慢,且对于win7不免驱。使用Arduino IDE开发相关的payload,如今在github还是可以找到很多案例,对于入门HID非常简单。然后又找到一个速度较快的,基于ATmega32U4的开发板,免驱,但开发的代码比较复杂,但github也有案例。
我本人最终选择了2个方案,树莓派pico(RP2040)与DIY基于CH552/554的开发板,因为他们俩都能实现自带flash,本篇文章将主要循序渐进的讲这两个方案的实现过程
当然还有一个高阶方案就是给支持Nethunter Kali内核的手机刷上Nethunter系统,内自带两种HID ATTACK方式,本人使用的是Google Pixel 6p
PicoDucky
此方案主要围绕https://github.com/dbisu/pico-ducky来实现
需要准备
- RP2040开发板 or 树莓派pico开发板 (成本20以内)!
- 一根带数据传输功能的 Type-C线
开始部署
设备到手后先长按BOOT按钮,如图,然后使用数据线连接上电脑,直到出现一个名为RPI-RP2的存储设备
将adafruit-circuitpython-raspberry_pi_pico-en_US-8.x.x.uf2复制进去,版本不限只需是8.x.x即可,可以到上方GitHub链接中获取,也可以到文末的附件中获取,此操作为安装micro-python到设备
复制完成后刚刚的存储设备名字会变为U盘,若没变的话请重新接入设备,发现其中文件消失,此时再复制pico-ducky的文件进去,此操作为安装pico-ducky进去,过程消耗1分钟左右
复制完成后,单点RST按钮,等待几秒会自动打开notepad输入Hello World!字样,即完成
具体攻击代码可在payload.dd中修改,其语法规范为橡皮鸭duck的规范,但某些功能不支持,最后面会阐述
此方案还可以使用W版本,就是带WIFI的版本,可以手机连接热点切换payload,具体看作者GitHub中内容
此方案成本控制在20以内甚至更低
CH552G
此方案主要围绕https://github.com/Push3AX/USBAirborne来实现
需要准备
- 首先注册嘉立创,下载嘉立创下单助手到其中左侧下拉栏中免费领取打板券(需进行考试,内容为电子相关)
- 下载工程Gerber文件导入到嘉立创内进行生产PCBhttps://raw.githubusercontent.com/Push3AX/USBAirborne/main/Hardware/Gerber_PCB1_2022-06-19.zip也可以在嘉立创开源平台中自己编辑项目后导出Gerber文件(主要是添加点自己的丝印等)https://oshwhub.com/PushEAX/3079905e2c434c54902d77ab60f6c747
- 打板的时候,板子2层 1.6厚即可,沉金,其他参数默认
- 物料 10uf电容 100NF电容 22k电阻 W25QFLASH CH552G/554G单片机 拨码开关2PIN USB公头
- 电阻电容焊接点位
开始焊接
热风枪焊接(推荐)
电烙铁焊接
焊接前将双手去静电,焊接时准备防静电镊子
根据点位焊接,注意器件的方向
- 最终成品如下
- 也可以购买一个G2版型通用的U盘外壳搭配使用
开始部署
下载烧录软件WCHISPTool
将拨码开关2打开开启烧录模式
插入设备后打开烧录软件
配置型号 用户程序文件 且USB设备列表成功显示了CH552设备
关闭烧录模式,插入设备,会HID打开百度网站,说明此设备已经部署成功
关闭攻击模式使得设备flash可读写,Autorun.inf文件中为具体payload,其可利用Windows的自动播放功能进行攻击也可以使用HID攻击,我们只使用HID功能,因为前者在部分系统中是默认关闭的,没有效果
[BadUSB]
[Win+R]
[Delay][Delay]
notepad[Enter]
[Delay]
Hi![Enter]
ThisisatestofUSBAirborne[Enter]
[Win+R]
[Delay]
[Delay]
https://www.bilibili.com/video/BV1uT4y1P7CX/
[Enter]
[BadUSB];后续是AutoRun攻击的配置文件。USBAirborne支持同时进行两种攻击。
[AutoRun]
autoplay=true;将驱动器图标伪装为U盘图标
icon=c:\windows\system32\shell32.dll,79;驱动器名称
label=Nothinginside;攻击Payload,此处为调用cmd打开网页
open=cmd.exe/c"start https://www.bilibili.com/video/BV1uT4y1P7CX"
run=cmd.exe/c"start https://www.bilibili.com/video/BV1uT4y1P7CX";劫持右键菜单
shell\open=打开(&O)
shell\open\Command=cmd.exe/c"start https://www.bilibili.com/video/BV1uT4y1P7CX"
shell\opennewwindow=在新窗口中打开(&E)
shell\opennewwindow\Command=cmd.exe/c"start https://www.bilibili.com/video/BV1uT4y1P7CX"
设备根据[BadUSB]中框起的代码作为HID攻击代码,其语法类似橡皮鸭duck,我们可以在作者固件源码中得到具体内容,后续[AutoRun]则为一些配置和Windows自动播放攻击的代码
BadUSB的配置文件支持一些组合键和高级命令:
[Enter]:按下回车键
[Shift]:按下Shift键
[Capslock]:切换大小写
[Win]:按下Win键
[Win+R]:打开“运行”窗口
[Alt+F4]:关闭当前窗口
[Win+D]:显示桌面
[Win+L]:锁定计算机
[Win+E]:打开Windows资源管理器
[Ctrl+Alt+Del]:打开安全选项
[Delay]:等待500毫秒
[Format]:格式化储存
此方案成本控制在10以内甚至更低(单个)
思考问题
- 这两个方案的操作是否过于复杂了?对于其他现成方案来说有什么优点呢?
其实我们可以使用市面上的其他开发板来实现HID攻击,但是本文章所述的两个方案他们都自带4-16mb的flash(取决于购买的设备)可以存储,可以作为U盘使用,更重要的是,可以存储恶意进程到U盘之内,使用cmd或者powershell指令,低风险的执行,不用远程下载。
有些人说,是不是可以直接把恶意进程转base64后使用HID设备全部打出来然后解码转二进制文件运行?是可以,但太慢了
- 方案目前是最优解吗?
其实并不是最优解,这两个方案的伪装效果不如数据线类型的HID设备
方案一其中的pico-ducky只不过是将pico废物利用了,其不兼容很多外壳,且其USB-A版本价格偏高,虽小但也没有外壳可用,如图,且其会发出光亮,伪装效果不佳,但速度较快,部署简单
方案二作为自diy的设备,可以实现外壳兼容,flash存储,且可以自写固件添加功能,例如格式化设备清除痕迹等,但其不是最优解主要体现在他的速度稍慢,连接上电脑需要5秒左右的初始化时间,且其固件功能不够多
- 能过输入法吗?
过输入法常常出现在中文系统下,输入法开启导致HID输入的内容变更,导致无法执行
常用的方法是开大小写,但是遇到一些区分大小写的内容,就无法使用了
解决问题
- 如何取flash中的恶意进程出来
((wmiclogicaldiskwheredrivetype=2getdeviceid|findstr/v"DeviceID")-join""-replace"[\s]","")+"\\1.exe"|Out-File-FilePath"c:\\users\\public\\x";Invoke-Expression(Get-Content"c:\\users\\public\\x")
使用这个powershell代码可从最新插入的U盘设备(type2)中获取1.exe的路径,保存在public文件夹内,然后取这个路径文件运行,算是比较好用的一个取文件方案,欢迎补充优化!
- 伪装性
解决这个问题最优解是使用hackusb数据线,在几年前其作者因当兵鸽子了很久,现在复出了(很多人以为是进去了),听说现在迭代到很强的版本了
对于本文方案一的解决思路就是,重绘RP2040的PCB制作一个类似G2板样的,去除或保留RGB灯,这个思路成本太高了
对于其他建议我认为可以使用无flash版本的最小ch552g板子的HID设备,开源地址https://oshwhub.com/Inkusa/ch552g-zui-xiaobadusb_copy 基本上就是贴着usb母口来执行了,缺点是难扣下来,成本非常低,还可以使用usb接收器外壳的HID设备,https://oshwhub.com/hexesdesu/USBjie-shou-qi-wai-qiao-Badusb,自认为挺不错的,当然还有数据线版本,https://oshwhub.com/monkeylord/badusb-cable
- 输入法
解决这个问题目前我个人知道的方案就是使用 橡皮鸭v3版本其固件可以读取大小写锁定状态 使用if语句判断来看是否要大小写来绕过,而输入法是系统软件层面的,我们可以使用阶段payload,比如一阶段执行一个程序将输入法切换为英文后使用阶段二来进一步利用,提供一个思路:Windows在不同进程窗口中会自动切换输入法状态为英文或中文
- 速度
速度取决于单片机,越高端的理论上速度越快,当然也需要搭配一个较好的固件,不如方案二中作者给了解决方法,将payload直接在编译前写死在代码中,不用等待5秒初始化就可以执行payload了,毕竟还需要读取autorun.inf中的内容再执行
- 什么是最优解
没有最优解,适合自己的才是最优解
免责声明
(1)本文提到的两个方案均取自于网络
(2) 本项目仅用于网络安全技术的学习研究。旨在提高安全开发能力,研发新的攻防技术。
(3) 若执意要将本项目用于渗透测试等安全业务,需先确保已获得足够的法律授权,在符合网络安全法的条件下进行。
相关文章:

近源渗透|HID ATTACK从0到1
前言 对于“近源渗透”这一术语,相信大家已经不再感到陌生。它涉及通过伪装、社会工程学等手段,实地侵入企业办公区域,利用内部潜在的攻击面——例如Wi-Fi网络、RFID门禁、暴露的有线网口、USB接口等——获取关键信息,并以隐蔽的…...

【linux】插入新硬盘如何配置:格式化、分区、自动挂载(Ubuntu)
文章目录 具体方法GPT分区表(GUID Partition Table)(建议都用这种分区方法)MBR分区表方法(最大支持2TB分区)(Master Boot Record) 附加:如何查看硬盘的型号另外ÿ…...

YOLOv8-ultralytics-8.2.103部分代码阅读笔记-block.py
block.py ultralytics\nn\modules\block.py 目录 block.py 1.所需的库和模块 2.class DFL(nn.Module): 3.class Proto(nn.Module): 4.class HGStem(nn.Module): 5.class HGBlock(nn.Module): 6.class SPP(nn.Module): 7.class SPPF(nn.Module): 8.class C1(nn.M…...

代码随想录算法训练营第五十三天|Day53 图论
字符串接龙 https://www.programmercarl.com/kamacoder/0110.%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8E%A5%E9%BE%99.html 思路 #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX 1000 // 假设最大字符串数 #define WORD_LENGTH 100 // 假…...

LeetCode:203.移除链表元素
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:203.移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.…...

知识见闻 - 数学: 均方根 Root Mean Square
What is Root Mean Square (RMS)? 在统计学上,均方根(RMS)是均方的平方根,而均方是一组数值的平方的算术平均数。均方根也称为二次均值,是指数为 2 的广义均值的一种特例。均方根也被定义为基于一个周期内瞬时值的平方…...

机器硬件调优
grub参数 ipv6.disable1 ipv6.autoconf0 intel_pstatedisable nohzoff idlepoll intel_idle.max_cstate0 processor.max_cstate0 mceignore_ce nmi_watchdog0 transparent_hugepagenever pcie_aspm.policyperformance audit0 irqaffinity0 nosoftlockup grub2-mkconfig -o /bo…...

如何更改手机GPS定位
你是否曾想过更改手机GPS位置以保护隐私、玩游戏或访问受地理限制的内容?接下来我将向你展示如何使用 MagFone Location Changer 更改手机GPS 位置!无论是在玩Pokmon GO游戏、发布社媒贴子,这种方法都快速、简单且有效。 第一步:下…...

HarmonyOS(57) UI性能优化
性能优化是APP开发绕不过的话题,那么在HarmonyOS开发过程中怎么进行性能优化呢?今天就来总结下相关知识点。 UI性能优化 1、避免在组件的生命周期内执行高耗时操作2、合理使用ResourceManager3、优先使用Builder方法代替自定义组件4、参考资料 1、避免在…...

Mysql的加锁情况详解
最近在复习mysql的知识点,像索引、优化、主从复制这些很容易就激活了脑海里尘封的知识,但是在mysql锁的这一块真的是忘的一干二净,一点映像都没有,感觉也有点太难理解了,但是还是想把这块给啃下来,于是想通…...

hive3.1.2编译spark3安装包
此安装包是《去破解站长》在公司真实生产环境所使用的安装包。 引言:Hive引擎包括:默认MR、tez、sparkDownload:www.qupojie.com 1、Hive on Spark 1、Hive onSpark:Hive既作为存储元数据又负责SQL的解析优化,语法是HQL语法&…...

网络安全,文明上网(1)享科技,提素养
前言 在这个信息化飞速发展的时代,科技的快速进步极大地丰富了我们的生活,并为我们提供了无限的可能性。然而,随着网络世界的不断扩张,增强我们的网络素养成为了一个迫切需要解决的问题。 与科技同行,培育网络素养 技术…...

ESP32 烧录问题
ESP32 烧录问题 1.无法连接 Connecting......................................A fatal error occurred: Failed to connect to ESP32: No serial data received.这个表示通过串口连接esp32失败,可能存在多种原因,比如串口选择错误。 所选串口不是连接…...

CnosDB 实时流式计算:优化时序数据处理与降采样解决方案
在处理时序数据时,数据写入周期通常与数据采集设备的频率相关,有时每秒钟就需要处理大量的数据点。长时间处理如此多的数据会导致存储问题。一个有效的解决方案是使用流式计算,将原始数据进行降采样。 流式计算在时序数据库中指对实时数据流…...

ApiChain 从迭代测试用例到项目回归测试 核心使用教程
项目地址:ApiChain 项目主页 环境变量 环境变量是在特定的开发环境(开发、测试、uat等)下,保存的一份数据集,环境变量是发送网络请求或者执行单测的一个重要数据源。环境变量根据作用范围可以分为全局环境变量、项目…...

数据集-目标检测系列- 花卉 玫瑰 检测数据集 rose >> DataBall
数据集-目标检测系列- 花卉 玫瑰 检测数据集 rose >> DataBall DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 贵在坚持! 数据样例项目地址: * 相关项目 1)数据集可视化项…...

django从入门到实战(四)——模型与数据库
1. 模型的定义与数据迁移 1.1 模型的定义 在 Django 中,模型是一个 Python 类,用于定义数据库中的数据结构。每个模型类对应数据库中的一张表,类的属性对应表中的字段。 示例: from django.db import modelsclass Blog(models…...

LeetCode:1008. 前序遍历构造二叉搜索树
目录 题目描述: 代码: 第一种: 第二种: 第三种:分治法 题目描述: 给定一个整数数组,它表示BST(即 二叉搜索树 )的 先序遍历 ,构造树并返回其根。 保证 对于给定的测试用例,总是有可能找到具有给定需求的二叉搜索树。 二叉搜索树 是一棵…...

gdb - 调试工具 - 入门 (一)
GDB(GNU Debugger)是GNU项目调试器的缩写,它是Linux下一个强大的C/C(以及其他语言如Fortran)程序调试工具。以下是对GDB的详细解释: 一、GDB的功能 GDB允许开发者对程序执行进行深入控制,可以…...

Swift内存访问冲突
内存的访问,发生在给变量赋值的时候,或者传递值(给函数)的时候,例如 var one 1//向one的内存区域发起一次写的操作 print("\(one)")//向one的内存区域发起一次读的操作 在 Swift 里,有很多修改…...

深入理解Spring(三)
目录 2.1.3、Spring配置非自定义Bean 1)配置Druid数据源交由Spring管理 2)配置Connection交由Spring管理 3)配置日期对象交由Spring管理 4)配置MyBatis的SqlSessionFactory交由Spring管理 2.1.4、Bean实例化的基本流程 1)Bean信息定义对象-BeanDefinition 2)DefaultLi…...

TB6612电机驱动模块使用指南
实物图: 简介:TB6612是一款双路H桥型直流电机驱动模块,可以控制两个直流电机的转速和方向 H桥:(双路H桥就是有两个这个结构) 引脚图:...

Paper -- 洪水深度估计 -- 利用图像处理和深度神经网络绘制街道照片中的洪水深度图
基本信息 论文题目:Flood depth mapping in street photos with image processing and deep neural networks 中文题目: 利用图像处理和深度神经网络绘制街道照片中的洪水深度图 作者及单位: Bahareh Alizadeh Kharazi,美国得克萨斯州立大…...

学习C#中的BackgroundWorker 组件
1. BackgroundWorker 组件概述 许多经常执行的操作可能需要很长的执行时间。 例如: 图像下载 Web 服务调用 文件下载和上载(包括点对点应用程序) 复杂的本地计算 数据库事务 本地磁盘访问(相对于内存访问来说其速度很慢&…...

【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
大家好,欢迎来到程序视点!我是小二哥! 前言 在VUE项目开发中,一些数据常常被多个组件频繁使用,为了管理和维护这些数据,就出现了状态管理模式。 今天小二哥要给大家推荐的不是VueX,而是称为新…...

PCB 间接雷击模拟
雷击是一种危险的静电放电事件,其中两个带电区域会瞬间释放高达 1 千兆焦耳的能量。雷击就像一个短暂而巨大的电流脉冲,会对建筑物和电子设备造成严重损坏。雷击可分为直接和间接两类,其中间接影响是由于感应能量耦合到靠近雷击位置的物体。间…...

JAVA泛型和顺序表ArrayList
目录 泛型 泛型的定义: 泛型的实例化: 泛型的使用: 顺序表ArrayList 顺序表ArrayList的两种实例化方法: ArrayList常用的方法: 1. add 方法 2. size ( ) 方法 3. get 方法 4. set 方法 5. 顺序表的三种遍历元素的方法…...

Qt桌面应用开发 第六天(鼠标事件 定时器事件 定时器类 事件分发器 事件过滤器)
目录 1.1鼠标进入和离开enterEvent\leaveEvent 1.2鼠标按下释放和移动mousePressEvent\mouseReleaseEvent\mouseMoveEvent 1.3定时器事件timerEvent 1.4定时器类QTimer 1.5事件分发器event 1.6事件过滤器eventFilter 1.1鼠标进入和离开enterEvent\leaveEvent 事件&#x…...

Javascript高级—深入JS模板字符串的高级用法
深入JS模板字符串的高级用法:解锁动态内容生成的无限可能 在JavaScript编程中,模板字符串(Template Literals)自ES6(ECMAScript 2015)引入以来,就以其简洁、直观的特性迅速成为开发者们生成动态…...

14. 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--章节总结
本章重点介绍了如何在一个简单的系统中实现基本的权限管理功能。通过构建一个简单的权限控制模型,章节阐述了如何为用户分配权限,并在应用程序中进行访问控制。 一、关键要点: 1. 用户管理(登录/注册/Token) 本章节聚…...