连接的 USB 设备可以从 USB 总线读取所有数据吗?

信息安全 身体的 嗅探器 USB
2021-08-09 01:35:42

(恶意)(硬件)USB 设备是否可以访问通过 USB 总线传输的所有数据,然后读取/存储这些信息,本质上是嗅探所有传输的数据?还是 USB 总线已切换并且只向正确的接收者发送数据,即只允许预期的接收者读取它?

2个回答

很可能是的,但这取决于

很像 PATA、SCSI 和以太网设备,USB 设备不直接连接到计算机。它们连接到管理所有信令和通信的主机控制器。所有端口都连接到称为根集线器的东西,并且每个根集线器都可以连接其他集线器,然后连接更多集线器。

这些集线器中的每一个都有多个下游和恰好一个上游。“这意味着什么?” 你问。嗯,这意味着集线器发送的任何数据都会发送到所有子集线器和设备,而集线器和设备发送的数据仅“向上”发送到根集线器。

因此,如果许多设备连接到通向同一个根集线器的端口(它们都由同一个主机控制器控制),那么任何设备都只能在计算机 -> 设备的方向上嗅探数据。

例如,在我的笔记本电脑中,右侧的端口由主机控制器控制,左侧的端口由另一个主机控制器控制。

在此处输入图像描述

这意味着发送到右侧任何设备的数据可以被右侧的任何设备嗅探,但不能被连接到左侧的设备嗅探。

我记得我的一位同事修改了 U 盘,以防止它忽略发送到其他设备的数据。因此,如果您将修改后的 U 盘插入计算机,您可以捕获复制到同一台计算机上其他 U 盘的所有文件。

更新:

@Polynomial 的评论让我质疑整个答案,因为我的信息是基于我同事的描述。可以肯定的是,我试图找到一些参考。我挖掘了USB 规格,发现了这个:

在此处输入图像描述 ...在下游方向,集线器以广播模式运行。当集线器在其面向上游的端口上检测到数据包的开始时,它会建立与所有启用的面向下游的端口的连接。如果端口未启用,它不会向下游传播数据包信令。

此外,一篇TOTAL PHASE KB 文章似乎同意

USB 2.0 通过单向广播系统工作。当主机发送数据包时,所有下游设备都会看到该流量。如果主机希望与特定设备通信,它必须在令牌包中包含该设备的地址。上行流量(来自设备的响应)只能被直接位于主机返回路径上的主机或集线器看到。

阿德南的回答是正确的。然而,完整的图片,对于 Usb3.0 中的超高速模式,下游的数据包由集线器路由,而不是像 usb2.0 那样广播。

请注意,usb3.0 集线器由 usb2.0 部分和单独的超高速部分组成。超高速集线器的 usb2.0 部分和以前一样在广播模式下运行。

简而言之,您写入以超速模式运行的驱动器的内容无法被窥探。