0%

wireshark 网页微信抓包分析

使用WireShark抓包软件分析网页版微信,从登录到发送消息。

wireshark 网页微信抓包分析

建立连接

首先查看本机当前的IP地址

ip地址为192.168.123.178

打开WireShark,进行一次网页微信的登录等操作。

首先添加WireShark的过滤规则,查看所有的DNS数据包,查看微信服务端的ip地址

可以看到微信服务端的ip地址为112.60.8.55,根据这个ip地址设置新的过滤规则ip.addr == 112.60.8.55,查看到的所有数据包就都是本机和微信服务端的通信了。

这里进行建立TCP的三次握手,建立TCP连接

第一次握手:

第二次握手:

第三次握手:

SSL/TLS协议

我们可以看到微信使用了OSI模型中应用层与传输层之间使用的SSL/TLS协议进行数据加密。

  1. 客户端发送Clinet Hello给服务端,告知服务器自己支持的加解密算法,保证双方的加解密算法相同。
  2. 服务端返回一个Server Hello,包含了双方都支持的加解密算法,同时服务端也会生成一个随机数,双方都会保存。还会发送Certificate为服务器用私钥生成的签名证书。Server Key Exchange,在服务端生成一对公钥以及私钥,私钥保留,公钥会发送给客户端,同时将前一阶段所有的会话内容利用私钥进行前面发给客户端,用于验证服务端身份,防止中间人攻击。
  3. Client Key Exchange:客户端也生成一对公钥和私钥,私钥保留(用于客户端生成预主密钥),公钥发给服务端(用于服务端生成预主密钥)。
  4. Change Cipher Spec(双向):客户端根据交互过程中获得的信息,以及应用服务端规定的密码套件,已经生成了相应的密钥,客户端告知服务端双方可以通过生成的密码规范进行通信,同理服务端也会用相同的方式发送给客户端告知自己知道了。

完成了这些后就是建立成功了一条加密通道,应用层的数据之间可以进行加密通信。

微信登录

微信扫码并点击登录后,会出现一堆的ACK数据包,里面是对微信中各种数据的请求。

等待一段时间后还能收到一些TCP Keep-Alive的数据包,这些数据包会保持网页微信和微信服务端的连接,保证不断开。

微信好友聊天

一条微信消息会同时触发多个TCP以及SSL的数据包,数据的内容会通过SSL进行加密解密,双方进行一些通讯,同时通信的内容由于TLS/SSL握手协议的存在,数据的内容就不能被读取,也就确保了微信聊天的内容不会被中间人轻易的获取。




======================
全 文 结 束    感 谢 阅 读
======================