基于wireshark对网页版微信抓包和ios微信抓包分析
字数 1621 2025-08-22 12:22:15
基于Wireshark的微信网页版和iOS端抓包分析教学文档
一、准备工作
-
工具准备:
- Wireshark网络协议分析工具
- 可正常使用的微信网页版和iOS客户端
- Python环境(用于后续数据处理)
-
网络环境配置:
- 确保PC和移动设备在同一局域网
- 对于iOS设备抓包,可将PC配置为无线AP
二、网页版微信抓包分析
1. DNS查询分析
-
登录微信网页版时,首先会发起DNS查询:
- 查询域名:
extshort.weixin.qq.com - 查询类型:标准查询(A记录)
- 查询域名:
-
DNS响应特征:
- 返回多个IP地址(负载均衡设计)
- 示例IP:223.166.152.101等
-
本地DNS服务器:
- 通常为路由器地址,如192.168.31.1
2. TCP连接建立
-
三次握手过程:
- 第一次握手:客户端发送SYN=1,seq=x
- 第二次握手:服务器回复SYN=1,ACK=x+1,seq=y
- 第三次握手:客户端发送ACK=y+1,seq=x+1
-
连接端口:
- 目的端口80(HTTP协议)
3. HTTP交互
-
获取登录二维码:
- HTTP POST请求URI:
/getloginqrcode - 服务器返回二维码图片数据
- HTTP POST请求URI:
-
登录后通信:
- 切换到其他服务器IP(业务分离)
- 大量HTTP POST/GET请求用于数据同步
4. 加密协议分析
-
TLS握手过程:
- Client Hello:客户端发送支持的TLS版本、加密套件和随机数
- Server Hello:服务器选择参数并返回服务器随机数
- Certificate:服务器发送CA签发的证书
- Server Key Exchange:密钥交换参数
- Change Cipher Spec:加密方式变更通知
-
文件传输分析:
- 上传图片时URI包含
uploadmsgimg - 通过HTTP POST传输文件数据
- 上传图片时URI包含
三、iOS端微信抓包分析
1. 网络配置
-
抓包方法:
- PC作为无线AP,移动设备接入
- Wireshark绑定无线接口
-
设备识别:
- 获取移动端的IP和MAC地址
2. 通信特征
-
DNS查询:
- 返回的服务器IP与网页版不同(如116.128.x.x)
-
TCP高级特性:
- 出现SACK(选择性确认)字段
- 用于指示丢失和需要重传的报文段
3. 微信特有协议
- MMTLS协议:
- 腾讯自研的安全通信协议
- 基于TLS改进,保护所有网络通信数据
- 对业务开发人员透明的加密方案
4. 图片传输分析
-
HTTP图片下载:
- HTTP Get请求获取图片
- 服务器分多个TCP段传输数据
- 最终以HTTP OK(JPEG JFIF Image)结束
-
TCP分段特征:
- 典型MTU为1500字节,减去40字节头得1452字节有效载荷
- 观察到的TCP段包含1440字节数据
-
图片数据重组:
- 多个TCP段具有相同ACK号
- 最终HTTP报文重组所有分段数据
-
JPEG文件特征:
- 文件头:FF D8
- 文件尾:FF D9
- 可通过Python提取十六进制数据重建图片
import binascii
filepath = "image.jpg"
payload = "FFD8...FFD9" # 实际抓取的十六进制数据
with open(filepath, "ab") as f:
pic = binascii.a2b_hex(payload.encode())
f.write(pic)
四、关键发现与总结
-
微信架构特点:
- 多服务器负载均衡(不同业务使用不同服务器)
- 动态切换连接服务器
- 网页版和移动端使用不同的服务器集群
-
安全机制:
- 网页版使用标准TLS加密
- 移动端使用改进的MMTLS协议
- 加密业务数据但部分包头信息仍为明文
-
抓包分析技巧:
- 使用显示过滤器排除无关流量
- 重点关注DNS查询和初始TCP连接
- 对分段传输的数据进行重组分析
-
学习要点:
- 掌握TCP/IP和HTTP协议基础
- 理解TLS/SSL握手过程
- 学习大型互联网服务的架构设计
- 熟练使用Wireshark过滤和分析技巧
五、进阶研究方向
- MMTLS协议逆向分析
- 微信消息传输的时序分析
- 不同业务接口的URI规律研究
- 微信WebSocket长连接分析
- 移动端与网页版的协议差异比较
通过本教程,您已掌握使用Wireshark分析微信通信的基本方法,为进一步研究即时通讯协议和安全机制奠定了基础。