通过Wireshark监听流量,查找对方微信、QQ、钉钉的IP地址

发布于 2022-04-13  644 次阅读


一、相关声明

本教程仅用于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月在公开会议上分享的一篇论文,其中提到了根据LengthTime to liveFlags三个维度来来判断嫌疑人真实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

参考原文


山东财经大学曹永卓,热爱编程,热爱金融。考研加油,一定要上岸!!!