键盘注入攻击实战:利用无线键盘漏洞执行远程代码

本文详细介绍了如何利用Logitech无线键盘的漏洞执行键盘注入攻击,包括硬件准备、Payload编写、JackIt工具使用以及通过PowerShell实现云端代码注入,揭示了无线外设的安全风险及可能的缓解措施。

执行键盘注入攻击

Ray Felch //

前言

继Bastille研究小组的工作(参见:https://github.com/BastilleResearch/mousejack)之后,我有兴趣了解这些(键盘注入)漏洞是否仍然有效。令我惊讶的是,我能够在我已经拥有的廉价Logitech键盘上复制这种攻击。这款键盘(Logitech K400r)仍在我当地的沃尔玛以低于20美元的价格出售。特别是使用Unifying接收器(带有橙色星标)的无线设备尤其容易受到攻击。

根据我的初步研究,无线键盘的通信(击键)似乎是加密的,以防止窃听,而鼠标移动通常以未加密方式发送。MouseJack漏洞利用通过允许未加密的击键作为合法数据包传递到目标计算机的操作系统,来利用易受攻击的dongle。

这种无线(非蓝牙)攻击场景可以通过相当便宜的无线电dongle、一个小脚本以及最远100米的距离来实现!

我在下面概述了我的过程。

硬件:Crazy Radio PA dongle

键盘:Logitech K400r

FCC ID:JNZYR0019

幸运的是,对于这个项目,与此设备相关的FCC信息并不是必需的,但知道它旨在在2.405 – 2.474GHz WiFi范围内无线运行是很好的。

键盘注入Payload

为了准备我们的攻击,我们需要基于Rubber Ducky脚本语言创建一个短文本文件(更多信息:https://github.com/hak5darren/USB-Rubber-Ducky/wiki)。使用任何文本编辑器(nano、vi、notepad等),输入以下内容并保存文件:

1
2
3
4
5
6
7
DELAY 500
GUI r 
DELAY 500
STRING notepad.exe  
ENTER 
DELAY 1000 
STRING Hello World! 

使用nano文本编辑器的示例

  • GUI r 模拟按住Windows键并单击“r”以打开运行窗口
  • STRING notepad.exe 显然在运行窗口中键入notepad.exe,打开记事本
  • STRING Hello World! 在新打开的记事本页面中键入

注意:虽然在使用Rubber Ducky USB dongle时可能需要一些延迟以确保可靠操作,但在使用CrazyRadio dongle实施攻击时情况并非如此。这是因为我们没有加载任何USB驱动程序或尝试检测任何插入USB端口的USB dongle。此处的延迟仅用于演示目的。理想情况下,我们希望尽可能快地执行脚本并注入Payload,以避免被人类检测到,但也不能以牺牲可靠操作为代价。

下载JackIt

1
2
3
git clone https://github.com/insecurityofthings/jackit.git
cd jackit
pip install -e .

使用Payload脚本“hello.txt”运行JackIt

一旦识别出目标,按CTRL-C并选择目标键以注入Payload

注意:执行此攻击不需要知道MAC地址。所需要的只是目标键,并且类型具有有效条目,如Logitech HID、Microsoft HID等。(空字段或“未知”将不起作用。)

成功!!!

基于云的PowerShell注入

意识到键盘Payload注入现在是可能的,我的下一步是尝试使用这种经过验证的攻击方法注入PowerShell Payload。

首先,我创建了一个github仓库来托管我的PowerShell注入脚本。

接下来,我修改了我的“hello.txt”脚本以运行PowerShell而不是记事本,并将注入字符串从Hello World!更改为PowerShell Invoke Expression(IEX)cmdlet,该cmdlet下载.ps1脚本并在目标计算机上执行它。

使用修改后的“hello.txt”脚本运行JackIt现在产生了预期的结果!我能够清楚地利用Logitech HID中的已知漏洞注入基于云的PowerShell执行。

总结

我很高兴我从易受攻击的键盘开始,因为尽管我拥有的鼠标显然是Logitech Unify接收器并带有橙色星标,但无法注入任何鼠标。我怀疑这可能是因为Logitech实现了可以更新的dongle固件,而许多已经在现场使用的鼠标使用一次性可编程闪存设备。

Microsoft已发布安全更新(https://support.microsoft.com/en-us/help/3152550/microsoft-security-advisory-update-to-improve-wireless-mouse-input-fil),该更新检查来自dongle的通信Payload是否为QWERTY,如果设备类型是鼠标,则数据包将被忽略。然而,据我确定,此安全更新基本上是可选性的。基于此信息,我决定订购一些Microsoft鼠标并测试这些设备以继续我的研究。

无论如何,我怀疑有数十万个易受攻击的键盘和鼠标在野外,而这种经常被忽视的攻击向量需要认真对待。大多数用户可能会想,“哦,这只是一个键盘……这只是一个鼠标……它们能造成什么危害?”事实是,一个简单地显示“Hello World!”的击键注入可能同样容易地是执行Metasploit、下载恶意软件或病毒、泄露敏感数据、提升权限、获得持久性等的PowerShell注入。

可能的缓解措施可能包括使用蓝牙或有线设备而不是无线设备,或者在不使用时移除dongle,或者在可用时及时获取固件和安全更新。显然,这些选项可能会影响整体“用户体验”,因此大多数或全部可能根本不会实施。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计