一、相关声明
本教程仅用于hvv、红蓝攻防对抗等专业领域,请勿用于非法用途。
二、下载地址
城通网盘:https://url95.ctfile.com/d/22064395-39422032-21b658(访问密码:YPOJIE)
天翼云盘:https://cloud.189.cn/t/IjEruyiMjAry (访问码:p4ff)
蓝奏云盘:https://ypj.lanzout.com/b00nnkori 密码: biu1
百度网盘:https://pan.baidu.com/s/14PkxeIgUVJVqoh-Do4mMtg 提取码: byia
三、图文教程
首先,我们打开wireshark,这里我们要注意的是
- 如果你是使用的有线连接的互联网,则使用
以太网
- 如果你是使用的WIFI连接的互联网,则使用
Wlan
我们这里属于第二种情况,所以选择WLAN
方法一:使用CTRL F字符串查找
按一下ctrl F,选择分组详情、字符串、然后输入代码020048
(这个是QQ语音对应的特征)
然后使用电脑QQ给对方的号码拨打语音电话,等待对方接通以后,我们点查找就可以看到对方的IP地址了。
方法二:在过滤器中填写代码回车查找
在过滤器中填写udp[8:3]==02:00:48
进行过滤,比第一种方法更加直观
为什么是020048?
那这里肯定会有人问了为什么是020048
,QQ语音通话使用的是UDP协议直连,简单来说就是语音通话的双方直接连接,不通过其他服务器,020048是QQ UDP协议72字节的报文头
同时也是为什么可以使用udp[8:3]==02:00:48
进行过滤的原因,UDP前面包括8字节UDP头,后面就是数据,但是wireshark并没有提供udp.data这种直接的过滤方式,故我们使用偏移来实现此过滤,也就只能靠udp[8:x]这样偏移来获取(注:8是固定的八个字节),QQ前面的报文头是不会变化的,所以说我们可以通过之前说的两种方式来找到包含带有真实IP的包。
微信语音获取IP特征过程
如果我们不知道特征,那么怎么去尝试寻找特征呢?其实很简单,电脑连上WIFI,给另一个微信(已知IP)打个电话,然后开着wireshark,在过滤器上可以输入我们已知的IP地址(如果你不知道自己的IP地址,可以在百度上直接输入本机ip
就可以快速获取了,我们这里已经获取好了,在过滤器中输入)
然后,我们展开详情,看看Data里有没有同样的特征
我们在这里发现,微信与QQ不同,他的报文头是随机的值,通过找规律发现前两位都是a3,根据之前说的原理,可以使用udp[8:1]==a3进行过滤。
利用data.len进行过滤
这个抓包的并没有上面的第一种方法准确(并不缺少数据,但是过滤后的无关IP较多),此方法参考了台湾中央警察大学三位研究员2020年9月在公开会议上分享的一篇论文,其中提到了根据Length、Time to live、Flags三个维度来来判断嫌疑人真实IP的技巧,根据这篇论文提供的思路,最后得出的命令为data.len >= 120 and data.len <= 150,也就是筛选Length长度为120到150区间的包
其他客户端的特征有吗?
微信、钉钉这些语音的特征有吗?
答案是有的,我们这里直接分享其特征:
- 钉钉:udp[8:4]==00:01:00:4c
- QQ:udp[8:3]==02:00:48
- 微信:udp[8:1]==a3
参考原文
- 《天禧信安:通过语音获取真实IP浅析》https://mp.weixin.qq.com/s/x3OIOehjqNAqz4Jlp8v18g
- 《Forensic Artifacts of Network Traffic on WeChat Calls》https://ieeexplore.ieee.org/document/9061437