问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Wireshark使用指南:捕获过滤器、显示过滤器、捕获模式及追踪流详解

创作时间:
作者:
@小白创作中心

Wireshark使用指南:捕获过滤器、显示过滤器、捕获模式及追踪流详解

引用
CSDN
1.
https://blog.csdn.net/zhzx123aa/article/details/144150090

目录
介绍
捕获数据包的原理
下载地址
Wireshark 基本使用方式
启动 Wireshark
捕获数据包
停止捕获
网卡选择
基础操作
界面介绍
Wireshark 捕获过滤器
示例
捕获特定 IP 地址的数据包
捕获特定端口的流量
捕获特定协议的数据包
捕获某个网络范围的流量
组合条件
Wireshark 显示过滤器
显示过滤器语法
按协议过滤
按 IP 地址过滤
按端口过滤
按协议字段过滤
组合过滤器
组合过滤器
捕获模式
混杂模式
普通模式:
追踪流

  1. 如何启动追踪流?
  2. 流窗口界面解析
  3. 支持的协议类型
    适用场景
  4. 排查应用层协议问题
  5. 安全分析
  6. 网络性能优化
    实际案例分析:
    分析 HTTP 登录过程
    诊断 TCP 连接超时
    解密 HTTPS 流量(TLS 流)

介绍

  • Wireshark(前身是Ethereal)是一个网络封包分析软件,目前是全球使用最广泛的开源抓包软件,别名小鲨鱼或者鲨鱼鳍。
  • 网络封包分析软件的功能是截取网卡进出的网络封包,并尽可能显示出最为详细的网络封包资料,它能够检测并解析各种协议,包括以太网、WIFI、TCP/IP和HTTP协议等等。
  • Wireshark使用LibPCAP、WinPCAP(现在普遍使用的是Npcap)作为驱动程序,他们提供了通用的抓包接口,直接与网卡进行数据报文交换,WinPCAP本身就是抓包分析工具,Wireshark通过对他进行整合加工丰富出来的产物,所以安装Wireshark的时候会提示我们安装WinPCAP。

捕获数据包的原理

Wireshark 通过以下原理捕获和分析数据包:

数据链路层:Wireshark 在网络接口卡(NIC)上使用
libpcap
库进行数据捕获。它会直接访问网络接口卡的硬件,捕获从该接口传输的数据包,包括以太网帧、Wi-Fi 数据帧等。

BPF 过滤器:在捕获数据包时,Wireshark 使用 Berkeley Packet Filter (BPF) 来过滤数据包,确保只捕获满足特定条件的数据包,减小捕获数据的负担。

解析协议:Wireshark 会对捕获到的数据包进行协议解析,识别数据包中的不同协议层(如以太网、IP、TCP、HTTP等),并将这些信息以易读的格式显示出来。

解码和显示:Wireshark 将每个数据包的详细信息(如头部、有效负载等)以分层的方式展示,用户可以查看每个协议字段的详细内容。

下载地址

Wireshark 基本使用方式

启动 Wireshark

  • 启动 Wireshark 后,它会显示一个可用网络接口列表(如有线网卡、无线网卡等)。
  • 选择你要捕获数据的网络接口。通常选择与目标流量相关的接口。

捕获数据包

  • 选择网络接口并点击“开始捕获”按钮(绿色的鲨鱼鳍)。
  • Wireshark 将实时捕获通过所选网络接口传输的数据包,并以列表的形式显示。

停止捕获

  • 捕获过程中,可以点击红色的停止按钮停止捕获。Wireshark 会保存当前捕获的数据包。

网卡选择

查看本地网卡
打开Wireshark 选择网卡

基础操作

wireshark在功能界面帮我们提供了三个操作栏:

  • 菜单栏:用于调试、配置
  • 工具栏:常用功能的快捷方式
  • 过滤栏:指定过滤条件,过滤数据包,过滤器有两种:抓包过滤器和展示过滤器

界面介绍

1号窗口:显示所有进出数据包,也叫做数据包列表

time: 数据包进出的当时时间

Source: 源ip地址

Destination: 目标ip地址

Protocol:协议length:数据包长度

info: 数据包的一个简要描述,不能看到具体数据

对列可以进行增加、修改、删除、隐藏等操作,但是默认的这几列就够用
2号窗口:数据包详情,数据包的各层协议的详细数据
1号窗口每点击一个数据包,那么2号和3号窗口就显示这个数据包的详情信息。
3号窗口:

数据包对应的16进制表示和ascii类型数据显示,随着2号窗口点击不同协议部分

3号窗口对应数据部分会高亮显示。

Wireshark 捕获过滤器

捕获过滤器允许你在捕获数据包时,限制捕获的流量类型。Wireshark 使用BPF (Berkeley Packet Filter)语法来设定捕获过滤器。

示例

捕获特定 IP 地址的数据包

  • host 192.168.1.1
    :只捕获与 IP 地址
    192.168.1.1
    相关的包。

捕获特定端口的流量

  • port 80
    :只捕获端口为 80(HTTP)的流量。
  • src port 443
    :捕获源端口为 443(HTTPS)的流量。
  • dst port 443
    :捕获目标端口为 443(HTTPS)的流量。

捕获特定协议的数据包

  • icmp
    :只捕获 ICMP 协议的数据包(如 Ping 请求)。
  • tcp
    :只捕获 TCP 协议的数据包。
  • udp
    :只捕获 UDP 协议的数据包。

捕获某个网络范围的流量

  • net 192.168.1.0/24
    :捕获来自
    192.168.1.0
    网络段的数据包。

组合条件

  • src host 192.168.1.1 and dst port 443
    :捕获源地址是
    192.168.1.1
    ,目标端口为 443 的数据包。

Wireshark 显示过滤器

捕获的数据包在 Wireshark 中以列表形式显示,显示过滤器用于帮助你在捕获的数据中筛选出感兴趣的包。显示过滤器基于过滤语言,它提供了更多的灵活性来筛选数据包。

显示过滤器语法

按协议过滤

  • http
    :过滤出 HTTP 协议的数据包。
  • tcp
    :过滤出 TCP 协议的数据包。
  • udp
    :过滤出 UDP 协议的数据包。

按 IP 地址过滤

  • ip.addr == 192.168.1.1
    :显示所有源或目标地址为
    192.168.1.1
    的数据包。
  • ip.src == 192.168.1.1
    :显示源地址为
    192.168.1.1
    的数据包。
  • ip.dst == 192.168.1.1
    :显示目标地址为
    192.168.1.1
    的数据包。

按端口过滤

  • tcp.port == 80
    :显示所有与端口 80(HTTP)相关的 TCP 数据包。
  • udp.port == 53
    :显示所有与端口 53(DNS)相关的 UDP 数据包。

按协议字段过滤

  • tcp.flags.syn == 1
    :过滤出所有 TCP 的 SYN 包(用于建立连接的握手)。
  • http.request.method == "GET"
    :过滤出所有 HTTP GET 请求。

组合过滤器

  • ip.src == 192.168.1.1 and tcp.port == 443
    :显示源地址为
    192.168.1.1
    ,端口为 443 的 TCP 数据包。
  • http and ip.addr == 192.168.1.1
    :显示协议为 HTTP 且 IP 地址为
    192.168.1.1
    的数据包。

组合过滤器

  
对源地址及目的地址过滤
ip.src == ip地址
ip.dst == ip地址  
  
对源地址或者目的地址过滤
ip.addr == ip地址  
  
端口过滤
对源端口及目的端口过滤 tcp.srcport == 80 tcp.dstport == 80  
  
 对源地址或者目的端口过滤 tcp.port == 80   
  
大于某个端口的过滤 tcp.port >= 60000   
  
协议过滤 协议过滤 直接在filter框中输入协议名,如过滤HTTP协议,则http   
  
http协议相关过滤 过滤出请求地址中包含“user”的请求 
    http.request.uri contains User
    过滤域名 http.host == www.baidu.com  
  
模糊过滤域名 http.host contains baidu  
  
过滤请求的content_type类型 http.content_type == 'text/html'   
  
过滤http响应状态码 http.response.code == 200  
  
过滤含有指定cookie的http数据包 http.cookie contains userid  

捕获模式

混杂模式

  • Wireshark 的混杂模式 (Promiscuous Mode)是一种网络接口工作模式,在这种模式下,网卡不仅接收发给自己的数据包,还会接收网络上其他设备发送的所有数据包。
  • 默认情况下,网卡只会接收发往自身地址的数据包
  • 而在混杂模式下,网卡会接收通过它所在网络的所有数据包,不论这些数据包的目的地是否是网卡本身

普通模式:

  • 网卡只接收发送给本机的包(包括广播包)传递给上层程序,其它包一律丢弃。
  • 开启混杂模式,菜单栏,捕获-->选项

追踪流

  • Wireshark 的 追踪流(Follow Stream) 功能是一个强大的工具,用于将分散在网络中的数据包按特定协议流(如 TCP、HTTP、TLS 等)重组,还原完整的通信会话内容。

1. 如何启动追踪流?

  1. 选择目标数据包:在数据包列表中找到属于某个会话的数据包(如 HTTP 请求、TCP 握手包)。
  2. 右键菜单:右键点击该数据包,选择 追踪流(Follow Stream) → 选择协议类型(如 TCP、HTTP、TLS)。
  3. 查看流内容:弹出一个新窗口,显示该流的完整通信内容(如 HTTP 请求和响应、TCP 传输的原始数据)。

2. 流窗口界面解析

  • 原始数据:以 ASCII/十六进制格式显示通信内容(如 HTTP 文本、加密的 TLS 数据)。
  • 方向标识:用不同颜色区分客户端与服务端的通信(如红色表示客户端→服务端,蓝色表示反向)。
  • 过滤选项
  • 仅显示文本:勾选后隐藏十六进制数据,方便阅读协议内容(如 HTTP 报文)。
  • 导出流:将整个会话保存为原始文件(如导出 HTTP 传输的图片或文件)。

3. 支持的协议类型

  • TCP 流:重组基于 TCP 的协议(如 HTTP、FTP、SMTP)。
  • UDP 流:追踪无连接的 UDP 流(如 DNS、QUIC)。
  • TLS 流:若密钥已配置,可解密 TLS 流量(需导入 SSL/TLS 会话密钥)。

适用场景

1. 排查应用层协议问题

  • HTTP 请求分析:查看完整的 HTTP 请求头和响应体,定位接口错误或超时。
  • 文件传输问题:检查 FTP 或 SMB 协议的文件传输是否完整。
  • API 调试:分析 RESTful API 或 SOAP 请求的交互内容。

2. 安全分析

  • 敏感信息泄露:检查 HTTP 明文传输的密码、Cookie。
  • 恶意流量检测:分析可疑 TCP 连接中的指令(如 C2 服务器通信)。

3. 网络性能优化

  • TCP 重传分析:通过流内容观察是否有重复的序列号,定位丢包问题。
  • 连接中断排查:检查 TCP 流的 FIN/RST 标记,确认连接是否正常关闭。
  
常见协议包: 
ARP协议
ICMP协议
TCP协议
UDP协议
DNS协议
HTTP协议    

实际案例分析:

分析 HTTP 登录过程

  1. 捕获流量:在用户登录网站时启动 Wireshark 捕获。
  2. 过滤 HTTP 请求:在显示过滤器中输入
    http contains "login"
    ,找到登录请求的数据包。
  3. 追踪 TCP 流
  • 右键该数据包 → 追踪流 → TCP 流
  • 查看流内容,确认是否明文传输用户名和密码(如
    username=admin&password=123456
    )。
  1. 导出敏感数据:若发现明文密码,可导出流内容作为安全审计证据。

诊断 TCP 连接超时

  1. 捕获问题时段流量:当用户遇到网页加载缓慢时,捕获数据包。
  2. 筛选 TCP 流
  • 在数据包列表中找到目标 IP 的 TCP 握手包(SYN 包)。
  • 右键 → 追踪流 → TCP 流
  1. 分析流内容
  • 观察是否有重复的序列号(TCP 重传),表明网络丢包。
  • 检查窗口大小(Window Size)是否过小,导致传输效率低。

解密 HTTPS 流量(TLS 流)

  1. 配置 TLS 密钥
  • 在 Wireshark 的 编辑 → 首选项 → Protocols → TLS 中导入服务器的私钥。
  1. 捕获 HTTPS 流量:访问一个 HTTPS 网站(如
    https://example.com
    )。
  2. 追踪 TLS 流
  • 右键任意 TLS 数据包 → 追踪流 → TLS 流
  • 若密钥正确,可看到解密后的 HTTP 明文内容(如 HTML 页面)。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号