① 浅析几种HID硬件攻击
一、HID介绍
HID,全称为人类接口设备(Human Interface Device),简称为人体学输入设备。这类设备与人类直接交互,是计算机系统的一部分。在PC端上,HID通常指的是USB-HID标准,这是微软在USB委员会上提议创建的人体学输入设备工作组所制定的标准。
HID标准的出现,使得设备类型和功能更加丰富多样,加速了设备创新与发展的步伐。
二、HID攻击
HID攻击通过插入带有攻击向量的USB设备,让恶意代码直接加载执行,攻击操作迅速实现。这类攻击属于物理层面攻击。如果攻击者控制了用户的键盘,就相当于控制了主机的权限。
造成HID攻击的原因在于HID设备类协议存在缺陷。在设备接入电脑时,操作系统首先会读取其设备标识符。如果具备特定标识符,系统便会根据标识符提供相应的功能。理论上,HID设备出厂后,其标识符便不可更改,但通过自定义标识符,计算机被模拟成键盘输入,从而实现HID攻击。
三、发动HID攻击所需的硬件
发动HID攻击并不局限于物联网专业人士,任何具备单片机等硬件知识的用户都可能实现。以下列举几种硬件实例:
1. Digispark单片机,拥有8K闪存,可编程部分6K。
2. CJMCU-Beetle,平均价格32RMB,提供32KB闪存。
3. 商业版定制BadUSB,俗称“小黄鸭”,价格较高,可以插入12MB SD卡,外观更接近U盘。
四、编写模拟键盘程序
编写模拟键盘程序可以使用单片机,如Arino。通过下载官方编译器并初始化界面,利用Arino提供的键盘函数,如`Keyboard.begin()`, `Keyboard.press()`, `Keyboard.release()`, `Keyboard.println()`等,实现基本的模拟输入操作。
编写代码后,进行编译、上传至单片机,然后插入目标电脑,即可触发模拟输入。
五、新型的BadUSB(wifi版)
近年来,出现了结合wifi模块的新型BadUSB,通过wifi连接进行代码烧录,增加攻击的灵活性。这类设备通常需要额外的设备和接线图,参考特定的GitHub地址进行制作和设置。
六、USB killer的使用
USB killer用于测试设备防止电源浪涌攻击的能力。最新版本的USB killer 3.0能够测试设备抵御此类攻击的能力。团队统计显示,大约95%的设备无法抵御USB killer的攻击。
七、思考与声明
U盘作为常见的移动存储设备,其便利性也引来了一些不法分子的利用,HID安全问题不容忽视。利用人们的猎奇心理进行定向投放的攻击,可能导致信息安全问题。本文旨在提高读者的安全意识,所有涉及的攻击行为仅用于学习,不应被用于任何违法或不道德的目的。
② Bad USB - 防范靠近你电脑的HID攻击者
BadUSB是一种危险的USB安全漏洞,允许攻击者将一个简单的USB设备转化为键盘,进而向目标电脑输入恶意指令。该漏洞于2014年由Karsten Nohl和Jakob Lell共同发现,原理相对简单:通过插入特定的Arino Leonardo开发版,该设备会自动模拟出键盘和鼠标功能,并执行预先编写好的恶意代码。
使用Arino Leonardo开发板和Arino语言,可以编写基本的攻击代码。由于无法确定目标电脑的鼠标初始位置,通常以模拟键盘打开命令行界面为主要目的,例如CMD或Terminal。当然,你也可以下载预先准备好的木马程序。
首先,从Arino官网下载IDE,打开软件并关注`setup()`函数。在大括号内编写需要执行的代码。为了模拟键盘操作,新建文件时在顶部输入特定代码。在`setup()`函数内,使用四个关键控制函数实现基本操作,如打开命令行界面、输入命令和下载远程文件。模拟"command + space"、"输入'terminal',回车"、"输入'cd desktop',回车"、"输入'curl -o aaa.png ' xxx.xxx.xxx/aaa.png' ',回车"等操作。
为了更换Mac桌面背景,可以使用特定命令,如"sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db 'update data set value = '~/Desktop/aaa.jpeg'" && killall Dock"。关键在于替换value后的路径,指向你准备的恶作剧图片。在脚本中,需要巧妙地处理特殊字符,如在命令中遇到"\"或'\'"符号,使用双反斜杠"\"或\'\"进行替换。此外,使用`delay()`函数控制命令之间的延迟,模拟人工操作,尤其在下载图片时,可能需要较长时间。
编写脚本时,可以在`Tools - Board`中选择"Arino Leonardo"。提供了一段完整的代码示例,包含每一步的解释,确保正确实现所需功能。完成脚本后,进行编译并上传到Arino板上,连接目标电脑并执行。附有完整实验的视频和代码供参考。
关于BadUSB的信息虽然不多,以下网站和资源推荐学习更多相关内容:
1. **BadUSB原理浅析及制作指南** - 插入U盘自动攻击:BadUSB原理与实现(含视频)
- [daveti/basb](链接)
- [Xyntax/BadUSB-code](链接)