wireshark的基本使用

本文最后更新于:November 28, 2021 am

一、工具简介

Wireshark 是是目前全世界最广泛的网络封包分析软件之一。网络封包分析软件的功能是侦听网络封包,并尽可能显示出最为详细的网络封包信息。Wireshark使用 Winpcap 作为接口,直接与网卡进行数据报文交换。

如下图所示为成功安装Winpcap 和 Wireshark 后的初始界面:

image-20200608181205658

在 Wireshark 初始界面中,波动的线代表网卡传输信息的波动。点击左上角的开始图标,即进入如下图所示数据包抓取页面:

image-20200608181307861

二、数据包抓取与分析

本示例通过 curl 和 ping 命令演示抓包情况。
打开 Wireshark开始抓取,然后如下图所示,在终端下用 curl 和 ping 命令作用于目标地址。

image-20200608173101731

image-20200608174203428

从 ping 的回包可知,我们收到了7个回包,此处百度的 IP 地址是 14.215.177.39

返回 Wireshark,在过滤器中通过 IP 地址过滤数据包,如下图所示为过滤数据包的结果。过滤命令是:

1
ip.addr ==14.215.177.39 

image-20200608173431410

1.TCP 三次握手分析

查看数据包,上图中,第 1-3 个数据包是 TCP 协议,第 4 个是 HTTP 协议,此为 TCP 三次握手的明显标志。前 3 个数据包是 TCP 三次握手的过程,如下图所示是 TCP 三次握手详细数据包内容,可对比数据包与 TCP 三次握手数据包标志位。

img

2.ICMP 协议分析

ping 命令就属于 ICMP 协议,查看过滤数据包中的 ICMP 数据包,可观察到 14个数据包, 由上文知ping 目的地址得到7 个回包。
ICMP 数据包请求和应答两种模式 ,具体如下图:

image-20200608174410800

ICMP 请求报文和回答报文格式如下:

请求报文:

image-20200608174514228

回答报文:

image-20200608174532582

其中:

Type 表示 ICMP 报文类型,8 为请求报文,0 为回答报文;

Code = 0;

CheckSum 为从 ICMP 的头部(即 Type 开始)到 data 结束(即到整个数据包结束)的校验和;

Identifier 为标识符,由主机设定,一般设置为进程号,回送响应消息与回送消息中 identifier 保持一致;

Sequence Number 为序列号,由主机设定,一般设为由 0 递增的序列,回送响应消息与回送消息中 Sequence Number 保持一致;

data 为数据,由主机设定,回送响应消息与回送消息中 data 保持一致;

注: Identifier 和 Sequence number 项都分为[BE]和[LE],其中[BE]为 Linux下内容,[LE]为 Windows 下内容,因本实验均在 Linux 环境下进行,所以只需查看[BE]中内容即可。

请求报文报头 :

image-20200608174737348

回答报文报头 :

image-20200608174816396

三、Wireshark 过滤器介绍

Wireshark使用核心之一是过滤器的使用,显示过滤器有三种状态分别为红色、黄色、绿色。红色表示显示过滤器表达式不正确。黄色表示显示过滤器表达式虽然可以进行筛选,但是可能出现不可控的结果。绿色表示显示过滤器表达式正确。

Wireshark 过滤器分为两种,显示过滤器和捕获过滤器。显示过滤器针对已经捕获的报文,根据过滤规则过滤得到显示的报文;捕获过滤器指提前设置好过滤规则,只捕获符合过滤规则的报文。

捕获过滤器:

如下图所示为捕获过滤器设置 :

image-20200608175505369

设置捕获过滤器的原因是针对网卡流量很大情况,如每秒数 G 的流量,而其中大部分流量并不是分析者关心的数据,此时可使用捕获过滤器捕获指定数据。无用的数据一方面会干扰分析,另一方面浪费存储空间及拷贝时间。

显示过滤器:

如下图所示为显示过滤器设置 :

image-20200608175705185

常用显示过滤器语法:

  1. 协议过滤,如 http icmp等;

  2. 特定端口过滤:tcp.port eq 80,无论端口是源端口还是目的端口都显示,如果过滤源端口,则是 tcp.srcport eq 80;如果过滤目的端口,则是 tcp.dstport eq 80;

  3. 源 IP 数据报文过滤:ip.src eq 192.168.1.107,目的则是形如 ip.dst eq 192.168.1.107 ,不区分源和目的则是 ip.addr eq 192.168.1.107 。MAC 层地址的过滤是同样的道理;

  4. 过滤包含特定字符串域名的报文,形如 http.host contains “moe”;

  5. 多个过滤条件的使用,例如同时满足 http 以及且端口为 80 的过滤规则
    http && tcp.port == 80,关于组合符号有与(and / &&)、或(or / ||)、非(not / !);
    捕获过滤器语法与显示过滤器略有不同,部分示例如下:

    过滤指定协议规则:http
    过滤指定端口规则:port 80
    过滤指定 IP 规则:host 192.168.0.115
    过滤指定域名规则:host www.example.com


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!