作者:维克多·德·保罗 / 康拉多·古维亚 / 安德烈·“德克斯特”·贝雷扎
BadUSB 是一种能够通过受感染的 USB 设备在计算机上执行恶意代码的攻击。
攻击
BadUSB 是一种旨在执行 USB 设备固件中托管的恶意代码的攻击。我们通常习惯于来自大容量存储设备(例如 U 盘或外部 HD)的攻击。由于 BadUSB 托管在固件中,因此攻击不需要使用大容量存储,并且任何设备都容易受到攻击,甚至键盘、鼠标、网络摄像头和打印机。
攻击目标:主机
当 USB 设备连接到计算机时,计算机的操作系统会与该设备进行通信。发生这种通信是为了让操作系统能够检查将使用哪个驱动程序进行通信以及其他操作。
带有恶意代码的USB设备可以在计算机上执行命令,无论是Windows还是Linux。在黑帽大会上,研究人员演示了一种可以在锁屏上捕获用户密码的设备,以便恶意代码可以使用“sudo”(权限提升)执行命令。在攻击中,研究人员设置了一个虚拟以太网设备,通过网络发送用户密码。由于这是一次权限提升攻击,因此存在多种攻击可能性。
一种有趣的攻击方式是从任何设备进行键盘模拟。该设备通常被计算机识别,但有时另一个 USB 设备会模拟为键盘并向主机输入命令。
攻击目标: USB设备
攻击的另一端是将恶意软件插入没有恶意软件的 USB 设备。已经感染恶意软件的计算机可以修改 USB 设备的固件。
阻碍攻击的因素
一旦受感染的设备插入计算机,几乎没有办法保护自己。当我们谈论反向路径(即受感染计算机对 USB 设备的污染)时,有一些方法可以使攻击更难以执行:
- 防止固件更新:阻止固件更新的设备很难受到攻击。如果对手无法更改固件,则制造商安装的固件将受到保护。
- 设备操作详情:假设对手设法修改了 USB 键盘的固件。如果对手不知道这是一个键盘并且没有插入该设备的兼容固件(即使该设备继续作为键盘使用的固件),攻击的效果就会降低。
- 固件模糊性:设备制造商以只有他们自己知道其工作原理的方式实现固件。固件混淆是一个自然的过程,不需要制造商故意这样做。然而,有动机的对手将能够弄清楚固件的工作原理,从而克服这一困难。
- 对手动机:任何 USB 攻击都很复杂,需要对手高度的奉献精神。因此,只有有动机的对手才能发动攻击。
解决方案
不幸的是,这个问题没有单一的解决方案。 BadUSB 是某些 USB 设备固件更新方案中的一个缺陷,需要制造商采取措施来修复该问题。该解决方案可能仅会出现在具有安全固件更新机制的新一代设备和集成电路中。然而,有一些方法可以减少遭受攻击的可能性。
可能的解决方案及其局限性:
- 设备白名单:USB 设备并不总是具有唯一的序列号。
- 阻止USB:虽然解决了问题,但是完全阻止USB会带来严重的可用性问题,市场不太可能采用这种方式来解决问题。
- 扫描设备固件中的恶意软件:只有提供此功能的设备固件才可以被读取。受感染的设备将不会提供固件分析,或者会隐藏恶意软件。
- 固件代码签名(用于更新):自定义固件更新不再可能。只能更新到制造商固件(即签名固件)。
- 禁用固件更新:您需要信任工厂固件,该固件永远无法修改。
其他问题
发现该漏洞的研究人员尚未发布展示如何利用该漏洞的代码。他们声称,只有积极性极高的对手才有能力实施袭击,他们不希望任何人都能够实施袭击。
另一组研究人员编写了攻击代码,并将该代码发布在开放平台(GitHub)上。该组织不同意隐藏代码的想法,并发布该代码以迫使制造商更快地解决问题。
https://srlabs.de/badusb/
https://www.blackhat.com/us-14/briefings.html#badusb-on-accessories-that-turn-evil
https://www.youtube.com/watch?v=nuruzFqMgIw[/ Vc_column_text] [vc_column_text]