防范RubberDucky:BadUSB攻击原理分析及防御方法
导语:数据和系统安全组件的物理安全是技术领域中经常被忽视的一个方面。尽管物理安全经常被人们遗忘,但其重要性却与更新补丁、身份保护和应用程序安全性一样重要。
概述
数据和系统安全组件的物理安全是技术领域中经常被忽视的一个方面。尽管物理安全经常被人们遗忘,但其重要性却与更新补丁、身份保护和应用程序安全性一样重要。即使我们已经拥有了最为安全的服务器和网络,但如果有人可以直接接入鼠标和键盘,那么一切安全措施就会瞬间化为徒劳。
对于攻击者来说,最流行的硬件攻击方式是通过RubberDucky USB进行攻击,这是一种伪装成通用可移动磁盘的击键注入工具。计算机会将其识别为常规的键盘,并自动接受其预先编程的击键Payload。除此之外,还有一个鲜为人知的Cactus WHID,该硬件通过添加无线接入点,将攻击能力提升到了一个新的水平,可以远程控制硬件和击键。
攻击者会修改常规USB设备,以便隐藏他们的硬件,从而使其难以被直观地检测到。
那么,我们如何能够抵御这种武器化的硬件呢?Windows Defender ATP是否能够检测到RubberDucky?Microsoft Intune在保护终端方面可以发挥什么样的作用?
我们将在本文中进行详细分析。
物理安全的重要性
大约一年前,在2018年4月,荷兰军事情报机构(MIVD)挫败了四名俄罗斯秘密特工的袭击,这些特工实际上打算前往荷兰海牙,以阻止国际禁止化学武器组织(OPCW)的活动。
俄罗斯特工拥有各种各样的设备,从恶意Wi-Fi接入点到USB硬件注入设备。荷兰军事情报机构在OPCW的停车场找到了这些人员,并且扣押了他们的设备,然后当天晚上将他们遣返回俄罗斯。
这一事件就说明了物理安全的重要性。如果民族国家会利用这一维度开展攻击,那么很明显,其他攻击者也会将其作为潜在的攻击媒介。尽管许多公司对物理安全(例如:停车场、门禁等)进行了一些投资,但他们通常不会关闭计算机的USB访问,以及保护外围设备。
硬件注入设备
物理攻击中,一种比较重要的攻击方式是硬件注入设备,这些设备会自动执行密钥注入攻击。顾名思义,攻击的具体方式就是将预先编程的击键注入到系统之中。这种注入可以以不同的方式来完成,例如可以伪装成键盘的USB设备。
这些攻击的内在问题是,它们利用计算机和用户输入的外围设备(例如:鼠标、键盘)之间的基本信任来实现攻击。换而言之,计算机将无法区分哪些是用户的合法设备,哪些是伪装的设备。
有一个最著名的恶意HID设备叫做RubberDucky。用户可以使用正常的U盘自己制作一个,或者也可以在网上购买一个。目前在网上有很多博客文章、GitHub库和其他位置,能够帮助我们了解如何将自定义Payload存入这些设备中。
HID设备的隐藏
然而,如果这些HID设备出现在计算机的USB端口中,那么用户会很容易发现它们。然后,用户可能会结束这些未知设备,或者寻求IT或安全部门的支持,这样攻击者就无法实现其最终的目标。由于红方的目标是要保证持久性,以便他们根据需要随时访问网络,因此就需要设法“掩盖”这些USB设备。正因如此,一些高级的红方或恶意攻击者会将他们的恶意设备隐藏该用户经常使用的设备对象中,例如USB鼠标、USB键盘、USB灯等。
要将恶意HID设备隐藏在另一个对象中,需要花费一些精力。可能需要攻击者预先做好准备,因为这一过程涉及到焊接、测试等。此外,攻击者还必须知道目标用户使用的设备型号,以便能够隐藏在其中,因此就需要事先进行一些侦查。并且,攻击者还需要将设备放入另一个设备,所以需要一些物理空间。如果目标用户使用了形状独特的Surface Arc鼠标,那么显然就没有物理空间来插入另一个恶意设备了。
不要低估供应链攻击
在这种情况下,还要考虑的一种攻击维度就是供应链攻击。尽管我们第一印象会认为这并不是一件容易的事情,但是我们要考虑,很多企业都使用了外部供应商提供的操作系统镜像。而为了满足企业的个性化要求,通常都会对操作系统镜像进行修改,而在这一过程中可能会出现问题。
如果攻击者退而求其次,转向去攻击外部供应商,而外部供应商的设备或软件再提供给企业,那么企业的安全性将会受到严重的威胁。因此,建议企业要充分考虑到供应链攻击的可能性,并加强对外部供应商的安全审查。
武器化鼠标
为了趋近于真实世界的攻击行为,我希望能自己尝试改装鼠标,对其进行武器化。那么,我需要做什么呢?
首先,至少需要一个硬件注入设备。在这里,我选择了Cactus WHID,因为它具有无线连接功能用于远程控制,并且价格便宜、体积较小,而且还预装了ESPloit v2,其中包含大量预先制作好的Payload。我需要一个足够小的USB集线器,与Cactus WHID一起装入一个小空间,因此我选择了Nano USB集线器。最后,我需要一个具有足够“自由空间”的鼠标,来嵌入所有这些。Microsoft Intellimouse是一个完美的选择,因为上面具有微软的标志,所以不太可能会被怀疑。
所以,我的购物清单如下:
· Cactus WHID
· Nano USB集线器
· Microsoft Intellimouse
我的具体步骤如下:打开鼠标,切断USB线,将USB Nano集线器焊接到集线器的“输入端口”,将鼠标连接器焊接到“输出端口1”,然后焊接Cactus WHID到“输出端口2”,最后将鼠标放回原处。
以下是我在实际操作过程中的图片。
Microsoft IntelliMouse(改装之前)
Microsoft IntelliMouse(改装之后)
提示:确保你拥有一个好用的烙铁,需要具有精密尖端和恒温器,这样能够避免在焊接过程中破坏Nano集线器。此外,还需要具有合适的锡纸和放大镜。另外,我建议从Cactus WHID板上移除USB-A连接以节省空间。
接下来,我们的武器化鼠标就可以使用了。只需要将鼠标插入终端,USB集线器就能接电,Cactus WHID开始启动。由于该板是基于Arduino的,并且固件和操作代码都是轻量化,因此接入点将在几秒钟内启动。
用户不会注意到任何异常,因为鼠标仍然会按照预期正常工作。
默认情况下,ESploit v2已预先配置启动SSID为“Exploit”的Wi-Fi网络,密码为“DotAgency”。可以选择隐藏、重命名SSID,或者修改其他设置,例如手动选择频道。
作为攻击者,现在就可以远程连接到Wi-Fi网络,并访问192.168.1.1(默认用户名为“admin”,默认密码为“hacktheplanet”)。接下来,将会看到一个基本的Web页面,它允许攻击者将Payload上载到存储,并配置这些Payload的运行时间(立即启动/特定时间运行/设备启动时运行)。
ESploit v2可以完成的一项任务是泄露数据,这样就为攻击者提供了一种从目标系统获取数据的额外方式,而不再需要创建连接到网络的隐藏通道。
如何检测恶意HID设备
在系统每次识别到新的外部设备时,Windows都会在安全事件日志中生成事件ID为6416的条目。管理员可以收集这些事件,并查看设备名称(DeviceName)设备ID(DeviceID)等字段以查找恶意设备。
Windows Defender ATP的高级搜索功能和强大的Kusto查询语言(KQL)使得大规模搜索这些设备变得非常容易。
下面是一个KQL查询过程,我们可以在Windows Defender ATP中使用Advanced Hunting来识别用户、计算机或设备类型:
MiscEvents | where ActionType == “PnpDeviceConnected” | extend ParsedFields=parse_json(AdditionalFields) | project ClassName=tostring(ParsedFields.ClassName), DeviceDescription=tostring(ParsedFields.DeviceDescription), DeviceId=tostring(ParsedFields.DeviceId), VendorIds=tostring(ParsedFields.VendorIds), MachineId, ComputerName, EventTime | where ClassName contains “drive” or ClassName contains “usb”
如果要搜索特定设备,可以在KQL查询中添加where子句,并在DeviceID字段上进行过滤。在此示例中,我们专门针对Cactus WHID设备:
| where DeviceId == @”USB\VID_1B4F&PID_9208\HIDFG”
可以在搜索中应用其他过滤器,例如限制查询仅显示过去24小时内的结果:
| where LastTime — FirstTime < 1d
这一结果与Windows设备管理器中查找到的Cactus WHID硬件ID匹配:
如何防御这种类型的攻击
首先,管理员可以考虑物理安全的维度,限制访问计算机端口。但是,我建议使用Windows Defender和Microsoft Intune的组合方案,来提供更加偏向企业级的解决方案。
在Intune中,可以转到“设备配置”(Device configuration) - “配置文件”(Profiles) – “创建配置文件”(Create Profile)。为配置文件制定名称、描述,然后选择操作系统的版本,并选择终端保护(Endpoint protection)作为配置文件类型。单击“配置”(Configure),然后选择“Windows Defender Exploit Guard”,单击“减少攻击面”(Attack Surface Reduction)。对于从USB运行的未经签名和不可信进程,我们选择“阻止”(Block)。
或者通过选择“可移动存储和USB连接(仅限移动设备)”(For Removable storage and USB connection (mobile only))和“可移动存储,包含USB连接的USB驱动器(仅限移动设备)”(Removable storage includes USB drives, where USB connection (mobile only))这两个选项来实现。
由于未经授权的USB外接设备可能会伪造其USB属性,因此我建议仅允许经过批准的USB外接设备,并限制可以访问这些设备的用户。通过在Intune中创建自定义配置文件并配置DeviceInstallation策略,Windows Defender可以实现仅允许安装和使用经过特别批准的外接设备。例如,这个自定义配置文件允许安装和使用硬件ID为“USBSTOR\DiskVendorCo”和“USBSTOR\DiskSanDisk_Cruzer_Glide_3.0”的USB设备。
Windows Defender ATP团队也针对这类硬件攻击做出了防护。利用常见设备和硬件ID进行机器学习,就可以在Windows Defender ATP控制台中发出警报,从而让用户意识到潜在的攻击事件。
另外,也可以选择Pedro Sosa的开源项目DuckHunt。DuckHunt是一个免费的小型高效脚本,作为守护进程运行,持续监控用户的键盘使用情况,可以捕获并防范RubberDucky攻击。从技术上讲,可以防范任何类型的自动击键注入攻击,因此武器化鼠标也在防护范围之内。
RubberDucky的一些Payload将尝试禁用Windows Defender,以防止被其检测到。但是可以放心的是,我们可以阻止终端停用Windows Defender,并且任何可能会关闭Windows Defender的操作都将显示在Windows Defender ATP控制台中。
发表评论