用于 USB 调试、流量捕获和故障诊断的实用程序

  • Windows 上的 Open USB 硬件嗅探器和 ETW 可以让您详细查看流量、枚举和电源阶段,这对于调试有问题的设备至关重要。
  • Wireshark 与 TShark 和 tcpdump 一起,仍然是分析网络和 USB 协议的标准工具,即使在加密和零信任环境中,由于使用了导出的 TLS 密钥,它也能正常工作。
  • Android 调试桥、串口嗅探以及 Ubertooth、Attify Badge 和 KillerBee 等物联网工具将诊断范围扩展到移动电话、工业总线和无线通信。
  • 使用这些工具需要遵守法律和良好做法,因为捕获的数据可能包含敏感信息,滥用这些数据可能构成犯罪。

用于 USB 调试、流量捕获和故障诊断的实用程序

如果你从事 USB、Android、物联网或任何类型的联网硬件相关工作,迟早都会遇到以下问题: 沟通故障、枚举不完整或驱动程序无法提供任何线索到了那个时候,盲目操作简直是噩梦:你需要了解“电缆”上和操作系统中究竟发生了什么。

好消息是,如今我们拥有一个非常成熟的生态系统。 用于 USB 调试、流量捕获和错误诊断的实用程序从开源硬件嗅探器到 Wireshark、Windows 上的 ETW、Android 上的 ADB 以及 USB 3.x 的特定工具,我们将把它们全部汇集在一起​​,并整理成一个连贯的指南,以便您可以选择合适的工具来解决您正在处理的问题。

USB硬件嗅探器:实时查看总线状态

当问题出在最底层时,你需要的是一个团队, 无需依赖操作系统、驱动程序或 API 即可拦截 USB 流量这时就需要专门的硬件嗅探器了。

近年来最有趣的项目之一是Alex Taradov设计的袖珍型USB 2.0嗅探器,这是一款…… 完全开放的硬件 它能够捕获高速流量(480 Mbps),并将其直接转储为 PcapNG 格式,以便使用 Wireshark 进行分析。

该设计的核心基于…… Cypress CY7C68013A 微控制器它是一款非常流行的通用USB接口,工作频率为48MHz,并在此基础上增加了一个 FPGA Lattice MachXO2-2000HC 负责重建NRZI信号和管理同步,以及 USB3343 收发器 它与 USB 总线的 D+ 和 D- 线物理连接。它们共同构成一个流水线,其中 PHY 捕获信号,FPGA 重组数据包,微控制器将它们封装成带有精确时间戳的 PcapNG 块。

由于这种架构无需中间操作系统,该设备能够保持 持续速率在 40-50 MB/s 范围内。它接近了 USB 2.0 高速的实际极限,其采集保真度仅靠软件很难达到。整个项目,包括固件、Verilog 代码和原理图,都已上传至作者的代码库,方便学习、修改,甚至可以委托他人生产电路板。

另一个优点是它的尺寸:该电路板小巧到可以放进口袋,而且不需要单板计算机 (SBC) 或第二台专用计算机。与之前基于迷你电脑的项目(例如使用 NanoPi NEO Air 的 tinySniffer)不同,这里 FPGA 负责处理工作,微控制器仅限于数据排序和发送,而 PC 只负责接收和显示数据。这大大降低了因 CPU 负载、延迟或时间戳抖动而造成的损失风险。

USB硬件嗅探器和诊断工具

Wireshark 是 USB 和网络调试的天然伴侣

大多数现代硬件嗅探器,包括 Taradov 的,都会将流量转储到 PcapNG 文件,这样您就可以直接用 Wireshark 打开它们。这完全合情合理:Wireshark 是剖析协议(包括网络协议和 USB 协议)的事实标准。

Wireshark 是一个 一款协议分析器,可让您逐包查看设备之间交换的内容。它支持以太网、Wi-Fi、蓝牙、ATM、USB、令牌环网、帧中继和FDDI,并能识别数百种物理层、数据链路层、网络层、传输层和应用层协议。您可以实时捕获数据,也可以保存捕获内容,随时离线分析。

除了图形界面外,Wireshark 还具有以下功能 TShark,它的命令行版本这对于自动化分析、通过 SSH 工作或将其集成到脚本中非常有用。两者都共享强大的过滤器,而这正是其神奇之处:您可以只保留您感兴趣的内容(端点、PID、特定 IP、TLS 流等),而忽略其余的干扰信息。

在 USB 环境下,当数据包捕获来自物理嗅探器时,Wireshark 不受系统驱动程序的限制:它可以准确地捕获总线上传输的控制、批量、中断和同步事务。特定的插件会对其进行解释。 字段包括 PID、设备地址、端点、数据长度、标志和硬件时间戳这是调试设备无法枚举、描述符错误或端点应该响应时没有响应的原因的关键。

Wireshark 可以读取和写入多种捕获格式,例如: libpcap/tcpdump、pcapng 等它甚至可以使用 GZIP 进行实时压缩。它支持多种技术(以太网、802.11、PPP/HDLC、蓝牙、USB 等),并且在拥有相应密钥的情况下,能够解密 IPsec、ISAKMP、Kerberos、SNMPv3、SSL/TLS、WEP、WPA/WPA2 等,极大地扩展了其在加密和零信任环境中的应用范围。

Wireshark 在网络安全和零信任环境中的应用

尽管越来越多的流量都经过加密, Wireshark 仍然是任何蓝队工具箱中的核心工具。加密可以隐藏内容,但不能隐藏元数据:IP 地址、端口、连接模式、数据包大小、时间、行为的突然变化等。

在零信任架构中,即使在内部网络内部,所有数据也都会加密,Wireshark 通常与以下工具结合使用: Fiddler 或 mitmproxy Wireshark 可以使用自身的证书或受控的 TLS 终止机制权威地检查 HTTPS 流量。此外,Wireshark 还可以使用现代浏览器生成的 TLS 密钥文件 (SSLKEYLOGFILE) 来…… 选择性地解密 TLS 1.3、HTTP/2 甚至部分 QUIC/HTTP/3 流量 当会话密钥可用时。

实际上,最终采用的是混合模式: SIEM/SOAR平台(例如Sentinel、Elastic、Splunk等)和传感器(例如Zeek或Suricata)会生成高级警报和日志。另一方面,Wireshark 用于深入分析特定事件的细节,查看实际数据包,重建数据流,并验证假设。这种组合可以减少误报,并大大加快事件响应速度。

Wireshark 在业界也备受推崇。 与 SSH、RDP 或 VPN 相关的事件响应即使内容已加密,您也可以通过数据流持续时间、数据包大小、消息间隔时间或身份验证尝试次数来区分成功的会话和失败的尝试。这是一种相当复杂的方法来检测凭证填充攻击或大规模远程访问扫描。

在进攻方面,红队和渗透测试人员经常使用 TShark 和 tcpdump 来获取信息。 监视网络流量、识别正在使用的服务和协议、观察防御措施的运行情况,或者是否存在深度边界检查配合 Scapy,可以生成和注入自定义数据包,并实时查看网络反应。

使用 ETW 和特定工具在 Windows 系统中进行 USB 调试和诊断

在 Windows 生态系统中,除了传统的包分析器之外,您还拥有一个基于以下方面的非常强大的基础架构: Windows 事件跟踪 (ETW) 这样就可以非常详细地记录 USB 协议栈中发生的情况:枚举、端口状态变化、电源故障、设备启动问题等等。

USB 集线器控制器会发出包含各种任务的 ETW 事件,您可以使用 Netmon 或其现代替代品等工具捕获和查看这些事件。 Microsoft消息分析器 (现已停用,但仍在许多环境中使用)或使用更新的 ETW 查看器。通过筛选“USB 集线器枚举”任务(任务 2),您可以仅关注与插入设备相关的事件,并进行查阅。 Windows 系统中的 USB 端口诊断指南.

例如,在搜索诸如以下事件时: “开始枚举端口”或“端口枚举完成”您可以测量系统枚举设备所需的时间、卡在哪个步骤,或者检测过程中是否存在电信号抖动(去抖动)。其目的是测量事件之间的间隔,例如:

  • 开始端口枚举 → 端口枚举完成:总枚举时间。
  • IoInvalidateDeviceRelations → IRP_MN_QUERY_DEVICE_RELATIONS:PnP 启动设备查询所需的时间。
  • IRP_MN_QUERY_DEVICE_RELATIONS 已完成 → IRP_MN_START_DEVICE 已派发:从检测到新的 PDO 到设备有效启动之间的延迟。

电源循环期间还有一些特定的 ETW 任务,例如从睡眠状态 (D0) 恢复设备、选择性地暂停集线器以及处理设备启动 IRP。测量事件之间的差异 “USB 设备集 D0 设备电源 IRP 已派发”和“…已完成” 你可以判断瓶颈是出在设备本身、驱动程序还是…… USB电源问题.

在 Windows 8 及更高版本中,微软还添加了 USB 3.0专用调试器扩展 Visual Studio/WinDbg 中新增了面向 xHCI 生态系统的调试工具。这些扩展程序可以显示控制器状态、传输队列、端点、端口状态以及底层详细信息,结合 ETW 和流量捕获,能够极大地简化驱动程序和固件中细微故障的定位。此外,还提供相关指南。 识别 USB 端口的版本 当对兼容性存在疑问时。

Android调试桥(ADB):Android中的调试和USB/网络流量

如果你对手机和平板电脑感兴趣,那么拥有一个诊断用的“瑞士军刀”就相当于拥有了 Android 调试桥 (adb)它是一款客户端-服务器工具,允许您的开发机器通过 USB 和 Wi-Fi 与 Android 设备通信。

adb架构由三部分组成: 客户端(adb) 你电脑上运行的程序, 守护进程(adbd) 运行在设备上的程序,以及 服务器 它驻留在您的计算机上,充当您和服务器之间的中介。服务器打开 TCP 端口 5037,如果存在模拟器,则会在端口范围 5555-5585 中搜索它们并连接到每个实例。

要启用 USB 调试,您必须激活 开发者选项和 USB 调试 在设备上;如果连接出现问题,请咨询。 如果手机无法识别 USB 接口该怎么办从 Android 4.2.2 开始,每台连接的 PC 都必须通过显示 RSA 密钥的对话框进行明确授权,以防止任何未知设备通过简单地插入来控制移动设备。

在 Android 11 及更高版本中,谷歌添加了 无线调试这样,您就可以使用二维码或配对码通过 Wi-Fi 将设备和工作站配对,而无需使用数据线。在 Android Studio 中,您可以使用“使用 Wi-Fi 配对设备”选项,也可以通过命令行执行此操作。 adb pair ip:puerto y adb connect ip:puerto.

设备连接后,adb 为您提供了大量的选项。 诊断应用程序、系统和网络问题:

  • 安装和卸载APK (adb install, adb uninstall),还可以通过拆分生成多个 APK。
  • 端口转发 (adb forward tcp:host tcp:device oa 本地套接字),对于调试内部服务非常有用。
  • 复制档案 设备内部和外部(adb pull, adb push).
  • 打开交互式 shell (adb shell并执行 Unix 命令和工具,例如 toybox o logcat.

此外,adb 还通过诸如以下实用程序集成了对关键子系统的快速访问: am(活动管理器)、pm(软件包管理器)或 dpm(设备策略管理器)借助它们,您可以启动活动、重启服务、终止问题进程、强制堆转储、控制配置文件、操作权限、创建或删除用户、在企业环境中配置设备/配置文件所有者等等。

对于可视化调试,您可以使用如下命令: screencap y screenrecord它允许您捕获设备上正在发生的事情的屏幕截图或录制视频,然后通过以下方式提取它: adb pull非常适合记录 UI 错误或流程,其中流量捕获需要与用户看到的内容关联起来。

串口嗅探和工业总线:并非所有东西都使用 USB 或以太网

在工业自动化环境中,无论是数控机床、可编程逻辑控制器还是嵌入式电子设备,基于通信的集成都非常普遍。 UART/TTL、RS-232 或 RS-485 使用 Modbus RTU 或 ASCII 等协议、工业设备的专有通信等。调试这些协议的一种经典且非常有效的技术是…… 被动模式下的物理嗅探.

其思路是搭建一台“嗅探电脑”,配备两个 USB 转串口适配器,这两个适配器的 RX 输入端并联连接到主电脑和目标设备的 TX 输入端,共用一个地线,但适配器的 TX 输入端不连接,以避免干扰。这可以通过诸如……之类的软件来实现。 串口工具 或者任何高级终端,打开两个端口(例如 COM5 和 COM6),并调整速度和格式(通常为 115200-8N1,但您可以尝试不同的设置或使用示波器进行测量)。

异步串行协议(起始位、前7/8个最低有效位数据位、可选奇偶校验位和停止位)在TTL、RS-232或RS-485电平下都是相同的;区别在于…… 电气电平和物理拓扑结构(单端与差分)所以你需要合适的适配器:USB-TTL、USB-RS-232 或 USB-RS-485。

像 SerialTool 这样的工具不仅可以显示十六进制和 ASCII 格式的流,还可以集成 用于读写寄存器、带时间戳的监控器和数据记录器的 Modbus 客户端 这样就能保存整个会话以供后续分析,甚至可以导出为可以使用 Wireshark 或您自己的脚本打开的格式。

这种方法非常有效 协议逆向工程如果您只有与机器通信的专有软件,您可以“嗅探”对话内容,记录帧、地址、CRC校验码、时间信息,然后使用您自己的物联网应用程序或网关复制该行为。

物联网和无线电:蓝牙、ZigBee、UART、JTAG 等

在物联网领域,情况会变得更加复杂,因为还有其他因素需要考虑。 无线协议和内部调试总线分析这些渠道可以检测出安全漏洞、严重漏洞或简单的实现错误。

对于蓝牙和低功耗蓝牙(BLE),其中一个参考资料是该项目。 优博图斯Ubertooth ONE 是一款开源的软硬件套装,可用于捕获和注入蓝牙经典(基本速率)和低功耗蓝牙 (BLE) 流量。它包含一个 Ubertooth ONE 天线(您可以购买或自行制作)以及用于与其通信并启用相关功能的 Linux/macOS 工具…… 嗅探、解码和导出流量包括从较旧版本开始,通过集成的 BLE 插件支持使用 Wireshark 进行分析。

分析蓝牙流量并非易事,因为该协议十分复杂,依赖于跳频和配对程序。然而,Ubertooth 却能轻松解决这个问题。 丰富的文档、维基和论坛 涵盖了从协议基础知识到捕获和分析的实际示例的所有内容。

当您可以实际接触物联网设备时,另一个重要的工具是 Attify 徽章这是一款小巧的多功能开发板,可与 UART、SPI、I2C、JTAG、GPIO 和其他典型的嵌入式硬件接口进行交互。借助它,您可以嗅探 UART 通信。 通过串口控制台获取root权限,通过JTAG执行内存转储,操作GPIO引脚 一般来说,要有一个合法的后门来访问设备的电子元件。

对于 ZigBee 和 802.15.4 网络,该项目 杀手蜂 它相当于 Ubertooth:一个软件框架(主要用 Python 编写)加上兼容的硬件(例如 Atmel RZ RAVEN USB 闪存盘),可以实现…… 捕获、注入和分析 ZigBee 流量利用 Scapy 的数据包生成支持,发起拒绝服务攻击、入侵家庭自动化网络等。

为了避免在安装工具和依赖项时陷入混乱,还有…… Attify OS这是一个基于 Ubuntu 的发行版,预配置了物联网审计所需的一切:支持 Ubertooth、Attify Badge、KillerBee、GNU Radio、HackRF、JADx、IDA(如果您拥有许可证)、用于模拟固件的固件分析工具包等等。缺点是它以虚拟化镜像(适用于 VMware、VirtualBox 等)的形式分发,这有时会给 USB 直通带来一些麻烦,但对于许多实验室来说,它仍然是一种非常便捷快速的部署方案。

合法性、良好实践和补充替代方案

如今捕获网络或 USB 流量在技术上很简单,但理解这一点至关重要: 并非所有能做的事情都是合法或合乎道德的。例如,在西班牙,使用 Wireshark 或物理嗅探器等工具本身并不构成犯罪,但未经同意访问、拦截或传播第三方数据则属于发现和泄露秘密的犯罪行为。

为了保护自己,请始终将自己限制在…… 您或已明确书面授权您的客户拥有的网络和设备不要利用咖啡馆、机场或邻居家附近的公共Wi-Fi网络“窥探别人的隐私”。即使你认为自己“只是在偷看”,但如果你截取的密码、短信或个人数据的屏幕截图被发现,事后向法官解释起来远比想象中复杂得多。

另一个关键点是 屏幕截图可能包含高度敏感信息凭证、内部流量、元数据、密钥等等。如果您要与第三方共享 pcap 文件以帮助您进行调试,请仅与您信任的人共享,尽可能匿名化,如果存在加密流量,请不要轻易泄露私钥。

至于其他替代方案和补充工具,除了已经提到的工具(tcpdump、TShark、Zeek、Suricata、Fiddler、mitmproxy)之外,还有以下解决方案: CloudShark (专注于通过网络分析和分享截图) SmartSniff 适用于 Windows 的软件,或诸如此类的可视化查看器 以太网猿它们中的许多都与 Wireshark 配合使用效果很好,因为它们都采用 pcap 格式,所以你可以将一些工具的暴力破解能力与另一些工具的精细分析能力结合起来。

整个生态系统——包括开源硬件 USB 嗅探器、Wireshark 和 TShark、Windows 上的 ETW 和 USB 3.x 调试工具、Android 上的 ADB、工业总线串口工具、Ubertooth 或 KillerBee 等物联网框架以及现代分析平台——使您能够…… 从“我完全不知道发生了什么”到“我看到了每一个移动的部件,我知道它在哪里出了问题”并且也理解 为什么USB传输速度慢 在适当的时候。

如何启用和禁用 USB 端口
相关文章:
如何在 Windows 中启用或禁用 USB 端口:完整的分步指南