网络流量分析——使用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 48256 → 443 [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 443 → 48256 [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 48256 → 443 [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 48256 → 443 [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 的一些更高级的功能。
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!