USB流量分析
摘要:USB流量分析
鼠标流量
基础知识
USB协议鼠标数据部分在Leftover Capture Data域中,数据长度为四个字节
第一个字节,代表按键
1 |
|
第二个字节,可看作为signed byte类型,其最高位为符号位,
1 |
|
第三个字节,代表垂直上下移动的偏移。
1 |
|
实战练习
flag隐藏在usb流量中,通过USB协议数据中的鼠标移动轨迹转换成flag
题目
方法1:
基于python2的UsbMiceHacker.py脚本
1 |
|
还有基于python3的UsbMiceDataHacker.py脚本
1 |
|
我这里什么也没有
贴上其他人成功的结果
方法2:
提取鼠标流量数据
1 |
|
查看usbdata.txt
剔除空行,亲身经历,这步很重要,包含空行会得到错误结果
1 |
|
没有冒号,使用脚本添加冒号
1 |
|
运行脚本,得到out.txt
使用mouse.py脚本,通过更改btn_flag的值来测试鼠标左右键
1 |
|
经过测试是鼠标右键流量,在生成的xy.txt中可以得到坐标:
看了大师傅的wp,发现我们添加冒号得到的内容不一样
大师傅直接提取鼠标流量,含有冒号,而我提取出来的不含冒号,是Wireshark版本不同的缘故,在网上找到老版本的Wireshark
1 |
|
提取流量得到usbdata.txt,包含冒号:
直接使用上面的mouse.py脚本,即可得到xy.txt。
进入gnuplot工具,把xy.txt文本里的坐标转化为图片
翻转一下图片
得到flag
1 |
|
也可以利用python脚本画图
1 |
|
得到
键盘流量
基础知识
USB协议数据部分在Leftover Capture Data域中,数据长度为八个字节。
击键信息集中在第3个字节,每次击键都会产生一个数据包。
参考文档:USB keyboard映射表
实战练习
flag信息一般隐藏在USB流量中,通过USB协议数据中的键盘键码转换成键位。
题目1:
分析流量包,发现数据是16位,所以是USB键盘流量
tshark提取USB流量
1 |
|
usbdata.txt文件内容
发现提取出来包含空行,使用命令剔除空行
1 |
|
查看usbdata.txt空余行消失
提取出来的数据可能会带冒号,也可能不带,但是一般的脚本都会按照有冒号的数据来识别。有冒号时提取数据的[6:8]
,无冒号时数据在[4:6]
可以利用脚本加上冒号
1 |
|
在网上找到两个键盘流量脚本
keyboard1.py
1 |
|
运行脚本得到:
1 |
|
因为[DEL]是删除键,所以
1 |
|
keyboard2.py
1 |
|
运行脚本得到
1 |
|
使用脚本将十六进制转换为字符串
1 |
|
得到
1 |
|
题目2:
提取流量
1 |
|
查看usbdata.txt内容
这是找到的第三个脚本UsbKeyboardDataHacker.py
1 |
|
运行脚本
1 |
|
参考文章:
https://blog.csdn.net/qq_45555226/article/details/102810474
https://github.com/WangYihang/UsbMiceDataHacker
https://blog.csdn.net/qq_43431158/article/details/108717829
CTF流量分析总结题目:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!