网络知识 娱乐 Wireshark抓包分析微信功能----tcp/ip选修课期末大作业

Wireshark抓包分析微信功能----tcp/ip选修课期末大作业

分析相关功能所抓取的数据包和完整大作业报告(word版)均已上传至Wireshark抓包分析微信功能----tcp/ip选修课期末大作业-网络监控文档类资源-CSDN文库

适合Wireshark入门的小伙伴们或者赶计算机网络期末大作业无从下手的uu们。

铁汁们,请放心食用!加油吧,期末人!开卷,绝不开摆!

目录

一、设计和实现对流行手机网络应用的业务分析

二、网络认证、业务、传输过程分析与问题排除

1、题目要求

2、实验环境

3.实验报告

3.1虚拟AP配置过程

3.2 wireshark的MAC过滤器设计

3.3微信登陆过程解析

3.4 微信朋友圈的解析

3.5 微信浏览网页的解析

3.6 微信附近的人的解析

3.7微信聊天过程分析

3.8微信公众号(课堂派)解析

4.   主要步骤流程图

5.   实验总结

5.1关键技术总结

5.2问题总结

5.3解决问题的方法


一、设计和实现对流行手机网络应用的业务分析

  1. 在Windows10系统下利用cmd建立虚拟AP;
  2. 利用Wireshark软件对接入虚拟AP的特定终端进行截包;
  3. 分析手机应用微信的登陆、附近的人、公众号、聊天、浏览网页、朋友圈等过程,并对其进行分析;

二、网络认证、业务、传输过程分析与问题排除

1、题目要求

在有线网络环境下(以太网),采用hainanu客户端PPoE拨号方式上网。在电脑上配置好虚拟AP,手机接入该局域网后使用了“微信”的网络应用。发现电脑通过ARP全网广播获得手机MAC地址之后,手机进行DNS查询,得到服务器IP地址后, 建立连接。分析了微信不同的网络服务的实现。

2、实验环境

操作系统:Windows10(电脑) HarmonyOS(手机);

应用软件:微信(HarmonyOS) wireshark(version:3.4.6)hainanu客户端;windows7自带cmd(或用win10自带的虚拟AP:系统自带的移动热点 );

网络环境:通过PPoE拨号客户端直接登陆校外网(教育网),移动终端通过电脑建立的虚拟AP接入外网;

网络平均延时1ms(在cmd中输入指令“ping www.163.com”得到);

                移动终端的mac地址:B2:90:7E:E8:D7:28;

                移动终端分配的ip地址:192.168.137.188;

电脑的mac地址:04-0E-3C-9D-FE-45;

电脑的ip地址:192.168.1.100(首选);

使用设备:LAPTOP-1KECNL1N,huawei Nova5 pro;

3.实验报告

3.1虚拟AP配置过程

   1)以管理员身份运行命令提示符

   2)启用并设定虚拟WiFi网卡

  • mode设定为allow以启用虚拟WiFi网卡
  • 将无线网名称ssid设置为:VituralAP
  • 将无线网密码设置为:123456789
  • 综上,运行命令:netsh wlan set hostednetwork mode=allow ssid=VituralAP key=123456789
  • 运行截图:

     3)设置Internet连接共享

    4)开启无线网络

在命令提示符中运行:netsh wlan start hostednetwork

注:此处若出现问题见5.2(1)

   5)查看虚拟AP

在命令提示符中运行:netsh wlan show hostednetwork

3.2 wiresharkMAC过滤器设计

wireshark的过滤器应用于WinPacp,并使用Berkeley Packet FilterBPF)语法。这个语法被广泛用于多种数据包嗅探软件,主要是因为大部分数据包嗅探软件都依赖于使用BPFlibpcap/WinPacp库。

首先设定捕获过滤器,设定只捕获VirtualAP中的数据包:

然后设置显示过滤器:

显示过滤器根据指定的表达式用于在一个已捕获的数据包集合中,隐藏不想显示的数据包,或者只显示那些需要的数据包。显示过滤器应用于捕获时或者捕获后,告诉Wireshark只显示那些符合过滤条件的数据包。

故将wireshark的过滤器中输入BPF原语:

eth.dst ==B2:90:7E:E8:D7:28||eth.src == B2:90:7E:E8:D7:28

此处的“B2:90:7E:E8:D7:28”为我的手机的mac地址,利用该过滤器筛选出源地址或者目的地址是我的手机的mac地址的数据包。

3.3微信登陆过程解析

当打开手机微信开始登录认证时抓包如下:

首先,由于上一节中Wireshark的过滤器中已经设定只筛选出源mac地址或者目的mac地址是我的手机的mac地址的包,我的手机的ip地址是192.168.137.188APip地址是192.168.137.1

分析抓取到的包的数据可知,首先,微信客户端查询微信服务器,域名为

weixin.qq.com IP 地址

然后,获得DNS应答,域名服务器解析出多个ip地址:

然后,进行三次握手,前三个包是在进行tcp三步握手认证:第一次握手,客户端发送一个TCP,标志位为SYN=1,第二次握手,服务器向客户端返回一个数据包,SYN=1ACK=1,将确认序号设置为客户的序号seq1,即0+1=1;第三次握手,客户端收到服务器发来的包后检查确认序号是否正确,即第一次发送的序号seq1,以及标志位ACK是否为1。若正确,客户端会再向服务器端发送一个数据包,SYN=0ACK=1,确认序号=1,并且把服务器发来ACK的序号seq1发送给对方,发送序号seq1。客户端收到后确认序号值与ACK=1,代表客户端请求建立连接;

并且,利用SSL/TLS密码通信框架进行密码验证和身份核验以及加密通信,最终实现微信的登录。

在其中一个TLS协议数据包中客户端向服务器端发送client hello的消息,包含可用版本号、客户端随机数、会话ID、可用的密码套件清单、可用的压缩方式清单等重要信息。

3.4 微信朋友圈的解析

在手机微信朋友圈界面下拉刷新,抓包如下:

   首先客户端发出DNS查询,然后DNS服务器发回应答,告知weixin.qq.comip地址。然后进行三次握手建立连接,开始传输http数据包,里面封装了朋友圈界面的内容。并且在传输结束后,进行tcp断开连接的四次握手,发送FIN报文和确认报文,最终结束连接。

3.5 微信浏览网页的解析

利用微信的搜一搜功能访问www.baidu.com

抓取到的包如下:

分析可知,首先,进行三次握手,建立传输之后,利用HTTP协议进行数据传输,但这个数据包还不是所要访问的baidu.com。这里传输的只是微信内承载网页的框架界面,在加载完毕后,通过将FIN位置1,通过四次握手,断开连接。

然后,继续分析可知,重新建立一个连接,利用http协议发出GET请求,请求URIhttp//www.baidu.com/的网页,通过http协议进行传输,从微信服务器将页面数据传输给微信客户端,实现浏览网页服务。

    3.6 微信附近的人的解析

抓取到的包如下:

分析抓取到的包可知,在使用“附近的人”功能时,首先利用DNS查询

caict.comip地址,通过查询资料,这个网址是中国信息通信研究院的网站,猜测可能是使用这个功能时,在获取位置信息之前需要信通院的数据监测或监管。

然后,通过利用DNS查询amap.comip地址,通过查资料得知,这个网址是高德地图的官方网站。在进行三次握手建立连接之后,微信客户端的地点信息被收集起来存储在服务器中,当客户端发送附近的人请求时,服务器调用地图信息,通过计算,得到位于附近的用户数据,并将它们传给该客户端。

    3.7微信聊天过程分析

抓取到的包如下:

通过分析可知,在进行微信聊天时,首先通过tcp三次握手建立连接,然后,用SSL/TLS密码通信协议进行安全通信并保持数据完整性,其中一个TLS协议数据包中客户端向服务器端发送client hello的消息,使客户端和服务器建立连接,再利用tcp协议传输数据,在信息发送的过程中利用SSL对消息进行加密传输。

    3.8微信公众号(课堂派)解析

首先在公众号搜索界面搜索课堂派,点击之后开始抓包,进入课堂

派公众号首页:

抓取到的包如下:

分析抓取到的数据包可知,在使用公众号功能时,首先通过tcp三次握手建立连接,然后开始利用http进行数据传输,并且,使用TLSv1.2进行安全通信。在浏览公众号时,微信客户端和服务器多次进行数据通信。

4.   主要步骤流程图

5.   实验总结

.1关键技术总结

1)利用cmd配置虚拟AP

以管理员身份运行命令提示符并运行命令:netsh wlan set hostednetwork mode=allow ssid=VituralAP key=123456789,其中的各项参数可以调整,然后,设置Internet连接共享。最后,开启无线网络,即在命令提示符中继续运行:netsh wlan show hostednetwork

2wireshark的过滤器语法

   捕捉过滤器语法:

语法:

Protocol

Direction

Host(s)

Value

Logical Operations

Other expression

例子:

tcp

dst

10.1.1.1

80

and

tcp dst 10.2.2.2 3128

  显示过滤器语法:

  1. 协议过滤语法

语法

Protocol

.

String 1

.

String 2

Comparison operator

  Value

Logical Operations

Other expression

例子

http

 

request

 

method

==

"POST"

or

icmp.type

string1string2是可选的。依据协议过滤时,可直接通过协议来进行过滤,也能依据协议的属性值进行过滤。

  • 按协议进行过滤:

snmp || dns || icmp         显示SNMPDNSICMP封包。

  • 按协议的属性值进行过滤:

ip.src == 10.230.0.0/16      显示来自10.230网段的封包。

tcp.port == 25          显示来源或目的TCP端口号为25的封包。

tcp.dstport == 25            显示目的TCP端口号为25的封包。

http.request.method== "POST"       显示post请求方式的http封包。

http.host == "tracker.1ting.com"显示请求的域名为tracker.1ting.comhttp封包。

tcp.flags.syn == 0×02      显示包含TCP SYN标志的封包。

3TCP通信原理

主要是三次握手的原理,第一次握手,客户端发送一个TCP,标志位为SYN=1,第二次握手,服务器向客户端返回一个数据包,SYN=1ACK=1,将确认序号设置为客户的序号seq1,即0+1=1;第三次握手,客户端收到服务器发来的包后检查确认序号是否正确,即第一次发送的序号seq1,以及标志位ACK是否为1。若正确,客户端会再向服务器端发送一个数据包,SYN=0ACK=1,确认序号=1,并且把服务器发来ACK的序号seq1发送给对方,发送序号seq1。客户端收到后确认序号值与ACK=1,代表客户端请求建立连接;

4SSL/TLS密码通信原理

SSL协议分为两部分:Handshake ProtocolRecord Protocol。其中Handshake Protocol用来协商密钥,协议的大部分内容就是通信双方如何利用它来安全的协商出一份密钥。 Record Protocol则定义了传输的格式。由于非对称加密的速度比较慢,所以它一般用于密钥交换,双方通过公钥算法协商出一份密钥,然后通过对称加密来通信,当然,为了保证数据的完整性,在加密前要先经过HMAC的处理。SSL缺省只进行server端的认证,客户端的认证是可选的。SSL客户端(也是TCP的客户端)在TCP链接建立之后,发出一个ClientHello来发起握手,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL的服务器端会回应一个ServerHello,这里面确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。Client在收到这个消息后会生成一个秘密消息,用SSL服务器的公钥加密后传过去,SSL服务器端用自己的私钥解密后,会话密钥协商成功,双方可以用同一份会话密钥来通信了。

.2问题总结

1)在开启无线网络时命令提示符中提示下图报错(5.31)中解决)

2)抓包之后显示ip地址,难以逐会话对报文进行分析,不易找到想要分析的数据(5.32)中解决)

3)在tcp断开连接时,需要进行四次握手,标志位是FIN,应该找到4个数据包,但我试了好几次,但实际只抓到3个数据包。查了相关资料,说是因为服务器端在给客户端传回的过程中,将两个连续发送的包进行了合并。

.3解决问题的方法

1)解决“无法启动承载网络,组或资源的状态不是执行请求操作的正确状态”的办法:更新驱动至较旧的版本,有的较新的网卡驱动不支持承载网络。

2)在使用Wireshark进行分析的过程中,可以利用DNS协议,直接将各个眼花缭乱的IP解析为域名,以提高效率。将WiresharkIP显示为域名的方法:在Wireshark的菜单项“编辑”的最下方,找到子菜单“首选项”,将该处复选框打钩

即可将ip解析为域名,方便分析: