protocol-USBMS

流量概览

wireshark打开流量:

image-20250421141952256

可以发现流量都来自同一个接口USBPcap2

image-20250421141518409

在前面发现一些descriptorconfiguration,通过source列可以看出这段流量来自好几个usb设备:2.2.0,2.7.0,2.5.0

通过上面的分析大概猜测应该是一个拓展坞或者usb集线器, 上面插了几个设备, 具体设备类型下面分析:

通过列描述:GET DESCRIPTOR Response DEVICE可以确定具体设备类型,具体方法是使用过滤器:

1
_ws.col.info == "GET DESCRIPTOR Response DEVICE"

过滤出四个设备:

image-20250421142309770

查看DEVICE DESCRIPTOR下的idVendor可以确定生产设备的厂商,idProduct则是设备的型号

image-20250421142434094

上面可以看出2.2.0是雷蛇的游戏鼠标

同样的方法能得到四个设备分别是

  • 2.2.0: 雷蛇生产的鼠标
  • 2.5.0: Lite-On Technology Corp.生产的未知设备
  • 2.4.0: intel生产的蓝牙适配器
  • 2.7.0: 未知厂商生产的未知设备

这里wiresshark内置的数据无法解析2.7.0对应的厂商和设备

可以在网上找到对应的数据集:

https://cms.usb.org/usbif.json[从这里这里找到了]

https://usb-ids.gowdy.us/usb.ids[从这里没有找到]

image-20250421143902203

image-20250421144015826

可以查到0x346d对应的是一家生产存储芯片的厂商,大概能确定2.7.0是一个u盘

后面也基本上都是2.7开头的流量, 所以这篇文章围绕这个u盘展开

数据恢复

尝试提取传输过程中的数据, 需要找到哪些流是控制数据传输的:

image-20250602170633436

在流量的后半段发现SCSI写命令, 尝试过滤:

1
scsi_sbc.opcode == 0x2a

没有解析结果的就是写入的内容:

image-20250602171227160

先查看LBA(逻辑块地址)0x00000000的写入内容:

image-20250602171359172

可以看到U盘的文件系统格式为FAT32

接着往下看, 发现在LBA:0x7648的位置写入了一个压缩包, 将十六进制内容提取出来得到压缩包, 发现需要密码:

image-20250602175300546

继续往下看, 发现在LBA:75c8的位置写入了一段很长的数据(101个块):

image-20250602175255178

同样将数据提取出来, 在中段发现一些规律:

image-20250602175401147

所有数据中每四个字节的结构都是ff开头并接着三个相同的字节,猜测是像素信息, 保存的数据用GIMP打开, 调整宽度为380可以看到一串字符:

image-20250602181312012

但并不清楚最后结果是97c1d9738da0还是097c1d9738da, 尝试解压发现97c1d9738da0是正确密码

解压后得到flag

参考

https://www.usbzh.com/article/detail-244.html

https://www.usbzh.com/article/detail-953.html