protocol-USBMS
protocol-USBMS
流量概览
wireshark打开流量:
可以发现流量都来自同一个接口USBPcap2
在前面发现一些descriptor
和configuration
,通过source
列可以看出这段流量来自好几个usb设备:2.2.0
,2.7.0
,2.5.0
等
通过上面的分析大概猜测应该是一个拓展坞或者usb集线器, 上面插了几个设备, 具体设备类型下面分析:
通过列描述:GET DESCRIPTOR Response DEVICE
可以确定具体设备类型,具体方法是使用过滤器:
1 |
|
过滤出四个设备:
查看DEVICE DESCRIPTOR
下的idVendor
可以确定生产设备的厂商,idProduct
则是设备的型号
上面可以看出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[从这里没有找到]
可以查到0x346d
对应的是一家生产存储芯片的厂商,大概能确定2.7.0
是一个u盘
后面也基本上都是2.7开头的流量, 所以这篇文章围绕这个u盘展开
数据恢复
尝试提取传输过程中的数据, 需要找到哪些流是控制数据传输的:
在流量的后半段发现SCSI
写命令, 尝试过滤:
1 |
|
没有解析结果的就是写入的内容:
先查看LBA(逻辑块地址)
为0x00000000
的写入内容:
可以看到U盘的文件系统格式为FAT32
接着往下看, 发现在LBA:0x7648
的位置写入了一个压缩包, 将十六进制内容提取出来得到压缩包, 发现需要密码:
继续往下看, 发现在LBA:75c8
的位置写入了一段很长的数据(101个块):
同样将数据提取出来, 在中段发现一些规律:
所有数据中每四个字节的结构都是ff
开头并接着三个相同的字节,猜测是像素信息, 保存的数据用GIMP打开, 调整宽度为380
可以看到一串字符:
但并不清楚最后结果是97c1d9738da0
还是097c1d9738da
, 尝试解压发现97c1d9738da0
是正确密码
解压后得到flag