最上面这个就是标准的串口实现,可以通过USB连接STM32或ESP8266这些MCU
中间这个可以做BadUSB(实现键盘模拟输入)
最下面这个应该是访问U盘
每一种USB设备,尤其是人机交互设备和存储设备,都有一串特殊的数字,这串数字被称为厂商ID和产品ID。这两个数字一般是成对出现的。厂商ID用于标明该产品是由哪一个制造商所生产的,而产品ID是产品的标识符。
有关协议的详细说明:USB初学(一)---USB-HID的初步认识【转】
HID设备的描述符除了5个USB的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符)外,还包括三个HID设备类特定的描述符:HID描述符、报告描述符、实体描述符。
除了HID的三个特定描述符组成对HID设备的解释外,5个标准描述符中与HID设备有关的部分有:
当时做到时候由于不熟悉usb流量分析,网上资料也看的云里物理,找了篇题解进行分析
CTF-BUUCTF-MISC-USB
buu usb 1分题
首先,修复rar的文件头
里面有一张233.png
233.png通过stegsolver可以提取出一张二维码出来
用草料二维码可以提取出一段字
ci{v3erf_0tygidv2_fc0}
另外还有一个fkm文件,发现503B这个zip文件头,另存为zip然后解压
提到了可以用tshark把指令提取出来
但我实际用UsbKeyboardDataHacker出结果
维吉尼亚密码,密码为xinan
fa{i3eei_0llgvgn2_sc0}
离flag很近,具备栅栏密码的特征
还真是
根据标识符,找到设备的情况:
2.4.0 未知设备
2.8.0 keyboard
2.10.0 logitech
2.3.0 Lite-on Technology
2.4.0 Intel Bluetooth
用usb.addr作为过滤条件筛出数据,然后分组导出
2.8.1 里藏了一个压缩包,有着rar文件头的标记
把<cap>标识去掉,新建hex文件
tips:010editior的hex粘贴需要从Edit进入
2.10.1 里藏了密码35c535765e50074a,应该是鼠标信号
解压即可得到flag
当时十分莽撞的直接拿现成脚本去试,结果什么都没有
照猫画虎x2,用提取不少帖子用tshark提取capdata
然后很不幸的得到了一个空的txt
看了hid部分以后,想了一下抓的应该是usbhid.data
有结果了
找到一个处理冒号和空格的脚本(忘记从哪里找来的)
数据整理完成,开始转换
然后得到同样一个带有rar文件头的数据包
当时为了修复这个包,花了不少力气。但事后来看,只要所有数据混到一块就全部木大。
运气好的话,没准可以用binwalk分离出来。
这类题目的套路就是把数据藏到capdata,然后找脚本读取就OK
当时在场上有把zip包从USB中提取出来,但是没把2.8.1的信息单独分离出来,即使修复文件头依然无法解压文件。只能说准备确实还不够充分,留下了遗憾。
https://github.com/WangYihang/UsbKeyboardDataHacker/blob/master/UsbKeyboardDataHacker.py
当时现场做不出来,使足力气Bing+Google,赛后发现自己没少看资料,就整理了出来
深入理解USB流量数据包的抓取与分析
CTF解题技能之压缩包分析基础篇
Wireshark官方对USB的描述
关于usb流量分析
【技术分享】从CTF中学USB流量捕获与解析
内存取证&USB流量分析 —— 【高校战“疫”】ez_mem&usb
l USB UART
l USB HID
l USB Memory
l USB UART
l USB HID
l USB Memory
bInterfaceProtocol的取值(十进制) |
含义 |
0 |
None |
1 |
键盘 |
2 |
鼠标 |
3-255 |
保留 |
tshark
-
r key.pcap
-
T fields
-
e usb.capdata > usbdata.txt
tshark
-
r key.pcap
-
T fields
-
e usb.capdata > usbdata.txt
usb.addr
=
=
"2.8.1"
usb.addr
=
=
"2.10.1"
usb.addr
=
=
"2.8.1"
usb.addr
=
=
"2.10.1"
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2022-7-6 23:30
被wx_莫克斯编辑
,原因: