如何监控 USB 加密狗的流量?我想看看一个程序和它的 USB 加密狗如何相互通信,如果有可能重播这个流量?
由于我对此类事物不熟悉,因此欢迎提供任何教程或工具建议。
如何监控 USB 加密狗的流量?我想看看一个程序和它的 USB 加密狗如何相互通信,如果有可能重播这个流量?
由于我对此类事物不熟悉,因此欢迎提供任何教程或工具建议。
这取决于你的预算是怎样的。最好的 USB 分析仪是具有良好协议解析器的硬件设备。如果您有大量预算,您可以使用 LeCroy 的各种解决方案,例如LeCroy Voyager M3i。如果您有合适的尺寸预算并且只需要 USB 2.0,我会选择Ellisys USB Explorer 200。如果您想重放和更改数据包,您可以查看Ellisys USB Explorer 260,因为我认为 200 无法重放。如果您需要 USB 3.0,我会选择Ellisys USB Explorer 280。在预算硬件方面,您有Beagle 480,预算更多的是Beagle 12。
如果您的预算有限,您可以使用USBSpy、USBLyzer、BusTrace或USBSnoop等软件解决方案。
还有更多的 DIY 解决方案,它涉及在 VirtualBox 等虚拟机中运行您想要监控的进程,然后将通过 USB 端口的流量路由到您自己的解剖器。您可以使用Wireshark 作为VM USB 流量的剖析器。
就我个人而言,我会选择 Ellisys Explorer 200 或 260。根据您的需要,任何一种都可以在价格和质量之间取得良好的折衷。
虽然可能不是您正在寻找的直接内容,但我只想在 Peter Andersson 的详尽回答中添加一项。Travis Goodspeed 的faceancer(一些最近的信息)。它的设计也是开源的。
Facedancer Board,一种使用 GoodFET 框架在主机端 Python 中实现 USB 设备的工具。对 USB 芯片的访问非常低级,因此协议可能会以各种创造性的方式被错误地实现。这使得聪明的邻居可以在舒适的现代工作站上快速找到并利用 USB 驱动程序漏洞,只有稍后移植此类漏洞才能独立运行。
它也可以用于嗅探。我无法立即找到购买一块的链接预组装板尚不可用,但您可以在这里购买电路板,而且 Travis 是,正如他喜欢说的那样,是一个好邻居,并在会议上赠送它们。无论如何,如果您可以自己组装它应该是非常便宜的选择。
如果你不怕弄脏你的手,在 Windows 上你总是可以在加密狗的设备对象的顶部或下面编写一个过滤器驱动程序。该IoAttachDevice()
函数和以该名称开头的其他三个函数是您的朋友。这样做的好处是可以为问题提供完整的软件内解决方案,而无需支付硬件嗅探器的费用。您会注意到这实际上是 USBpcap 项目在USBPcapFilterManager.c
. 所以如果你只是为了研究而写这篇文章,这将是一个很好的起点,除非 GPL 对你来说限制太多。
软件内解决方案有一个潜在的缺点。过滤器驱动程序只会看到其他驱动程序希望它看到的内容。请记住,在 Windows 内核模式下,所有驱动程序都具有相同的权限。即使连接到根集线器也不一定总能产生有意义的结果。因此,如果一个驱动程序决定做一些有趣的事情,例如窃取入口点(IRP 主要功能代码)来主动对抗任何类型的过滤或调试,这就会变成一场军备竞赛。否则它将是您可以获得的最便宜的解决方案,因为您只需要在特定操作系统上使用它。
但是,如果我是您,我会首先嗅探库(hook DeviceIoControl
、ReadFile
、WriteFile
等或它们的本机对应物)与驱动程序或库以及需要加密狗的应用程序之间的用户模式流量。当然,如果加密狗伪装成 HID 设备,您必须查找相应的 IOCTL 并对其进行解码或直接挂钩 HID 功能。这是我用来调查具有 USB 连接的运动手表和我的盒子之间发送的流量的方法。我基于PaiMai和pydbg,因为应用程序没有防止被调试。如果您这样做,您可能需要作弊以“说服”应用程序运行良好IDAStealth 提供了一些很好的指示 (截至 2016 年 5 月链接已失效)如何进行。