如何监控USB加密狗的流量?我想看看程序和它的USB加密狗如何互相交谈,如果可以重播此流量?

由于我是这种东西的新手,所以欢迎任何教程或工具建议。

评论

您是否要使用特定的操作系统(Windows,Linux等)?如果是这样,则应将该平台添加为标签。

我认为这不是一个完整的答案,但是Wireshark还支持在Linux端监听USB,仅供参考。

#1 楼

这取决于您的预算。最好的USB分析仪是具有良好协议分解器的硬件设备。如果您有大量预算,可以使用力科的各种解决方案,例如力科Voyager M3i。如果您的预算合理,并且只需要USB 2.0,那么我会选择Ellisys USB Explorer200。如果要重放和更改数据包,可以看看Ellisys USB Explorer 260,因为我认为200可以重播。如果您需要USB 3.0,则可以使用Ellisys USB Explorer280。在预算硬件方面,您可以使用Beagle 480,而预算更高的Beagle 12也可以。

如果您的预算有限,可以搭配软件解决方案,例如USBSpy,USBLyzer,BusTrace或USBSnoop。

还有其他DIY解决方案,其中涉及在虚拟机(例如VirtualBox)中运行要监视的进程,然后将通过USB端口的流量路由到您自己的解剖器。您可以将Wireshark用作VM USB流量的分离器。

我个人会使用Ellisys Explorer 200或260。根据您的需求,任何一种都可以在价格和质量之间做出很好的折衷。

评论


软件解决方案的缺点是什么?

– Cyber​​gibbons
13年4月15日在21:49

IMO的软件解决方案的主要缺点在于,它无法在您无法控制任何一方的情况下建立连接,而主机和客户端都是嵌入式系统。如果在没有VM的情况下运行纯驱动程序,则不能保证看到的实际上是实际发送的数据,例如,无效的交易可能会被丢弃。对于VM,这不是问题。使用硬件,您知道您正在查看的是实际发送的内容。这也可能很糟糕,因为您可能希望数据是连续的且正确的软件发送方式,而不是数据的实际发送方式。

–彼得·安德森(Peter Andersson)
2013年4月16日15:57

#2 楼

除了Peter Andersson的工具列表之外,您可能还需要考虑USBTrace
和Bus Hound。

#3 楼

也许不是您直接在寻找什么,我想在Peter Andersson的详尽答案中添加一个项目。 Travis Goodspeed的facedancer(一些最新信息)。它的设计也是开源的。
Facedancer Board,一种使用GoodFET框架在主机端Python中实现USB设备的工具。对USB芯片的访问权限非常低,因此协议可能会以各种创造性方式实施不当。这样一来,聪明的邻居就可以在现代化工作站的舒适环境中快速发现并利用USB驱动程序漏洞,以后再移植此类漏洞以独立运行。


它也可以用于嗅探。我无法立即找到购买一块预组装板的链接,但是您可以在这里购买电路板,特拉维斯也是他的好邻居,就像他喜欢说的那样,是在会议上赠送的。无论如何,如果您可以自己组装,它应该是相当便宜的选择。

评论


>“它也可以用于嗅探。”错了FaceDancer无法监听主机和设备之间发送的USB数据包。 FaceDancer可以嗅探的只是从主机上传到USB设备的固件。在此处收听该MP3:risky.biz/facedancer

– Elmue
16年5月25日在21:49

#4 楼

如果您不怕弄脏手,在Windows上,您总是可以在加密狗的设备对象上方或下方编写过滤器驱动程序。 IoAttachDevice()函数以及以该名称开头的其他三个函数是您的朋友。这样做的好处是可以为该问题提供完整的软件内解决方案,而无需花费硬件嗅探器的费用。您会注意到,这实际上是USBpcap项目在USBPcapFilterManager.c中所做的。因此,如果您只是出于研究目的而编写本文,那么这将是一个不错的起点,除非GPL对您而言过于严格。筛选器驱动程序将仅看到其他驱动程序希望它看到的内容。请记住,在Windows内核模式下,所有驱动程序都具有相同的特权。即使连接到根集线器也可能并不总是产生有意义的结果。因此,如果一个驾驶员决定做一些有趣的事情,例如窃取入口点(IRP主要功能代码)以主动对抗任何形式的过滤或调试,那么它将成为军备竞赛。否则,这将是您可以获得的最便宜的解决方案,因为您只需要在特定的OS上就可以使用它。挂钩DeviceIoControlReadFileWriteFile等,或它们的本机副本)以及需要加密狗的驱动程序或库以及应用程序。当然,如果加密狗冒充为HID设备,则必须寻找相应的IOCTL并将其解码或直接挂钩HID函数。这是我用来调查具有USB连接功能的运动手表与盒子之间的流量的方法。我基于PaiMai和pydbg编写应用程序,因为该应用程序无法防范调试。如果您这样做,则可能必须作弊才能“说服”该应用程序以使其正常运行。IDAStealth提供了一些良好的指针(截至2016年5月,链接已失效)。

评论


>“编写过滤器驱动程序。”假设您有编写驱动程序的经验,那么您将有很多空闲时间!

– Elmue
16年5月25日在21:52

@Elmue编写过滤器驱动程序不再像以前那样困难。例如,Windows 10甚至取消了旧式文件系统过滤器。支持更简单的mini-FSFD。关于其他过滤器驱动程序类型,可以说类似的话。但是,是的,即使管理人员通常不了解或不在意这种区别及其重要性,Windows上的内核模式开发也大不相同。结果通常会出现稳定性问题。

– 0xC0000022L♦
18年11月22日在20:55