Wireshark网络抓包分析使用详解

序言

之前学计网还有前几天备考华为 ICT 网络赛道时都有了解认识 Wireshark,但一直没怎么专门去用过,也没去系统学习过,就想趁着备考的网络相关知识还没忘光,先来系统学下整理点笔记~

什么是抓包?抓包就是将网络传输发送与接收的数据包进行截获、分析、重发、编辑、转存等操作,也用来检查网络安全。在我们做接口测试的时候,经常需要验证发送的消息是否正确,或者在出现问题的时候,查看手机客户端发送给 server 端的包内容是否正确,就需要用到抓包工具。而工程师和程序常用的抓包工具有哪些呢?

Sniffmaster 是在 Windows ,mac和linux上运行的程序,专门用来捕获 HTTP , HTTPS和tcp,udp 的;Wireshark 能获取各类网络协议包,但是不能解密所以 Wireshark 看不懂 HTTPS 中的内容,可以运行在 Windows、Linux 和 Mac OS 上;Linux 还有个轻量级的命令行抓包工具是 tcpdump 。本人学过一点 Linux 但没了解 mac OS 这边,因此本文是主要重点分析 Wireshark,然后简单介绍 Fiddler 和 tcpdump 的使用。

学习之前最好先了解计网的网络协议和分包 等核心知识,便于理解:

一、Wireshark

1、Wireshark 认识

(1)基本信息

Wireshark 是目前最流行、功能强大的网络协议图形化分析工具 ,用于捕获和分析网络数据包,以深入了解网络流量,广泛应用于网络故障诊断、安全分析、软件开发和学习网络协议等场景。

  • 开发者 :由 Gerald Combs 开发,现由社区和 Wireshark 基金会维护。
  • 开源 :Wireshark 是免费且开源的软件,支持多种平台(Windows、macOS、Linux 等)。
  • 官网https://www.wireshark.org/
  • 支持的协议 :Wireshark 支持数百种网络协议(如 HTTP、TCP、UDP、DNS、SSL/TLS 等),并不断更新支持新协议。

(2)Wireshark 的功能

  • 数据包捕获 :捕获通过网络接口传输的数据包或实时流量,支持有线、无线、蓝牙等多种类型的网络。
  • 协议解码 :提供对网络协议的解码和详细分析。
  • 数据包分析 :允许查看数据包的各层内容(链路层、网络层、传输层和应用层)并支持检测和分析网络异常。
  • 数据过滤 :在捕获数据时仅抓取特定条件的流量;在已捕获的数据中筛选感兴趣的内容。
  • 图形化展示 :提供网络流量统计图、I/O 图、协议分布图等,帮助用户直观分析流量。
  • 数据导出与共享 :数据捕获可以保存为多种格式,如 .pcap、.csv 等,可以被其他网络分析工具读取。

(3)Wireshark 抓包捕获原理

Wireshark 的抓包功能依赖底层的数据链路层 访问权限,使用WinPCAP/Npcap 作为接口直接与网卡进行数据报文交换**。使用的环境大致分为两种,一种是电脑直连网络的单机环境,另外一种就是应用比较多的即连接交换机的网络环境。

单机情况 :Wireshark 直接抓取本机网卡的网络流量,默认正常工作模式,适用于分析本地通信;

交换机情况 :Wireshark 通过端口镜像ARP 欺骗 等方式获取局域网中的网络流量。

  • 端口镜像:利用交换机的接口作为镜像端口 SPAN,将局域网指定接口或 VLAN 的流量复制到镜像端口,Wireshark 运行在连接镜像端口的电脑上,从而可以捕获这里的数据流量(无法抓取加密流量)。
  • ARP 欺骗:使用工具(如 EttercapArpspoof )发送伪造的 ARP 响应,欺骗局域网中的目标设备将其流量发送到攻击者的设备,Wireshark 伪装成中间人(MITM)捕获流量后再将数据转发给真正的网关。

Wireshark 的捕获机制是监听并复制数据包流经指定接口的数据 供分析使用。

  • 监听指定接口的数据流 :Wireshark 会监控用户选择的网络接口(以太网、Wi-Fi 等)上的数据流。
  • 复制数据包到本地分析 :Wireshark 不会对网络上的实际数据包产生影响,而是将通过接口捕获到的数据包复制到本地内存中,并将其按照时间顺序记录。捕获到的数据包会被存储在内存或临时文件中,并可保存为 .pcap 文件供后续分析,若选不保存则是删除本地复制的数据包无法恢复。

(4)Wireshark 捕获主要模式(决定网卡能够接收到的数据包范围

正常模式 (Normal Mode):网卡只会捕获发送给自身的特定数据包如单播、广播和多播数据包,适合抓取与主机直接相关的流量排查本地问题

混杂模式 (Promiscuous Mode):网卡会捕获经过网络接口的所有数据包 ,可用于分析局域网内的整体通信流量 ,能查看其他主机的通信。

监视模式 (Monitor Mode):主要用于无线网络分析 802.11 协议,能够截获未与网卡关联的所有无线数据帧 (包括管理帧、控制帧和数据帧),用于调试 Wi-Fi 网络问题并测试无线网络的安全性。

(5)Wireshark 的特点

  • 跨平台支持 :支持 Windows、macOS、Linux 等操作系统。
  • 协议支持广泛 :Wireshark 支持从常见的 HTTP、DNS 到专有的工业协议。
  • 用户友好界面 :提供直观的 GUI 和强大的过滤器系统。
  • 可扩展性 :支持通过 Lua 编写插件,扩展 Wireshark 的功能。
  • 实时捕获与离线分析 :既可实时捕获流量,也可分析离线的捕获文件。

(6)安装下载

官网下载地址:Wireshark · Go Deep

下载安装 Windows x64 版本

下载完成后接着一路按照软件提示 Next 安装即可。

2、Wireshark 界面详解(Windows)

(1)Wireshark 界面认识

打开 Wireshark,主界面如下:

(2)接口列表详细分析

选择菜单栏上的"捕获"点击"选项"可以查看所有可用接口详细配置信息选项:

Wireshark 显示的捕获接口信息主要包括以下列

  • 接口名称 :每个网络接口的名称(如"本地连接 *数字")。
  • 流量 :实时显示当前接口上的流量活动(波动的流量曲线)。
  • 链路层 :接口使用的链路层协议类型(如 Ethernet)。
  • 混杂模式 :是否启用混杂模式以捕获接口上所有的网络流量。
  • 捕获长度缓冲区监控模式 :Wireshark 捕获的相关设置和当前状态。

Wireshark 显示的各类接口的详细介绍

"本地连接 数字 * "接口通常是 Windows 系统中虚拟接口或未激活的网络接口 ,可以通过设备管理器禁用。

"vEthernet (WSL) "是 WSL 创建的虚拟网络接口,用于连接 WSL 环境与主机网络并监控 WSL 应用产生的流量,IP 地址为 172.17.128.1,这通常是 WSL 的虚拟网络子网范围。

"WLAN "接口是无线网络适配器(Wi-Fi 网卡),IP 地址 192.168.2.103,用于捕获 Wi-Fi 网络中的流量。

"以太网2 "可能是本机的物理有线网卡(Ethernet),IP 地址 192.168.56.1,这通常是虚拟化软件(如 VirtualBox、VMware)创建的虚拟网络适配器,常用于虚拟机通信。

"vEthernet (Default Switch) "是 Hyper-V 虚拟化环境创建的默认交换机接口,IP 地址 172.19.176.1,通常是 Hyper-V 虚拟网络的默认子网,用于捕获 Hyper-V 虚拟机与主机或网络之间的通信流量。

"Adapter for loopback traffic capture "是环回接口,IP 地址 127.0.0.1,用于捕获本地通信流量。

"Raw IP "表示直接捕获 IP 层流量,而不依赖具体的链路层协议。

这些接口主要用于远程捕获或特定环境下的网络数据分析:

"Cisco Remote Capture "接口用于与 Cisco 设备(如路由器或交换机) 建立远程连接,从设备中抓取网络数据包,可以分析其流量或调试网络配置问题。要求有管理员权限配置 Cisco 设备并启用远程数据捕获功能。

"Event Tracing for Windows (ETW) Reader "接口可以捕获与 Windows 内核相关的网络流量或事件信息 ,利用 Windows 系统的事件跟踪机制提供对系统内部网络事件的捕获能力。

"Random Packet Generator "是一个模拟接口,用于生成随机的网络数据包,不涉及实际的网络通信 ,仅用于测试或验证数据包解码功能,常用于开发者或协议分析。

"SSH Remote Capture "通过 SSH 协议 连接远程设备,从中捕获数据包。

"UDP Listener Remote Capture "接口用于监听来自远程设备通过 UDP 协议发送的流量

"Wi-Fi Remote Capture "接口用于远程捕获 Wi-Fi 网络 流量,用于无线网络性能分析或调试。

(3)双击"WLAN"后进入如下页面开始抓包:

图示以 WLAN 抓 TCP 数据包为例

左上角红框点击即停止抓包,最左上角"文件"选择"保存"即可以保存抓包的数据,这是最基础的抓包。

从上图可知 Wireshark 操作的主界面包含 6 个部分:

  • 菜单栏:用于调试、配置
  • 工具栏:常用功能的快捷方式
  • 过滤栏:指定过滤条件过滤数据包,如上图过滤位置选了 tcp 筛选数据包
  • 数据包列表:核心区域,每一行就是一个数据包
  • 数据包详情:数据包的详细数据
  • 数据包字节:数据包对应的十六进制字节流和 ASCII 码

(4)菜单栏与工具栏与过滤栏

菜单栏位于主界面的顶部,提供全面的调试和配置选项 ,包括捕获、分析、统计和导出。

  • File(文件): 打开/保存捕获文件、导出数据包或退出程序。
  • Edit(编辑): 配置首选项、搜索数据包或清除屏幕。
  • View(视图): 定制界面布局,例如显示/隐藏工具栏、过滤栏等。
  • Capture(捕获): 设置捕获参数(选择网络接口、过滤规则等),并启动/停止捕获。
  • Analyze(分析): 应用显示过滤器、启用协议解析器或重新组装流。
  • Statistics(统计): 查看网络统计(如 IO 图表、协议层统计、端点分析等)。
  • Telephony(电话): 分析 VoIP 和 SIP 协议的流量(如 RTP 流、呼叫分析)。
  • Help(帮助): 查看帮助文档、协议参考以及关于 Wireshark 的信息。

工具栏位于菜单栏下方,提供一些常用功能的快捷方式 ,方便用户快速操作。

  • Start(开始捕获): 开始实时捕获网络流量。
  • Stop(停止捕获): 停止当前捕获。
  • Open(打开): 加载保存的捕获文件。
  • Save(保存): 将当前捕获会话保存为 .pcap 或其他格式。
  • 捕获接口选择: 选择要监控的网络接口。
  • 过滤: 应用过滤条件快速缩小分析范围。
  • 流重组: 快速查看 TCP 或 UDP 的上下文流量。
  • 其他: 包括统计功能、清除显示、显示或隐藏面板等。

过滤栏位于工具栏下方,用于设置过滤条件进行数据包列表过滤 ,支持多种形式过滤并实时显示过滤器是否有效(输入框变为绿色表示有效,红色表示无效)。

  • 基础协议 : 如 tcp、udp、icmp。
  • 条件组合 : 使用逻辑运算符如 and、or、not。
  • 字段过滤 : 如 ip.src == 192.168.1.1(过滤源 IP 是 192.168.1.1 的数据包)。

(5)数据包列表 Packet List Pane

按时间顺序排列显示捕获到的数据包 ,每一行代表一个数据包,每个数据包包含编号、时间戳、源地址、目标地址、协议、长度以及数据包信息。不同协议的数据包使用了不同的颜色区分显示,可以在菜单栏"视图"的"着色规则"里查看。

  • 编号(No.): 数据包的序号,从 1 开始。
  • 时间(Time): 数据包捕获的时间戳(相对时间或绝对时间,用户可配置)。
  • 源地址(Source): 数据包的源 IP 地址或主机名。
  • 目的地址(Destination): 数据包的目的 IP 地址或主机名。
  • 协议(Protocol): 数据包使用的协议(如 TCP、UDP、HTTP)。
  • 长度(Length): 数据包的大小(以字节为单位)。
  • 信息(Info): 数据包的简要信息(如 HTTP 请求类型、TCP 标志等)。

(6)数据包详情 Packet Details Pane

位于数据包列表下方,用于显示当前选中的数据包的详细协议层次结构解析信息

此过滤的是 tcp 所以最高到传输层

  • Frame(帧): 显示数据包的物理层基本信息(捕获时间、长度等)。
  • Ethernet(以太网): 解析数据链路层以太网帧头部信息(MAC 地址、帧类型)。
  • IP(网络层): 显示 IP 地址、TTL、标志位等。
  • TCP/UDP(传输层): 显示端口号、序列号等。
  • 应用层协议: 如 HTTP、DNS、TLS 的具体内容。

(7)数据包字节 Dissector Pane

位于界面的最下方或侧右边,显示当前选中数据包的原始数据字节流 ,可以检查协议字段的实际值。

字节流点击十六进制部分会和对应的ASCII部分的内容高亮

  • 十六进制视图: 显示数据包的二进制内容,每个字节以十六进制表示。
  • ASCII 视图: 显示数据包内容的 ASCII 表示(若不可见则显示 .)。
  • 实时定位: 点击数据包详情中的某字段,字节流中会高亮对应的内容。

3、常用基础界面操作

(1)设置显示列

数据包列表中有一些默认显示的列,我们可以添加、删除、修改显示的列。

想要在数据包列表中显示某一个字段,可以在数据包详情右键选中这个数据字段"添加为列"即可。

按 Ctrl + Shift + I 也可以实现同样的效果

  • 隐藏字段列 :在显示列的任意位置右键取消列的高亮勾选即可。
  • 删除字段列 :在指定的列名位置右键点击最下方的"Remove this Column"。

(2)设置时间

默认精确到微秒,打开工具栏的"视图"选"时间显示格式"即可设置不同格式

(3)标记和导出数据包

对于某些比较重要的数据包,可以选中右键选择最上面的"标记/取消标记"设置成高亮显示。

按 Ctrl + M 也可以实现同样的效果,按两次可以取消标记

保存全部数据包:菜单栏的"文件"和工具栏的"保存捕获文件"都可以默认保存所有已经抓取的数据包。

导出一或多个数据包:菜单栏的"文件"选择"导出特定分组",仅选中分组是只保存选中的数据包;仅已标记分组是在当前捕获数据包中有标记时可用与多个选择,范围则也是可以多个选择。

(4)进一步分析数据包

除了单机数据包列表在数据包详情查看完整信息外,我们还可以右键列表对应的数据包选择"追踪流"查看该数据流的详细内容

一组完整的请求-响应对的数据包信息

4、过滤操作详解

Wireshark 提供了两个过滤器:抓包过滤器和显示过滤器,两者过滤思路不同。

(1)抓包过滤器(Capture Filter)

通过设置抓包过滤器,Wireshark 仅抓取符合条件的数据包 ,其他的会被直接丢弃,常用于高负载网络流量场景下减少数据存储压力和后续分析时间。

  • 作用时间 :在数据包进入捕获阶段时过滤。
  • 性能优势 :通过减少需要捕获的数据包数量,降低了存储和处理的负担。
  • 基于BPF 语法:简单但功能有限。

BPF 有四个元素可以自由组合:

  • 类型 Type:host、net、port、portrange、ether 等。
  • 方向 Dir:src、dst、src and dst、src or dst。
  • 协议 Proto:tcp、udp、http、icmp、arp、broadcast 和 multicast 等。
  • 逻辑运算符:and、or、not、!=、>、<、= 等。

BPF 语法的过滤器表达式:

plaintext 复制代码
[protocol] [direction] [host/port/net] [value]

host 192.168.1.1         // 只抓取与 IP 地址 192.168.1.1 相关的所有数据包(包括源和目标)
tcp dst port 80          // 只抓取目标端口是 TCP 端口 80(HTTP)的数据包
!port 80               // 不抓取端口为 80 的数据包
!brocast               // 不抓取广播包
net 192.168.0.0/16       // 只抓取属于 192.168.0.0/16 子网的所有流量
tcp port 443 and src net 10.1.0.0/24  // 只抓取源网络为 10.1.0.0/24 
相关推荐
IYU_5 小时前
VulnHub-Web-Machine-N7通关攻略
服务器·安全·web安全·网络安全
郑州吴彦祖7726 小时前
【Java】UDP网络编程:无连接通信到Socket实战
java·网络·udp
m0_490240677 小时前
qt实现一个简单http服务器和客户端
服务器·qt·http
帽儿山的枪手7 小时前
程序员必掌握docker六种网络模式
网络协议·docker·容器
DustEss7268 小时前
中间件漏洞之tomcat
java·网络安全·中间件·tomcat
小码本码10 小时前
TCP/IP协议的三次握手和四次挥手
网络·网络协议·tcp/ip
智商不在服务器10 小时前
PHP回调后门分析
网络安全
皮卡兔子屋10 小时前
TCP传输---计算机网络
网络协议·tcp/ip·计算机网络
慢德11 小时前
HTTP长连接与短连接的前世今生
网络·https