本来想抓普通网页版微信,但是换了好几个微信号说安全问题无法登陆,,,只能去QQ浏览器的微信(应该是插件)。只是熟悉了一下过程,并没有深入分析微信传输协议(其实是不会)。

网页版微信

一:实验目标

1.认识web端微信通过TCP建立连接和使用SSL/TLS协议进行数据加密的过程。
2.抓包分析IOS端微信收发的某种数据。

二:实验过程与分析
1.先查看本机的IP地址。

2.打开浏览器准备登录微信网页版。扫码的时候查看抓的包,其中有个DNS数据包询问extshaort.weixin.qq.com的IP地址。

查询报文:DNS查询报文为标准查询即通过主机名查询对应的IP

这是192.168.31.1回复的DNS报文,查询本机网络信息。

192.168.31.1是本地的DNS服务器,所以询问也是通过学校的DNS服务器。然后再通过校外的DNS服务器找到相关服务器的IP地址,当然回复过程也是先到本地DNS服务器再发送到本机。

DNS回复报文

从DNS回复报文中可以看出网页版微信的IP地址有多个,为了应对大流量的访问包括避免宕机影响业务,大企业或者大型服务都会有多个服务器。
从接下来的报文中可以看出用户选择了223.166.152.101这个服务器进行访问连接。因为DNS查询后有一定数量的TCP数据包是本机与223.166.152.101之间的。

3.分析上述提到的TCP数据包(三次握手过程)。

看到了源IP是本机IP,目的IP为DNS返回的其中一个IP。分析TCP报文内容,看到了目的Port为80即常见的HTTP协议的端口。
然后标志位 SYN置1,为TCP三次握手中的第一步。说明本机正常通过TCP与微信的服务器建立连接。

服务器回复的报文。其中确认号ACK=x+1,x为请求报文中的0,syn = 1,表示客户端的请求报文有效,服务器可以正常接收客户端发送的数据,同意创建与客户端的的新连接。

客户端收到服务器回复的报文后得知服务器允许建立连接,此时客户端还会再发送一个TCP报文,这个数据包的seq = x+1=1,ack还是为1。表明可以建立连接了。接下来的就是双方的数据传输。

4.三次握手后建立连接后客户端向服务器发送了一个 HTPP post报文,客户端开始提交数据。看HTTP的内容,request URI,而这个URI为…/getloginqrcode,应该就是微信登录的二维码。

5.扫码登录微信

登录后有大量的TCP数据包及HTTP POST和HTTP响应数据包。从这里可以看出这时候与登录前的服务器IP不同,但是都是之前DNS返回的IP之一。可能这种大型业务不同的服务器承载着不同的业务需求。

客户端向微信服务器请求同步数据等数据传输的HTTP。

6.微信使用了应用层与传输层之间的SSL/TLS协议进行数据加密。
6.1 Client Hello开始客户端向服务器发送建立连接的请求:(版本号,随机数等)


支持的加密套件

6.2Server Hello,根据请求中携带的内容建立连接版本,加密套件,生成服务器端随机数。

6.3服务器向用户发送由CA签发的证书,验证身份。(Certificate,server Key exchange等)

6.4Change Cipher Spec(通知)

6.5双方可以加密通信。

7.给好友传一张照片

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210116185757641.png)

抓包发现还是原来的建立通信的过程

抓包发现了HTTP请求报文,内容是关于uploadmsgimg的。

尝试IOS端的微信抓包分析

1.用PC作为一个无线AP,让移动端接入。查看移动端的IP和MAC地址。

2.将wireshark绑定在这个无线接口,进行抓包分析。

还是先通过DNS查找微信的服务器IP。IP地址和之前的类似。116.128开头。

3.获得登录二维码

在获得二维码过程中,终端和121.51.73.100进行了大量的TCP通信。

观察其中一个报文,发现了之前不太了解的字段SACK。在网上查找相关知识,得知这个字段可以告诉发送方哪些报文段丢失,哪些报文段重传。根据这些信息,发送方可以重传这些真正丢失的字段。

4.登录。经过网上查找发现微信客户端用的是自己改进的mmtls协议。
也抓到了相关的mmtls POST数据包。

在刷新微信列表的时候发现有大量的TCP包和其中的HTTP请求包。以下面这个为例:
开始有个HTTP Get,应该是下载某个数据,然后服务器向用户发送多个TCP 后,最后接上一个HTTP OK(JPEG JFIF Image)。

一般来说TCP可以发1500个字节,减去40字节的头文件就还有1452个字节,所以一般大于1452TCP也会分段。如上图,一个TCP中包含1440字节数据。
TCP segment of a reassembled PDU,TCP层收到上层大块报文后分解成段后发出去。

ACK值相同。

上图是最后的HTTP OK报文,其中包含了之前6个TCP的数据,让我想起了之前做的IP分片,最后也是ICMP重组所有分片。

看到JPEG就知道应该是关于图像数据的GET传输,找到最后的HTTP OK 报文。找到了JPEG File数据段。当时看到了开头的FF D8,就抱着试试看的态度去找了一下JPEG文件的文件格式,发现正是是开头FF D8,结尾是FF D9,数据段也符合。就想着将数据取出生成JPEG文件。

用python将Hex 串写入一个文件并以图片形式存储到本地。
import binascii
# payload为十六进制字符串,如:“ffd8ffe111e0457869...”;经过如下代码转换,可将pic存储为图片形式并可以正常打开
filepath = "C:\\Users\\14112\\Desktop\\yang\\a.jpg"
payload = "FF D8......FF D9" #只取了文件头和尾,数据太长
f=open(filepath,"ab") # filepath为你要存储的图片的全路径
pic = binascii.a2b_hex(payload.encode())
f.write(pic)
f.close()

发现生成的图片可以打开(如下图),

生成了上述图片就去微信列表找头像,发现下面这个群头像正是从抓到的报文中提取出的十六进制数据生成的。

了解到微信使用的是基于TLS的mmtls,能力有限,就不再分析腾讯未公开的协议了。原有的加密是存在业务层,加密的是请求包主体,但是数据包包头是明文,其中还包括用户的id等信息,而且加密的安全性也都待加强,所以腾讯开发了保护Client到Server之前所有网络通信数据、而且加密通信保护对业务开发人员透明的安全通信协议即mmtls。

实验总结:
现在我们使用的PC以及移动网络设备每时每刻都运行着各种服务,也和非常多的服务器之间进行数据包的传输,但是基本离不开TCP/IP 还有HTTP等常见的协议。感觉在真实的网络环境抓包比在GNS3上最难的就是无法排除其他服务数据包的干扰,在本机可能一打开wireshark就出现了大量的数据包,所以这时候wireshark使用技巧就尤为重要,学会过滤报文。
分析微信的通信过程中服务器的IP会发送变化,也许是不同的业务使用不同的服务器,开始的时候需要分析DNS,因为开始主机会查询相关服务器的IP地址,从DNS中也可以看出一项大型服务会使用多个服务器,多个IP来保证业务正常。Web版应用基于TLS的加密也表现了web版应用存在一定不安全性。通过协议分析课程和实验也发现了自己存在着很大的不足,自己还有很多要做要学的。

QQ浏览器网页版微信抓包和IPAD微信抓包 Wireshark相关推荐

  1. qq浏览器网页版_QQ邮箱回应部分用户登录异常:系后台服务波动,问题已解决...

    5月6日消息,针对用户反映QQ邮箱登录异常情况,腾讯QQ邮箱官方回应称,因后台服务波动,部分用户出现登录异常情况,目前问题已解决. 5月6日上午,有网友反映QQ邮箱崩溃,换浏览器依然无法登录,PC端和 ...

  2. 夸克浏览器网页版入口网址分享

    夸克浏览器是一款简约.无广告的浏览器软件,致力于带给用户最流畅舒适的使用体验.但是有用户问小编夸克浏览器的网页版入口地址在哪?那么小编这里就给大家分享一下夸克浏览器网页版入口. 夸克浏览器网页版入口地 ...

  3. qq 浏览器 android x86版,qq浏览器安卓版x86

    qq浏览器安卓版x86介绍 qq浏览器安卓版x86时钟追求的就是用户浏览体验.采用先进的内核架构,高速渲染引擎,完美的UI设计,带来极致体验. 手机QQ浏览器怎么修改UA标识?我们知道,用手机浏览网页 ...

  4. qq浏览器tv版 v1.0 官方版

    qq浏览器tv版 v1.0 官方版 软件大小:10.7MB 软件语言:简体中文 软件性质:常用软件 软件授权:官方版 更新时间:2014-05-06 应用平台:/Win8/Win7/WinXP qq浏 ...

  5. adm浏览器识别为linux,QQ浏览器Linux版qqbrowserlinux_1.0.0-1_amd64.deb能正常使用

    很多浏览器都推出兼容Linux平台的版本,比如QQ浏览器也有Linux版,有一用户将QQ浏览器Linux版的RPM安装包转换成DEB安装包qqbrowserlinux_1.0.0-1_amd64.de ...

  6. chrome浏览器网页版_如何在Chrome(或任何浏览器)中编辑任何网页

    chrome浏览器网页版 Web pages are just documents your web browser displays. But what if you could type dire ...

  7. QQ浏览器如何查看版本号 QQ浏览器电脑版版本号查看方法简述

    在使用QQ浏览器的过程中,偶尔会需要对当前浏览器的版本号进行查看.那么,QQ浏览器该如何查看版本号呢?下面小编就来简单介绍一下QQ浏览器电脑版版本号的查看方法,不清楚具体操作的朋友还不赶紧收藏一下. ...

  8. qq流浏览器网页版_如何使QQ浏览器浏览简洁

    文章短不过也算是有用吧,主要是给出一些尽量避免注意力转移的建议. ------ 作为大王卡用户,确实是没办法才开始用QQ浏览器的,不过这个还可以,然后也慢慢摸索一些操作方法. 其实到了有WiFi的地方 ...

  9. purnhurb网页版怎么进_怎么把微信里的gif动图表情保存到电脑使用?

    2020.5.9更新: 感谢缺水的狮子白澈的分享! 感谢分享 亲测有效 2020.3.16下面的方法都不行了.找到方法再更新. 2018.9.22.更新: 1.用浏览器打开微信网页版,登录微信,用手机 ...

  10. qq浏览器网页翻译_有了这些PDF翻译软件,再也不愁看英文文献了

    就算每天都和英文文献打交道,是不是还是发现文献中总是有那么一些看不懂的英文单词冒出来,如果是PDF中的生词和句子,复制到翻译软件中去翻译总是有些麻烦,划词取词也不是那么贴合心意.那今天就为大家推荐几款 ...

最新文章

  1. Teamviewer 远程ssh命令行更改密码启动
  2. YOLO系列算法精讲:从yolov1至yolov4的进阶之路
  3. android 动态库 后缀,Android Robolectric加载运行本地So动态库
  4. MySQL史上最全性能优化方式
  5. 生成jacoco报告_jacoco生成的覆盖率文件
  6. JavaWeb——springMVC请求数据绑定分类解析(深度好文)
  7. jquery.ui.dialog 1.81在IE8中出现滚动条bug解决方法
  8. 除了迅雷外,还有什么靠谱的BT下载软件?
  9. 20170306 小兵的觉悟就是好好吃饭
  10. 【10天企业定制课】2018秋PS软件photoshop/CC应用计划学习视频-孙伟-专题视频课程...
  11. CHIP-seq流程学习笔记(7)-热图软件 deeptools
  12. 如何利用Python教你如何爬取高德地图!非常全面啊!
  13. c++名字空间指令与名字空间声明
  14. 计算机一个字节是几位,电脑的一个字节等于多少位??
  15. 电大计算机科学与技术专业论文,国家开放大学计算机科学与技术专业毕业设计(论文)要求...
  16. Python解题 - 硬币的面值
  17. 计算机网络技术课程建设,“计算机网络技术”课程建设与教学改革研究
  18. Python_格式化字符串
  19. [LeetCode788] Rotated Digits 旋转数字
  20. Simscape零碎知识

热门文章

  1. 搜狐狐友社交软件可以组合各个产品的用户量
  2. 认知升级之第一性原理
  3. VTK图像处理之访问图像像素值
  4. 蓝桥杯 完全二叉树的权值
  5. 计算机集成牌照,车牌识别+证件识别嵌入式识别系统集成
  6. java 时区 夏令时_如何使用Java中的TimeZone解决夏令时问题
  7. PAT 甲级 1016. Phone Bills
  8. Magisk使用记录
  9. 分别使用while、do-while和for循环输出1-1000中含有7或者7倍数的整数之和及个数-详解
  10. yolov5 deepsort 行人车辆 双向计数 跟踪检测 | 开源项目分享