Wireshark与TShark入门指南:网络流量分析实战技巧

本文详细介绍了Wireshark和TShark的基础设置、显示格式、捕获选项、显示过滤器、流分析及对象提取等实用技巧,帮助读者快速掌握网络流量分析的核心功能。

欢迎来到鲨鱼周:Wireshark与TShark入门指南

为致敬鲨鱼周,我决定撰写这篇博客,展示我在使用Wireshark及其命令行工具TShark分析网络流量时发现的各种实用技巧。多年来,Wireshark一直是分析捕获网络流量的事实标准工具。它具有广泛的能力,可以解封装网络流量的各层,从而分析两台主机之间的网络通信。应用场景从排查网络连接问题到揭示环境中的恶意威胁,不一而足。

回想我第一次打开数据包捕获文件进行分析时的情景……感觉有点像《回到未来II》中Marty McFly遇到巨大的Jaws全息影像时的样子。

好吧,也许没那么戏剧化,但至少可以说是令人望而生畏。我记得当时盯着屏幕想:“我甚至不知道自己在看什么……从哪里开始?邪恶在哪里?这一切到底意味着什么!?”如果你对Wireshark完全陌生,这篇博客不会解决所有遇到的困难——就像掌握任何新事物的秘诀一样,这需要大量的时间、耐心、练习和更多的练习。类似于每当有人问我“如何开始事件响应?”时,我的回答是:“开始做事件响应。”

然而,在我们开始分析数据包之前,有几个值得提及的准备工作。

首先,确保你使用的是最新版本的Wireshark。特别是当你分析来自不可信来源和/或存在点(即原始互联网流量)的网络流量时。在事件响应调查期间,最不希望发生的事情就是你的分析机器成为额外的受害者。

尽管Wireshark确实经常出现错误和漏洞,但它仍然是该领域最常用的网络协议分析器之一,并且尽管这些问题不时出现,但支持该工具的社区会迅速解决它们。以下wiki文章提供了有关此主题的更多详细信息:https://wiki.wireshark.org/Security

简而言之,保持你的工具最新,并考虑在虚拟环境中使用Wireshark,特别是在对从不可信区域捕获的网络流量进行数据包分析时。

注意:本文发布时,Wireshark的当前版本是4.0.7。

显示格式和设置

在本节中,我将介绍Wireshark中常见的一些显示格式和设置。

时间显示格式

时间是任何调查中最关键的组成部分之一,因此我们从这里开始是合理的。Wireshark支持多种选项来显示给定数据包的时间戳。要查看或更改时间显示格式,请从主工具栏导航到:查看 -> 时间显示格式。

我的偏好是UTC日期和时间(1970-01-01 01:02:03.123456)选项。关于数据包捕获中的时间戳的一个重要注意事项是——时间戳是在捕获时由实用程序(很可能是系统时间)记录的。这可能与你的分析机器是完全不同的系统,因此请确保在整个环境中实施适当的时间同步并定期审核。关于这个主题的一个好资源是CISA关于在环境中管理时间设置的指南2。此外,NIST维护了一个互联网时间服务器3列表,可用于通过NTP(网络时间协议)同步时间。

名称解析

Wireshark可以在三个区域执行自动名称解析。这些设置可以从主工具栏访问:查看 -> 名称解析。在最新安装(版本4.0.7)中,默认唯一启用的设置是解析物理地址。

根据场景,这些自动解析可能对分析师有帮助;然而,它们有可能阻碍分析甚至导致OPSEC失败……让我详细解释一下这些设置的作用。

  • 解析物理地址(MAC OUI解析) – Wireshark将MAC地址的前三个八位字节(也称为OUI或组织唯一标识符)转换为分配的供应商名称。
  • 解析网络地址(反向DNS解析) – Wireshark对源/目标IP地址执行反向DNS查找。
  • 解析传输地址(TCP/UDP端口关联) – Wireshark将TCP/UDP端口与其分配的应用协议关联(即TCP/80 – HTTP,UDP/53 – DNS)。

解析物理地址

选择解析物理地址后,Wireshark会将OUI(MAC地址中的前三个八位字节)转换为其分配的供应商。如下面数据包的数据包详细信息部分所示,八位字节00:50:56和00:0c:29都被归因于VMware。这与我是用虚拟主机生成数据包进行测试并从虚拟网络适配器执行捕获的事实一致。

解析网络地址

选择解析网络地址后,Wireshark将对捕获中的所有源和目标IP地址执行反向DNS查找。尽管这个设置可能看起来方便,但从OPSEC的角度来看,它有可能“暴露你的手”,特别是如果你正在执行包含公共可路由IP地址的数据包捕获分析。

为了演示,我在虚拟机中启用了此设置,其中客户系统配置为NAT模式。然后,在打开数据包捕获文件时,我捕获了进出客户操作系统的流量——结果:观察到反向DNS查找离开客户系统。下面的屏幕截图显示,Wireshark(从客户操作系统内部)正在为IP 137.184.39.243启动反向DNS查询,发送到公共DNS解析器(未在捕获中显示)。

解析传输地址

选择解析传输地址后,Wireshark将分别标记每个TCP和UDP端口及其通常关联的网络协议。例如,NTP(或网络时间协议)通常与TCP/123和UDP/123都关联。

在上面的屏幕截图中,我们可以在数据包详细信息部分看到Wireshark将目标端口标记为“ntp”;然而,如果我们使用Follow TCP Stream功能窥视此对话,我们可以看到这不是NTP流量,而是HTTP。

在我看来,解析物理地址是对分析最不[可能]有害的设置。在某些情况下,MAC地址分析是调查的一部分,供应商查找是有帮助的。Wireshark社区还维护了一个网站4来执行批量OUI查找,我发现这不时非常有用。

解析传输地址可能会产生误导,特别是如果你对网络分析不熟悉……我对任何考虑此功能的人的建议是将其视为信息性的,并意识到任何对系统有完全控制权的人都可以使用他们喜欢的任何TCP/UDP端口。我在测试客户的出口控制时一直这样做,而且总是让我惊讶的是,有多少组织仅基于TCP/UDP端口号允许出站流量。

分析师在处理解析网络地址选项时应谨慎行事。也许有些用例此功能是有附加价值的;然而,我认为风险不值得回报,因此我不推荐它。

显示窗口

Wireshark使用三个窗口来显示数据包信息——这些窗口是:

  • 数据包列表 – 最顶部的显示窗格,显示每个数据包的高级摘要。默认情况下,Wireshark显示:数据包编号、数据包时间戳、源/目标地址、协议和每个数据包的描述。列标题可以重新排序(向右或向左)和/或单击以排序(升序/降序)。
  • 数据包详细信息 – 左下窗格(在旧版本中是中间窗格)显示所选数据包的详细信息。Wireshark根据所选数据包的TCP/IP层以分层结构显示各种字段。
  • 数据包字节 – 右下窗格(在旧版本中是最低窗格)显示所选数据包的字节,以十六进制转储形式表示,带有ASCII字符和偏移列,也以十六进制表示。

下面的屏幕截图显示了打开数据包捕获文件时每个显示的示例。

注意:在上面的屏幕截图中,显示过滤器工具栏应用了‘http’过滤器。我稍后会讨论更多关于显示过滤器的内容。

捕获选项

如果你从未有幸使用Wireshark处理巨大的PCAP文件,请认为自己很幸运……当我说巨大时,我指的是仅500MB+。Wireshark是一个极其强大的网络协议分析器,但在处理大型数据包捕获时通常很痛苦。下一节将介绍一些有助于缓解这些痛点的技巧。

当使用Wireshark捕获网络流量时,我们可以从输入和输出角度应用各种捕获选项。这有助于限制获取数据的大小,从而帮助我们更快速地分析流量。要访问捕获选项,请从主工具栏导航到捕获 -> 选项…。

输入:将捕获限制到目标主机

要将捕获限制到目标主机,我们可以使用以下过滤器语法:

1
host <目标主机的IP地址>

在下面的示例中,我正在过滤IP地址192.168.232.130。这告诉Wireshark捕获此IP作为源或目标地址的流量。

你还可以通过从主工具栏选择捕获 -> 捕获过滤器…来查看一些预建的捕获过滤器。过滤器表达式列包含应用每个相应过滤器的示例语法。

输出:限制捕获输出

如果捕获过程要运行很长时间或无限期,最好让Wireshark根据一些提供的条件“滚动”输出到新文件。输出部分/选项卡在这里为我们提供了一些选项。我们可以告诉Wireshark在收集到x数量的数据包或字节或某个定义的时间导数后保存新文件。下面显示了一个示例,其中Wireshark配置为每次捕获的数据达到100MB时写入一个新的PCAP文件。

显示过滤器 != 捕获过滤器

一旦数据包捕获文件被打开或以其他方式由Wireshark生成,就可以应用显示过滤器以辅助分析。

显示过滤器与捕获过滤器不同之处在于:

  • 捕获过滤器仅在捕获实时网络流量时应用。
  • 显示过滤器可以在捕获过程中或分析保存的PCAP文件时使用。
  • 在实时捕获期间,Wireshark将继续捕获流量,无论应用了任何显示过滤器——显示过滤器将限制正在查看的数据包,但Wireshark将继续在后台捕获流量,如捕获选项 – 输入选项卡中所定义。

显示过滤器工具栏位于数据包列表窗口的正上方。方便的是,Wireshark会在你在此字段中键入时填充显示过滤器选择的下拉列表。这使得应用格式不正确的过滤器的可能性降低。注意:如果过滤器语法不完整/无效,Wireshark将以红色突出显示过滤器工具栏。

许多支持的Wireshark显示过滤器使用以点表示法表示的分层语法。例如,如果我们想应用基于HTTP的显示过滤器,但希望在选择中更细化,我们可以键入:“http”后直接跟“.”。然后Wireshark将列出所有支持的HTTP显示过滤器。

如果你好奇想知道所有内置支持的显示过滤器,只需导航到:查看 -> 内部 -> 支持的协议,并查看所需过滤器语法的过滤器列。下面显示的是支持的HTTP显示过滤器的一部分。

Wireshark目前支持来自近3k协议的超过218k显示过滤器!

跟随流

查看数据包内容是网络流量分析中最强大的能力之一。我们拥有的上下文越多,分析时就越了解情况。但在每数据包级别查看捕获的网络流量时,这可能说起来容易做起来难。当然,我们可以选择每个数据包并在Wireshark中查看数据包详细信息

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计