有什么方法可以安全地检查 USB 记忆棒的内容吗?

信息安全 恶意软件 USB驱动器 对策 巴杜斯
2021-08-25 00:52:26

假设我发现了一个 USB 记忆棒,并想检查它的内容以试图找到它的合法所有者。考虑到 U 盘实际上可能比大容量存储设备更具恶意,有什么方法可以安全地做到这一点吗?电气隔离“避孕套”可能吗?有没有办法在 Linux / Windows / OS X 中手动加载 USB 驱动程序,以确保它不会将设备视为 USB 大容量存储以外的任何东西?

毕竟,尽管所有的恐惧散布,它仍然压倒性地更有可能看起来是一个放错地方的记忆棒实际上只是一个记忆棒。

后续问题:照片打印亭采取/可以采取哪些措施来防范此类攻击?

4个回答

我会使用 Raspberry Pi,即没有网络连接的 Model A/A+,如下所示:

  • 它(或者更确切地说是 Linux)可以读取 USB 记忆棒上大多数类型的文件系统。
  • 它拥有的唯一非易失性存储是 SD 卡,之后可以重新格式化(如果您偏执,则可以丢弃)。
  • 如果 USB 记忆棒被证明是电子恶意的,那么您只损失了 20 美元的硬件。
  • 它在非 x86 平台上运行某种非主流操作系统,这使其不太可能受到典型 Windows 恶意软件的攻击。

这仍然留下了您将如何处理您在其中找到的任何文件的问题 - 将它们复制到任何其他机器显然会使该机器处于危险之中。

请注意,没有什么是 100% 安全的。我不能说得比詹姆斯·米肯斯更好:“如果你的对手是摩萨德,你就会死,而且你对此无能为力”。

如果您通过光隔离集线器连接它,USB 杀手不会杀死您的 PC。它们确实存在,(搜索:“光电隔离 USB 集线器”)但由于我自己从未使用过,因此我不会推荐特定型号。不过它们并不便宜。这是一个例子:

USB集线器

一旦你处理了硬件方面,你就会被简化为一个更常见的问题。您可能已经在其他答案中获得了更多专家建议,但我的看法是拔下 PC 的硬盘驱动器(和所有其他可写存储)并将其从 live CD 或 live USB 记忆棒(不自动-当然是运行 U 盘的内容)。那是因为对于我从哪里开始的努力来说,这是最大的回报。如果您要养成这样的习惯,甚至将您的 Live CD 设置为不自动挂载和不自动安装硬件,并将机器从网络上拔下,这将是明智的。用可疑的棒子启动也是一个坏主意,以防它是可启动的,而且因为您可能希望在插入它时访问事件日志。

如果我们假设记忆棒可能已经被物理改变到最大程度,那么人们必须考虑到所谓的“记忆棒”在插入计算机时会喷出一些炭疽孢子或一团氧化钚云的可能性,所以对您的问题的回答是:没有安全的方法来检查记忆棒的内容(除非您可以将任务委托给将在另一栋建筑物中执行的下属)。


相反,如果我们假设攻击者不会那么彻底,那么我们就隐含地使用了本质上是任意的“肮脏阈值”。如果我们排除原始的物理破坏性影响(包括试图炸毁主机电子设备),那么邪恶的记忆棒可能会通过五种方式伤害插入它的机器:

  • 记忆棒可能会尝试滥用 USB 控制器硬件中的漏洞。该控制器是一个带有自己固件的芯片,它也连接到计算机中的主要数据通道,因此存在可利用漏洞的理论可能性。这将非常特定于控制器及其固件的版本,我不知道野外有任何这样的漏洞。

  • 记忆棒可能会尝试滥用处理 USB 对话的操作系统代码中的漏洞。这基本上就是PlayStation Jailbreak所做的事情:在 USB 级别,该设备是多个设备,其中一个发送稍微不合规格的消息,触发了检测和枚举 USB 设备的操作系统代码中的缓冲区溢出。

  • 事实上,记忆棒可能不是记忆棒,而是另一种设备,可能同时有几个。例如,从操作系统的角度来看,棒可能是一个键盘,当插入它时,它可以开始输入内容。这发生在野外。

  • 记忆棒可以是真正的记忆棒,其文件系统利用文件系统的操作系统代码中的漏洞。除了直接缓冲区溢出之外,还可能存在自动运行功能等问题(值得注意的是,许多现有的非恶意记忆棒也精确模拟虚拟 CD-ROM 驱动器,以尝试锻炼这样的自动运行)。一个变体将是一个包含图片的棒,该棒利用图片渲染库中的漏洞(当以图形方式浏览目录和文件时试图显示“缩略图”时,主机会调用该漏洞)。

  • 最后但并非最不重要的一点是,涉及人工操作员,这开启了许多攻击可能性。许多攻击只是利用了人类轻信的无底井。棒内容可能会诱使人类操作员不小心启动看似无害的可执行文件。或者,更糟糕的是,棍子可能包含令人不安的文件(有些事情不能只是看不见),这仍然算作“损坏”。

你最好的“安全探索”棒的选择是使用一台基本的电脑,它的操作系统在代码质量方面享有盛誉,最新的安全补丁,最重要的是,只有很少的插件。和播放支持尽可能。理想情况下,操作系统不会尝试对新插入的 USB 设备自动执行任何操作(即,与现代操作系统(如 Windows、OS X 或 Linux)完全不同的操作系统)。我建议从OpenBSDNetBSD开始,定制以停用任何形式的 USB 相关魔法。使用不常见的软件和不常见的硬件还可以提供一些小的额外保护,因为低级、大范围的攻击者往往不会为在旧的基于 PowerPC 的 Mac 上运行的 NetBSD 系统编写漏洞利用程序。

解决此问题的一种有趣方法是CIRCleanLWN 文章中也对此进行了描述。

它使用 Raspberry Pi(在面对过压和其他电气攻击时可能相当消耗),应插入不受信任的 USB 大容量存储和受信任的空白 USB 大容量存储。并且没有插入其他设备 - 它是未连接到任何网络或键盘/鼠标/显示器。并且没有可写的永久存储或 BIOS 被感染(如果他们愿意,真正的偏执狂可以在每次使用前重新刷新引导 SD 卡,我想)。

启动它,它将文件从一个传输到另一个,对已知的恶意软件向量执行一些自动清理(例如将 PDF 或 MSOffice 文件转换为更安全的 HTML)。视觉和听觉指示器显示该过程何时完成,并且系统可以关闭,在受信任的存储上为用户留下原始文件系统的经过一定程度净化的版本,准备好传输到用户的工作站。

如果您打算使用 CIRClean,我建议您检查其问题跟踪器是否存在当前缺陷 - LWN 文章指出(2014 年 12 月)没有针对 BadUSB 键盘攻击的保护;我还没有确定这是否仍然是真的。查看 Git 存储库中的内核配置文件,它看起来肯定会被锁定得更多(Magic Sysrq,有人吗?)。也许是一个需要参与的项目,而不是(还)一个成品。