Athony

使用wireshark抓包软件分析微信协议--zucc
已转站 个人blog 转载自自己的csdn,经朋友反应,请暂时使用电脑阅读,该格式图片不支持手机观看    因...
扫描右侧二维码阅读全文
19
2019/06

使用wireshark抓包软件分析微信协议--zucc

  • 已转站 个人blog
  • 转载自自己的csdn,经朋友反应,请暂时使用电脑阅读,该格式图片不支持手机观看
  •    因为csdn自动压缩了上传的图片,导致高清图非常的小,稍后将发布可以下载的文档说明 下载地址,可以看到超清的图片,请自行下载

  • (现在经过朋友反应实在太小,重新截了一次图,这次是正常比例,但是改变了高清分辨率,如若需要高清,还是请下载)

  • https://download.csdn.net/download/sos768/11230576

  • 1.通过使用wireshark分析网络协议。

2.了解微信认证、聊天协议。


  • 有朋友配置AP的时候遇到了一些麻烦,如果相处于同一个wifi时候,又不想用手机的热点,用宿舍的网线的话,可以使用这个: http://wifi.ggsafe.com/

  • 如若软件出错,请自行搜索: http://wifi.ggsafe.com/faq.shtml

  • 或者可以私聊博主,借用无线wifi 网卡usb进行配置

实验内容原理实验结果与分析

1.选择微信使用模式(微信App或者网页微信),合理配置网络环境。

【实验步骤】

  • 使用mac进行wireshark抓包,并选择使用客户端微信,同时将机器置于手机热点wifi之下

61980-b8x121gkh2.png

  • 可以看到当前实验机器获得的ip为 172.20.10.2

所以当前连接的AP站点ip为172.20.10.1

【实验结果与分析】

配置当前的ip以及微信所在的实验环境,如上图所示

2.分析微信登录认证方式。

【实验步骤】

  • 因为不必要的ipv6的信息传输干扰,所以先屏蔽了一些ipv6的信息

  • 以下是我之前使用的笨方法,一个一个去屏蔽

38899-4mhhgs8tyf8.png

  • 经过朋友提醒,还可以这么做,直接ip筛选,效果是一样的:
    87463-dvgxtz508tk.png

  • 从上图可以看出,我的电脑获得的ip是172.20.10.2,并且网关是172.20.10.1

  • 此时,我的电脑正在发出dns,域名查询的包,之所以是8.8.8.8,是因为我对电脑做了一些配置,如下图所示,我的电脑会默认向一下两个dns服务器发出请求,(10.61.10.10是学校的dns服务器之一emm)。

78994-qfm9j81br2s.png

  • 当我们拆开去解读消息的时候会发现他的query是去查询这个域名 szshort.weixin.qq.com。并且在之后dns返回了查询到的IP

12623-nfqaqzrr1i.png
85371-kz59g81a0pm.png

  • 当我打开完客户端,扫了二维码之后但还没在手机按下确认键的时候,我的wireshark抓到了这些包,看样子是在获取二维码和一些相关的信息。

07077-100i9seo8qyr.png

  • 点击确认之后,从抓取的包里面也可以看出,双方在不停的发包并进行ssl加密传输,和一些相关的认证信息。

83571-aysjuevsrf8.png

97986-5etzsjt304.png

-  建立连接,并且获取一些好友队列的信息

发送post请求进行data验证并且获取消息。

80570-4652exgmz5n.png

【实验结果与分析】

成功与服务器进行了连接,并且认证成功

3.分析微信好友聊天过程。

【实验步骤】

作为测试,发送了四条消息:
46964-isgu17hjngb.png

  • 做完实验后,又去查了以下相关资料,原来抓包软件可以进行设置成ip显示成域名,下图是对之后实验的ip更直观的一种显示

48134-gbl54qgt7e.png

握手协议,也是一次认证,tls/ssl 之间的认证

61472-aux7zt3fqho.png

49644-8i06oxpjrwh.png

  • 一共抓到了以下这些包,经过分析,可以确定此次信息传输是与之前dns查询中查到一个服务器121.51.140.144进行了交互

72314-1j2n1hbnj4h.png

  • 进行以下筛选,172.20.10.2是我电脑的ip地址

76389-o5ch00vy859.png

  • 可以看到信息数据干净了许多,继续进行分析

88461-onls5ewjqr.png

  • 前三个包是在进行tcp三步握手认证,由我的电脑向服务器发送syn请求,服务器收到后发送syn和ack进行确定,最后从客户端向服务器发送ack完成认证。

18048-q77nehfvqq.png

  • 之后从第20个包开始,便一直在进行交互,不断的进行连接,传送完消息之后客户端的Fin断开连接请求,和之后恢复连接的ack,

(在发送fin之后,一定时间内,如果客户端和服务端还有数据交互,两者可以恢复连接而不需要再进行三步握手认证)

51003-uxyok3s4eli.png

87477-dhla3tbx7mg.png

65776-9zr30vv4im7.png

  • 期间有一次重置,断开连接并且重新进行了三步握手认证进行连接

46249-xxealo8kw4k.png

  • 测试中途发现了一些不是微信服务器的ip频繁出现,如下图中的121.51.8.102,在我使用小号进行测试的时候出现了多次,而且其flags是psh和ack居多(数据传输),然后去ip138.com进行了ip查询,结果与预料相差不大。

 - 查询网站时 ip138.com  (仅供参考)

20672-d8i5biwqwdd.png
57207-h03251hul2k.png

4.分析微信群聊过程。

【实验步骤】

  • 选择了群聊进行分析,一共发送了以下这些信息:

63167-p1b3uuupnj.png

  • 使用121.51.24.106进行ssl加密传输,在中间传输的时候出现了数据重传的情况,说明当不可达时,数据包会自动选择进行重传,直到传输成功。

04264-30px071ldof.png

  • 这一步里面syn同步请求包也在不断的重新发送,直到之后的syn+ack包的确认连接使得连接开始建立,非常经典的tcp三步握手认证。

  • 58905-9dhnttoacyf.png

  • 与和之前的单独私聊的过程几乎一致,只是请求的服务器发生了改变,从121.51.24.144 转换成了121.51.24.101

10177-wpix4asraim.png

  • 这是客户端向服务端提交数据和服务端向客户端发送的回应包

可以看到传送的信息是进行加密之后的,只有提交的data数组 是可以明文可见的,还有服务端的回应中的code等信息是可见的

50676-5c1vr78zv0o.png

  • 这些http请求和回应组成了信息交互的大部分过程

97301-bz85gm1fsy.png

5. 总结微信聊天协议

  • 可以发现微信的聊天信息都进行了ssl加密进行传输,并且在选择服务器的时候会选择最近的服务器。更容易发现的是,微信的聊天基于http协议,通过get,post与服务器进行交互,穿插在包里的http响应和请求包足以证明这一点,而当我把传送数据替换成图片时,交互的服务器并没有发生大的改变,依旧是在121.51.24.144和121.51.24.101进行切换交互。

  • 对于微信好友头像的获取,从wx.qlogo.cn和cwx.qlogo.cn里进行get获取

 34897-9ova6as3b1k.png

41997-qowbtweun.png

  • 在做完了全部客户端的测试之后,我又去进行了web端的测试,发现传输消息使用的服务器域名为szshort.weixin.qq.com,文字数据和图片的传输,get和post请求,而在调用地图的时候,会转换成另一个服务器去调取数据进行同步。以下是一部分web测试数据。

36728-9xgskj9nylp.png

  • 对web端来说,原来还有一些密文随机数的认证方式,且随时间会发生改变

30433-bq5xextjwhm.png

70230-6jap8tznz1a.png

三、本课程心得及建议

  • 在动手实验的时候,遇到了很多的困难,但在自己的动手实践,和在不断的尝试中获取的知识来看,这是值得的。

  • 在失败中,我收获了许多,巩固了一些基础知识,在复杂的包堆里面找到了正确的包,也学会了如何去过滤一些不需要的包,希望这门课之后会更加的广阔,也希望更多的同学可以收获宝贵的知识。

参考blogs

最后修改:2019 年 06 月 24 日 09 : 50 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论

2 条评论

  1. athony

  2. wz

© 2018-2019 Copyright   | 浙ICP备18047860号-1| SiteMap