为取证 CTF 挑战识别 USB 设备(没有 GET DESCRIPTOR)

逆向工程 数字取证 USB 线鲨
2021-07-06 09:20:15

我目前正在享受取证 CTF 挑战。我们得到了一个 PCAPNG 文件。在 Wireshark 中打开时,该文件包含来自两个设备的一系列 URB_INTERRUPT 数据包 - 但没有标识任一设备的 GET_DESCRIPTOR 信息。

第一个设备给出一个 8 位数据序列,如下所示:

00:00:00:00:00:00:00:00
00:00:04:00:00:00:00:00
00:00:04:15:00:00:00:00
00:00:00:15:00:00:00:00
00:00:08:15:00:00:00:00
00:00:08:00:00:00:00:00
00:00:00:00:00:00:00:00
02:00:00:00:00:00:00:00
02:00:2d:00:00:00:00:00
00:00:2d:00:00:00:00:00

猜测这是一个键盘,我将序列解码为这条消息:

scanlines-are-real-cool-guys

这似乎是一个提示,对吧?来自第二个设备的 URB_INTERRUPT 数据包的第二个(更长)序列是 7 位数据,如下所示:

01:00:01:00:02:00:00
01:00:00:00:02:00:00
01:00:00:00:01:00:00
01:00:00:00:02:00:00
01:00:01:00:01:00:00
01:00:01:00:02:00:00
01:00:00:00:02:00:00
01:00:01:00:01:00:00
01:00:01:00:00:00:00
01:00:00:00:01:00:00
01:00:ff:ff:01:00:00
01:00:fe:ff:00:00:00
01:00:ff:ff:00:00:00
01:00:ff:ff:00:00:00
01:00:ff:ff:ff:ff:00
01:00:ff:ff:ff:ff:00
01:00:ff:ff:ff:ff:00
01:00:ff:ff:ff:ff:00

我猜测这可能是一只鼠标——尽管大多数鼠标数据似乎只包含 4 位,基于以下事实:

  1. 只有两个位似乎以任何重要的方式发生了变化——所有其他位似乎都只是00, 01, 或ff- 因此可能是 x 和 y 坐标
  2. 变量数据保持在 0 到 255 之间
  3. 鼠标和键盘似乎是使用 URB_INTERRUPT 的最常见设备

根据这个猜测,我通过 AWK 发送了数据:

awk -F: 'function comp(v){if(v>127)v-=256;return v}{x+=comp(strtonum("0x"$3));y+=comp(strtonum("0x"$5))}$1=="01"{print x,y}' hexoutput_second-part.txt > mouse1.txt

然后通过 GNUPLOT - 希望从屏幕键盘上得到一条跟踪消息或其他东西。但没有运气 - 情节最终为:

在此处输入图片说明

不是特别有帮助。

所以我的问题是 - 我将如何追踪哪些其他设备可能发送 7 位 URB_INTERRUPT 数据?攻击此识别过程的最佳方法是什么?

谢谢!

0个回答
没有发现任何回复~