当前位置: 首页 > ops >正文

网络流量分析——使用Wireshark进行分析

文章目录

  • 使用要求
    • Windows:
    • Linux:
    • 定位Wireshark
    • 在 Linux 上安装 Wireshark
  • TShark 与 Wireshark(终端与 GUI)
    • Basic TShark Switches
  • TShark 帮助
  • TShark基本用法
    • 定位 TShark
    • 选择接口并写入文件
    • 应用过滤器
  • Termshark
    • Termshark Help
  • Wireshark GUI 演练
    • Wireshark 图形用户界面
      • **数据包列表:橙色**
      • **数据包详细信息:蓝色**
      • **数据包字节:绿色**
    • 其他显著特点
    • Wireshark 菜单
    • 在 Wireshark 中执行第一次捕获
    • 基础知识
      • 工具栏
    • 如何保存捕获
    • 捕获前和捕获后的处理和过滤
    • 捕获过滤器
    • 应用捕获过滤器
    • 显示过滤器
    • 应用显示过滤器

Wireshark 是一款免费的开源网络流量分析器,与 tcpdump 非常相似,但拥有图形界面。Wireshark 支持多种平台,能够从多种接口类型(包括 WiFi、USB 和蓝牙)捕获实时数据,并将流量保存为多种格式。与其他工具相比,Wireshark 允许用户更深入地检查网络数据包。Wireshark 真正强大的地方在于其提供的分析功能,能够深入了解流量。

根据我们所使用的主机,我们可能并不总是拥有使用传统 Wireshark 的图形用户界面。幸运的是,有几种变体允许我们从命令行使用它。

在这里插入图片描述

使用要求

使用 Wireshark 需要满足以下条件:

Windows:

在这里插入图片描述

Linux:

在这里插入图片描述

定位Wireshark

Jackson310@htb[/htb]$ which wireshark

在这里插入图片描述
如果该包不存在,(通常可以在中找到/usr/sbin/wireshark)您可以使用以下命令安装它:

在 Linux 上安装 Wireshark

Jackson310@htb[/htb]$ sudo apt install wireshark 

TShark 与 Wireshark(终端与 GUI)

两种选择各有千秋。TShark 是一款基于 Wireshark 构建的专用终端工具。TShark 拥有许多与 Wireshark 相同的功能,甚至语法和选项也相同。

TShark 非常适合在桌面环境很少或没有桌面环境的机器上使用,并且可以轻松地通过命令行将捕获的信息传递给其他工具。 Wireshark 是一款功能丰富的 GUI 流量捕获和分析工具。如果您希望获得功能齐全的体验,并在具有桌面环境的机器上工作,Wireshark GUI 是您的最佳选择。

Basic TShark Switches

在这里插入图片描述

要查看您可以使用的开关的完整列表:

TShark 帮助

Jackson310@htb[/htb]$ tshark -h

在这里插入图片描述

TShark基本用法

TShark 可以使用协议过滤器、主机和端口等常见项目,甚至可以深入挖掘数据包并剖析数据包中的各个字段。

定位 TShark

Jackson310@htb[/htb]$ which tsharkJackson310@htb[/htb]$ tshark -DJackson310@htb[/htb]$ tshark -i 1 -w /tmp/test.pcapCapturing on 'Wi-Fi: en0'
484

在这里插入图片描述

利用上面命令行中的基本字符串,我们利用 TShark 在 en0 上进行捕获,并使用 -i 标志和 -w 选项将捕获内容保存到指定的输出文件。TShark 的使用方法与 TCPDump 非常相似,因为它们都使用过滤器和开关。这两个工具都使用 BPF 语法。要读取捕获内容,可以像 TCPDump 一样给 tshark 传递 -r 开关,或者传递 -P 开关,让 tshark 在写入文件的同时打印数据包摘要。下面是一个读取我们之前捕获的 PCAP 文件的示例。

选择接口并写入文件

Jackson310@htb[/htb]$ sudo tshark -i eth0 -w /tmp/test.pcap

应用过滤器

Jackson310@htb[/htb]$ sudo tshark -i eth0 -f "host 172.16.146.2"Capturing on 'eth0'1 0.000000000 172.16.146.2 → 172.16.146.1 DNS 70 Standard query 0x0804 A github.com2 0.258861645 172.16.146.1 → 172.16.146.2 DNS 86 Standard query response 0x0804 A github.com A 140.82.113.43 0.259866711 172.16.146.2 → 140.82.113.4 TCP 74 48256443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=1321417850 TSecr=0 WS=1284 0.299681376 140.82.113.4 → 172.16.146.2 TCP 74 44348256 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1436 SACK_PERM=1 TSval=3885991869 TSecr=1321417850 WS=10245 0.299771728 172.16.146.2 → 140.82.113.4 TCP 66 48256443 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=1321417889 TSecr=38859918696 0.306888828 172.16.146.2 → 140.82.113.4 TLSv1 579 Client Hello7 0.347570701 140.82.113.4 → 172.16.146.2 TLSv1.3 2785 Server Hello, Change Cipher Spec, Application Data, Application Data, Application Data, Application Data8 0.347653593 172.16.146.2 → 140.82.113.4 TCP 66 48256443 [ACK] Seq=514 Ack=2720 Win=63488 Len=0 TSval=1321417937 TSecr=38859919169 0.358887130 172.16.146.2 → 140.82.113.4 TLSv1.3 130 Change Cipher Spec, Application Data10 0.359781588 172.16.146.2 → 140.82.113.4 TLSv1.3 236 Application Data11 0.360037927 172.16.146.2 → 140.82.113.4 TLSv1.3 758 Application Data12 0.360482668 172.16.146.2 → 140.82.113.4 TLSv1.3 258 Application Data13 0.397331368 140.82.113.4 → 172.16.146.2 TLSv1.3 145 Application Data 

在这里插入图片描述

-f 允许我们对捕获的数据应用过滤器。在本例中,我们使用了 host,但您可以使用 Wireshark 识别的几乎任何过滤器。我们现在已经稍微了解了 TShark。让我们来看看一款名为 Termshark 的实用工具。

Termshark

Termshark 是一个基于文本的用户界面 (TUI) 应用程序,可在终端窗口中为用户提供类似 Wireshark 的界面。

在这里插入图片描述
您可以在 Termshark 找到它。您可以通过克隆代码库从源代码构建它,或者从 https://github.com/gcla/termshark/releases 下载一个当前的稳定版本,提取文件,然后即可开始使用。

如需此 TUI 的使用帮助,请参见下图。

Termshark Help

在这里插入图片描述

要启动 Termshark,请输入相同的字符串,就像 TShark 或 tcpdump 一样。我们可以从终端指定要捕获的接口、过滤器和其他设置。Termshark 窗口只有在其捕获过滤器检测到流量后才会打开。所以,如果没有任何反应,请稍等片刻。

Wireshark GUI 演练

既然我们已经学习了命令行抓包的技巧,现在来学习一下Wireshark。我们将花几分钟时间分析一下下面的输出结果。让我们来剖析一下Wireshark的图形用户界面(GUI)。

Wireshark 图形用户界面

在这里插入图片描述
三个主窗格:见上图

数据包列表:橙色

在此窗口中,我们可以看到每个数据包的摘要行,默认包含以下字段。我们可以添加或删除列来更改显示的信息。

  • Number - 数据包在 Wireshark 中的到达顺序
  • Time - Unix 时间格式
  • Source - 源 IP
  • Destination - 目标 IP
  • Protocol- 使用的协议(TCP、UDP、DNS 等)
  • Information- 有关数据包的信息。此字段会根据数据包中使用的协议类型而变化。例如,它会显示针对 DNS 数据包的查询类型。

数据包详细信息:蓝色

  • “数据包详细信息”窗口允许我们深入查看数据包,以更详细地检查协议。它会将数据包分解成我们期望的、符合典型 OSI 模型参考的块。数据包会被分解成不同的封装层进行检查。
  • 请记住,Wireshark 将以相反的顺序显示此封装,较低层的封装位于窗口顶部,较高层的封装位于底部。

数据包字节:绿色

  • “数据包字节”窗口允许我们以 ASCII 或十六进制输出形式查看数据包内容。当我们从上方的窗口中选择一个字段时,它将在“数据包字节”窗口中高亮显示,并显示该位或字节在整个数据包中的位置。
  • 这是一种验证“详细信息”窗格中显示内容是否准确以及 Wireshark 的解释是否与数据包输出相符的好方法。
  • 输出中的每一行都包含数据偏移量、16 个十六进制字节和 16 个 ASCII 字节。不可打印的字节在 ASCII 格式中将替换为句点。

其他显著特点

查看 Wireshark 界面时,我们会注意到几个不同的选项区域和圆形按钮。这些区域是控制点,我们可以在其中修改界面以及当前捕获数据包的视图。参见下图

Wireshark 菜单

在这里插入图片描述

在 Wireshark 中执行第一次捕获

使用 Wireshark 开始抓包非常简单。下面的动图展示了具体步骤。
在这里插入图片描述

请记住,每次我们更改捕获选项时,Wireshark 都会重新启动跟踪。与 TCPDump 类似,Wireshark 具有可用的捕获和显示过滤选项。

基础知识

工具栏

在这里插入图片描述
Wireshark 的工具栏是管理 Wireshark 众多功能的中心。在这里,我们可以启动和停止捕获、更改接口、打开和保存 .pcap 文件,以及应用不同的过滤器或分析插件。

如何保存捕获

在这里插入图片描述

捕获前和捕获后的处理和过滤

使用 Wireshark 捕获流量时,我们有几个关于如何以及何时过滤流量的选项。这可以通过使用捕获过滤器和显示过滤器来实现。前者在捕获开始之前启动,后者在捕获期间或之后启动。虽然 Wireshark 拥有许多实用的内置功能,但值得一提的是,它在处理大量捕获数据时会遇到一些问题。捕获的数据包越多,Wireshark 运行显示或分析过滤器所需的时间就越长。即使能够完成,也可能需要几秒钟到几分钟的时间。如果我们处理的是大型 pcap 文件,最好先将其拆分成较小的块。

捕获过滤器

捕获过滤器 - 在开始捕获之前输入。这些过滤器使用 BPF 语法,例如 host 214.15.2.30,其格式与 TCPDump 类似。这样,过滤器选项会减少,并且捕获过滤器会丢弃所有未明确满足条件的流量。在排除连接故障(例如捕获两台主机之间的会话)时,这是一种减少写入磁盘数据量的好方法。

下表列出了常用且实用的捕获过滤器及其说明:

在这里插入图片描述

应用捕获过滤器

在应用捕获过滤器之前,我们先来了解一下内置的过滤器。操作方法:点击 Wireshark 窗口顶部的“捕获”图标 → 然后从下拉菜单中选择“捕获过滤器”。

在这里插入图片描述

在这里,我们可以修改现有的过滤器或添加我们自己的过滤器。

要将过滤器应用于捕获数据,我们将:点击 Wireshark 窗口顶部的捕获图标 → 然后从下拉菜单中选择“选项”→ 在新窗口中,选择“用于所选接口的捕获过滤器”下拉菜单,或输入我们想要使用的过滤器。如下图红色箭头所示。

在这里插入图片描述

显示过滤器

显示过滤器 - 在捕获运行期间和捕获停止后使用。显示过滤器是 Wireshark 专有的,它为几乎所有协议提供了许多不同的选项。

下表列出了常用且实用的显示过滤器及其说明:

在这里插入图片描述

请记住,使用显示过滤器时,流量会被处理以仅显示请求的内容,但捕获文件的其余部分不会被覆盖。应用显示过滤器和分析选项将导致 Wireshark 重新处理 pcap 数据以便应用。

应用显示过滤器

应用显示过滤器比捕获过滤器更简单。在 Wireshark 主捕获窗口中,我们只需:选择工具栏中的书签 → ,然后从下拉菜单中选择一个选项。或者,将光标放在文本框中 → ,然后输入我们要使用的过滤器。如果字段变为绿色,则表示过滤器正确。如下图所示。

在这里插入图片描述
使用捕获和显示过滤器时,请记住我们指定的是字面意思。例如,过滤端口 80 流量与过滤 HTTP 流量不同。端口和协议更像是指导方针,而不是严格的规则。端口可以绑定并用于与其最初预期用途不同的目的。例如,过滤 HTTP 流量会查找该协议使用的关键标记(例如 GET/POST 请求),并显示其结果。过滤端口 80 流量会显示通过该端口发送或接收的任何内容,无论传输协议是什么。

在下一节中,我们将使用 Wireshark 的一些更高级的功能。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

http://www.xdnf.cn/news/19258.html

相关文章:

  • Shell脚本编程——变量用法详解
  • Ruoyi-vue-plus-5.x第二篇MyBatis-Plus数据持久层技术:2.2 分页与性能优化
  • DAY17-新世纪DL(DeepLearning/深度学习)战士:Q(机器学习策略)2
  • AI 应用 图文 解说 (二) -- 百度智能云 ASR LIM TTS 语音AI助手源码
  • 自定义AXI_PWM_v1.0——ZYNQ学习笔记15
  • Spring Task快速上手
  • Maven学习笔记01
  • 【stm32】对射式红外传感器计次以及旋转编码器计次
  • SpringBoot 自研运行时 SQL 调用树,3 分钟定位慢 SQL!
  • 用产品经理的思维,重构AI时代的增长Playbook
  • 企业数据湖:从混沌到秩序的分层设计与治理策略
  • 11.1.5 实现文件删除,共享和共享下载排行榜
  • 分布式测试平台ITP:让自动化测试更高效、更稳定
  • SW - 用装配图的方式组合多个子零件然后转换成为零件,可维护性好
  • 组件通信终极指南:从Props Drilling到Context API
  • react-virtualized React 应用中高效渲染大型列表和表格数据的库
  • 扣子(coze)实践指南进阶篇——创建工作流,并将工作流接入智能体
  • 2025年8月个人工作生活总结
  • [Windows] 某音下载工具——自用
  • Selenium 等待机制:编写稳定可靠的自动化脚本
  • Kubernetes中kubeadm、kubectl、kubelet的区别与作用
  • 动态规划入门(三):一些经典动态规划模型
  • arnold图像加密(猫脸变换)
  • 一个从7zip中分离出来的高压缩比文本压缩工具ppmd
  • 文件系统深度解析:从核心概念到代码实践
  • 【MLLM】多模态理解Ovis2.5模型和训练流程(更新中)
  • 手写MyBatis第43弹:插件拦截原理与四大可拦截对象详解
  • Shell脚本编程入门:从基础语法到流程控制
  • USB4 vs USB3.0:一场接口技术的革命性飞跃
  • 鸿蒙ArkTS 核心篇-14-条件表达式(三目运算符)