未知(和无主)USB 设备

逆向工程 USB
2021-06-13 02:57:53

我很少运行 Windows,但有一些 Windows 软件我想看看。这不需要安全“加密狗”,但如果没有特定的 USB 连接外围设备(几乎一无所知),就无法启动。

我的软件是 Brother PE-Design Plus,它为他们的绣花机准备 .pes 文件。硬件描述为“04f9:2100 Brother Industries, Ltd Card Reader Writer”。

这对我来说根本不是“关键任务”,因为我正在查看的机器可以使用 USB“拇指驱动器”进行配置,但较旧的机器/必须/通过这些编写器之一进行编程。

作家是稀缺和昂贵的。相同类型卡的旧版本连接到串行端口,但我拥有的软件似乎是特定于 USB 的。该卡在环氧树脂 blob 下有一个芯片,怀疑是 512Kbyte 闪存设备。

安装后,Brother 软件包含一个 CardIO.dll 文件,该文件对正确的 USB vid:pid 数字进行编码,并包含与卡相关的调试消息和混乱的 C++ 入口点名称,包括 ?ChkCardWriterConnected@CCardIO@@QAE?AW4CIOError@@ HPAEPAH@Z

该文件中没有任何内容表明预期的设备类型(即 USB 串行与 HID 等),但我对 Windows 驱动程序内部的了解有限。

我在想我也许可以编写一个 Teensy(我想我有一个 3.5)来模拟各种 USB 设备类型,看看我是否至少可以计算出 Brother 软件所期望的设备类型。否则我知道例如https://hackaday.com/2019/07/02/hands-on-greatfet-is-an-embedded-tool-that-does-it-all/和 Facedancer 项目,但是我认为像这样的大多数事情更倾向于分析可用的硬件而不是一些看不见的东西。

Windows 上的 Wireshark 什么也没显示。我还没有尝试在 Qemu(等)下设置 Windows 并查看是否可以在硬件级别跟踪任何内容,但我怀疑检测是基于热插拔事件,该事件告诉 Windows 它将积极响应存在询问。

任何想法将不胜感激。

几天后:看起来好像有任何带有正确 vid:pid doublet 的 USB 设备足以加载 Brother 读卡器驱动程序,但不能运行应用程序(并且在 Wireshark 中没有任何有用的显示)。我一直在使用设置为 rawhid 设备的 Teensy 3.5,我不确定设备类型是否重要,因为我怀疑我遇到了操作系统缓存问题,这些问题使水变得浑浊。

1个回答

我的第一种方法是,从工作系统中收集痕迹:

适用于 Windows 的 USB 事件跟踪

如果根据这些信息无法确定软件协议分析器发生了什么,例如:

http://www.sysnucleus.com/

https://www.usblyzer.com/

https://wiki.wireshark.org/CaptureSetup/USB

有时,我使用不同的工具会得到不同的结果,因此值得为您的场景尝试不同的软件协议分析器。如果这还不够,在某些情况下最终需要求助于硬件 USB 协议分析器。它们可以位于 USB 端口和设备之间,无需依赖 PC 中的软件即可捕获所有内容,这在驱动程序明确尝试阻止/绕过软件协议分析器时很有帮助。

我不熟悉这个特定的设备,但在某些情况下,检测更复杂,然后只是检测连接的特定类型的设备,在某些情况下,USB 设备可能包含应用程序将无法运行的信息,除非该数据可用.

根据您的要求,有时允许通过网络共享 USB 加密狗的donglify等解决方案可以帮助满足需求。

对于复杂的场景,需要完整的加密狗仿真。您可以在互联网上搜索有关复制/模拟 USB 加密狗的信息,找到该领域其他工作的示例,但是没有一种通用的解决方案。

如果实际工作设备不可用,那么我将使用以下工具的组合来分析在没有硬件的情况下无法启动的程序:

进程监视器使用此工具可以轻松观察应用程序是否正在寻找特定文件或注册表项。 API Monitor可以在 Windows API 级别分析应用程序。例如,简单地监视 C++ 运行时“字符串”操作就可以确定它正在寻找什么。

WinDbg 时间旅行调试

逆向工程软件,如IDA Pro / Ghidra