目录
(一)wireshark介绍
【百科】Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
【主要应用】应用于网络运维数据包分析、检测网络安全隐患、用于网络协议学习等。
wireshark提供丰富的操作界面,如下图
wireshrk的工具下载:https://www.wireshark.org/
(二)wireshark启动
2.1 软件启动
在wireshark启动时要分清楚当前在运行的网卡是哪个,因为wireshark监听的是经过设备的数据流。
在启动时如果选择错了监听设备就会出现监听不到网络数据包的情况。
wireshark除了能监听网卡外,还可以监听蓝牙设备、USB设备等。
2.2 监听启动
选择监听设备后,进入操作界面,如下:
点击左上角【开始捕获分组】就可以开始抓包。
(三)wireshark的数据包分析
在启动抓包捕获后,可以在抓包区域看到被捕获的数据包
从图中可以看到捕获到了不同网络协议的数据,有TLS、ARP、TCP、HTTP等等。
在众多的数据包中可以看见什么样的内容呢?
首先先看看下图
3.1 TCP三次握手
在图中,前三个数据包描述的TCP的三次握手
对应下面的报文分析:
第一次握手:
第二次握手:
第三次握手:
3.2 四次挥手
四次挥手即是解除连接。
四次挥手过程如下:
第一次挥手:
- 客户端向服务器发送FIN数据包以及seq = x、ack = y序号码,请求中断连接;
- 此时客户端仍可接收数据,但处于FIN WAIT中。
第二次挥手:
- 服务端接收到客户端的FIN请求后,回复ACK确认包ACK=1
- 此时将客户端的数据包中的seq值+1作为ack值,将客户端的ack值作为seq值 = y
- 此时服务端处于CLOSE_WAIT中
第三次挥手:
- 服务器向客户端发送FIN 数据包(FIN=1,seq = y),以及确认包(ACK = 1, ack = x + 1),用来停止向客户端发送数据
- 此时是告诉客户端:我的数据也发送完了,不再给你发数据了
- 此时服务端处于LAST_ACK
第四挥手:
- 客户端收到 FIN数据包 之后,一样发送一个 ACK 报文作为确认回应,此时将服务端的seq值+1作为ack值,未发送状态,处于TIME_WAIT状态
- 等待一定时间(2MSL)后,客户端发送ACK响应包给服务端后,客户端进入CLOSE状态,连接结束。
3.3 wireshark数据包分析区与OSI七层模型对应关系
3.4 数据包过滤
在wireshark抓包中,数据包的量是很大,这就会给数据包分析工作带来不便。因此需要了解掌握wireshark的数据过滤操作。
- 指定协议过滤:http、tcp、udp、icmp、arp、ssl、usb、ftp等等
- Ip过滤:
源头地址过滤 ip.src==x.x.x.x ;
目标地址过滤 ip.dst eq x.x.x.x; ip.dst == x.x.x.x;
地址过滤 ip.addr eq x.x.x.x
- http特定内容过滤
指定字符过滤:http contains “baidu”
长度过滤:http.content_length<=100 、udp.length<20
数据包内容过滤:http.request.url matches “pingan”
域名过滤:http.host==www.baidu.com
http请求方法过滤:http.request.method==POST
示例如下图:
3.5 数据包跟踪
Wireshark提供了一个数据包跟踪的能力,能分析数据包同一个链路下的所有触发的请求。
选择一个数据包右键,【跟踪流】–【TCP流】/【HTTP流】即可追踪整个大数据包的交互响应过程。
(四)数据文件恢复
在wireshark的数据包中,选中一个HTTP POST请求,可以在报文分析区中看到对应的DATA数据包,打开Data数据显示的HEX码值,而在报文分析区的右侧有对应HEX的ASCII值。如下图
拿到了Data数据后要怎么做文件的恢复呢?
借助01Editer :https://www.sweetscape.com/010editor/
拷贝Data值在01Editer中创建HEX文件,粘贴复制,并另存为对应的格式文件即可。
首先要了解常见文件的文件头部的HEX值,来帮助判断对应的文件格式是什么。如下图:
比如下图的数据包,以504b0304开头,根据上表就可以知道它是zip文件包
接下来拷贝Data值,在01Editer中创建一个HEX空文件,粘贴Data数据后,另存为对应的zip后缀文件就可以实现文件的恢复