Wireshark-网络安全-一-

Wireshark 网络安全(一)

零、前言

Wireshark 是网络管理和故障排除的首选工具,但它的可扩展性不止于此。它非常有助于对与网络整体安全相关的问题进行深入分析。市场上有多种工具和设备可用于检测与网络相关的攻击,并根据一组预定义的规则采取适当的措施。然而,在一个非常精细的层次上,这一切都归结为帧,或者有时可互换地称为数据包,以及它们所携带的数据。

本书是从使用 Wireshark 来检测常用网络协议中与安全相关的缺陷并分析来自流行工具(如 Nmap、Nessus、Ettercap、Metasploit、THC Hydra 和 Sqlmap)的攻击的角度来编写的。在本书的后半部分,我们将深入检查来自漏洞利用工具包和 IRC 僵尸网络的恶意软件流量,并使用 Wireshark、基本 Python 代码和补充 Wireshark 的工具解决现实世界中的 CTF 挑战。

这本书涵盖了什么

第 1 章,【Wireshark 入门——什么、为什么以及如何入门?,介绍嗅探和数据包分析及其用途。稍后,我们将通过执行第一个数据包捕获来了解 Wireshark 在图中的位置,以及如何将其用于数据包分析。

第 2 章调整 Wireshark ,讨论 Wireshark 的强大功能以及它们如何在网络安全方面发挥作用。我们将简要讨论 Wireshark 附带的不同命令行实用工具。

第 3 章分析局域网安全威胁,深入执行嗅探和捕获用户凭证,分析网络扫描企图,识别密码破解活动。在本章中,我们还将学习使用基于协议和常见攻击工具签名的重要显示过滤器,并探索基于正则表达式的过滤器。然后,我们将查看补充 Wireshark 的工具,以执行进一步的分析,并通过本章中学习的技术最终确定一个有趣的 CTF 挑战。

第 4 章探查电子邮件通信,重点分析对电子邮件通信中使用的协议的攻击,并使用 Wireshark 解决一些现实世界中的电子邮件通信难题。

第 5 章检查恶意软件流量,首先在 Wireshark 下创建一个新的配置文件用于恶意软件分析,然后从运行中的漏洞利用工具包中获取一个捕获文件,并在 Wireshark 的帮助下对其进行诊断。稍后,我们还将简要介绍基于 IRC 的僵尸网络。

第 6 章网络性能分析,从在 Wireshark 下创建故障排除配置文件开始,然后讨论和分析基于 TCP 的问题,并对缓慢的互联网、缓慢的下载进行案例研究,并进一步研究如何使用 Wireshark 发现拒绝服务攻击。

这本书你需要什么

要阅读这本书,您需要下载 Wireshark 并将其安装在您选择的操作系统上,最好具备基本的 TCP/IP 知识。

这本书是给谁的

如果您是对使用 Wireshark 进行安全分析感兴趣的网络管理员或安全分析器,这本书非常适合您。假设对常见的网络和应用服务术语和技术有基本的了解;但是,不需要高级网络主题或协议方面的专业知识。

习俗

在这本书里,你会发现许多区分不同种类信息的文本样式。下面是这些风格的一些例子和它们的含义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄如下所示:“这种情况下的一个指标是常见 IRC 命令的可见性,如USERNICKJOINMODEUSERHOST。”

任何命令行输入或输出都按如下方式编写:

frame contains "\x50\x4B\x03\x04"

新术语重要词汇以粗体显示。您在屏幕上看到的文字,例如在菜单或对话框中看到的文字,会出现在文本中,如下所示:“要启用或禁用标题,请导航到编辑 | 首选项 | 用户界面并修改选项欢迎屏幕和标题栏显示版本以满足您的要求。”

注意

警告或重要提示出现在这样的框中。

Tip

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者的反馈对我们来说很重要,因为它有助于我们开发出真正让你受益匪浅的图书。

要给我们发送总体反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com)>,并在邮件主题中提及书名。

如果有一个你擅长的主题,并且你有兴趣写一本书或者为一本书投稿,请查看我们在www.packtpub.com/authors的作者指南。

客户支持

既然您已经是 Packt book 的骄傲拥有者,我们有许多东西可以帮助您从购买中获得最大收益。

下载这本书的彩色图片

我们还为您提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。彩色图像将帮助您更好地理解输出中的变化。你可以从https://www . packtpub . com/sites/default/files/downloads/3335 OS _ colored images . pdf下载这个文件。

勘误表

尽管我们已尽一切努力确保内容的准确性,但错误还是会发生。如果您在我们的某本书中发现了错误——可能是文本或代码中的错误——如果您能向我们报告,我们将不胜感激。这样做,你可以让其他读者免受挫折,并帮助我们改进本书的后续版本。如果您发现任何勘误表,请通过访问http://www.packtpub.com/submit-errata,选择您的图书,点击勘误表提交表链接,并输入您的勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,该勘误表将被上传到我们的网站或添加到该标题的勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

盗版

互联网上版权材料的盗版是所有媒体都存在的问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上发现我们作品的任何形式的非法拷贝,请立即向我们提供地址或网站名称,以便我们采取补救措施。

请通过<[copyright@packtpub.com](mailto:copyright@packtpub.com)>联系我们,并提供可疑盗版材料的链接。

我们感谢您帮助保护我们的作者,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以通过<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们将尽最大努力解决问题。

一、Wireshark 入门——是什么、为什么以及如何入门?

嗅探和解释网络上的流量已经并将永远是网络分析器工作中不可或缺的一部分。它不仅仅限于网络分析器的职业,而且在软件开发、网络安全和数字取证领域也发挥着重要作用。Wireshark 是大多数工作场所的首选工具,其受欢迎程度和功能似乎不会降低,因此使其成为“必备”工具。本章简要介绍了:

  • 嗅探及其目的
  • 贸易工具
  • 使用 Wireshark 开始运行

根据定义,嗅是用我们的嗅觉去品味某样东西,比如闻到香水的味道。在这种情况下,我们的鼻子充当了嗅探器的角色。我们可以使用被归类为数据包嗅探器的各种工具在网络上执行嗅探,以捕获或收集网络中流动的数据包。它们只是我们查看整个 IT 基础架构上的网络流量和带宽信息的一种方式。使用数据包嗅探器来嗅探通过有线或稀薄空气(无线)传输的数据的技术称为数据包嗅探。

嗅的目的

执行数据包嗅探是为了更好地了解流经我们网络的内容。正如流经人体血管的毒素有可能杀死一个人一样,流经我们网络的恶意流量也会对网络设备、性能和业务连续性产生严重的、有时是不可挽回的影响。

嗅探有助于网络分析器验证网络和网络安全设备(如路由器、交换机、防火墙、IDS 或 IPS)的实施和功能是否符合预期,并确认数据是否通过安全的通信通道传输。

安全在出现安全漏洞的情况下,分析器使用嗅探来收集有关攻击来源、攻击时间和持续时间、涉及的协议和端口号以及为攻击目的而传输的数据的证据。它还有助于证明用于传输敏感信息的任何不安全协议的使用。

正如英国出生的美国作家克里斯托弗·希钦斯曾经说过的那样:

“没有证据就能断言的,没有证据就能驳回。”

使用数据包嗅探器有助于我们获得证据。

数据包分析

现在,找出香水的气味是令人愉快的、美味的还是难闻的是分析的一部分。因此,解释和分析流经网络的数据包的技术被称为数据包分析或网络分析。掌握这项技能是一项久经磨练的技能,如果网络管理员对 TCP/IP 协议套件有扎实的理解,熟悉数据包流,并对所选择的嗅探器有很好的掌握,就可以实现。

学习数据包级别的技术有助于巩固最难的概念。举个简单的例子,假设一个用户想要浏览一个名为example.com的网站。一旦用户在地址栏中输入 URL 并点击 GO ,数据包就开始根据该请求在网络上流动。为了理解这个数据包流,我们需要开始嗅探来查看传输中的数据包。下面的截图显示了用户打开example.com时穿越网络的数据包。

Packet analysis

我们可以在使用选择的嗅探器捕获数据包后对其进行分析,在我们的例子中,我们会注意到告诉我们源和目的 IP 地址、使用的协议、单个数据包的长度以及其他相关信息的列。随着这本书的进展,我们将深入更详细的分析。

当我们谈论企业网络时,在任何给定的时间点,网络上都有海量的流量,分析这样的流量不是在公园里散步。这种流量可能是由相互通信的大量网络设备、响应用户请求或在需要时通过互联网发出自己的请求的服务器以及试图完成日常工作任务的最终用户产生的。没有比执行数据包级分析更好的理解信息流的方法了,正如网络分析中的一句名言所说的那样,数据包从不说谎。此外,Wireshark 的幕后黑手 Gerald Combs 曾发推文如下:

“数据包永远不会说谎”,但是随着流量的增加,你最终会得到一万亿个真相。诀窍在于找到重要的问题。”

像 IT 领域的其他事情一样,学习这些技巧需要经验。举个例子,如果你想提高你的编程技能,你必须日复一日地练习写代码,以便能够写出结构化的和优化的代码,这些代码能够发挥魔力。数据包分析也是如此。

数据包分析可以进一步帮助管理员:

  • 监控并提供网络活动的详细统计数据
  • 区分正常流量和异常流量
  • 执行网络诊断
  • 识别并解决网络性能问题,如带宽利用率过高
  • 进行深度数据包检测
  • 调查安全漏洞

贸易的工具

市场上有许多免费的和商业的数据包嗅探器,通常被称为网络分析器,选择一个最符合您需求的是一个选择的问题。决定这一点有几个因素,如使用的操作系统、支持的协议集、易用性、可定制性,当然还有预算。以下是比较受欢迎的几个:

  • Tcpdump : Tcpdump 是一个免费且流行的命令行数据包捕获实用工具,在没有基于 GUI 的工具的情况下,它非常方便。然而,即使在通过 tcpdump 捕获流量之后,用户也可以使用任何基于 GUI 的免费或商业工具来分析和解释流量,因为这在视觉上很容易。参见http://www.tcpdump.org/manpages/tcpdump.1.html处的 TCPDUMP 概述。
  • Nagios Network Analyzer 和 OmniPeek :这些是商业级网络分析仪,为组织提供数据包分析能力,并具有一些自己独有的功能。这些产品的定价可以在他们的个人网站上看到。
  • Wireshark : Wireshark 的前身是 Ethereal,是免费的开源软件,是目前最流行的数据包分析器。它跨多个平台工作,并通过一个易于使用的 GUI 支持大量的协议族。参见http://wiki.wireshark.org/ProtocolReference/

除了我们刚刚介绍的专用嗅探器工具之外,包嗅探功能和模块集成在许多流行的安全相关工具中,例如 Snort、Metasploit 和 Scapy 等等。Snort 最初是一个嗅探器,后来利用其嗅探能力发展成为我们今天所知的流行的网络入侵防御系统 ( NIPS )和网络入侵检测系统 ( NIDS )解决方案。

另一个例子是 Metasploit 中的sniffer模块。使用 Metasploit 成功危害机器后,用户可以执行该模块,并开始嗅探危害机器上的通信量,以便进一步枚举。Metasploit 提供的嗅探选项如下所示:

The tools of the trade

另一个很好的选择是在 Scapy 中使用sniff()。Scapy 是一个用 Python 编写的包操作工具,可以用来生成、处理和解码包并捕获它们。它在许多与安全测试相关的活动中很有帮助。

这本书的重点是“Wireshark”。那么,我们开始吧。

Wireshark 是什么?

正如前面所讨论的,Wireshark 是最受欢迎的数据包分析器,它的大量粉丝背后是有原因的。它拥有大量功能,支持大量常见和不常见的协议,具有易于导航的 GUI,可以在流行的操作系统上轻松安装和使用,如 Windows、Linux 和 Mac OS X,完全免费。

Wireshark 可以从官网(http://www.wireshark.org)下载安装。安装设置相对简单,只需点击几下鼠标,您就可以在 Windows 机器上启动并运行 Wireshark。

注意

Windows、Unix 和 Mac OS X 的安装指南可以在https://www . wireshark . org/docs/wsug _ html _ chunked/chapterbuildinstall . html找到。

在撰写本文时,最新版本是 Wireshark 1.12.6。下载并安装后,您应该能够启动 Wireshark,并且会出现一个类似如下所示的屏幕:

What is Wireshark?

Wireshark 接口–开始捕获之前

让我们从 Wireshark 接口的各个方面开始。

Title

这个包含 Wireshark 的默认标题以及当前使用的版本。要启用或禁用标题,请导航至编辑 | 首选项 | 用户界面并修改选项欢迎屏幕和标题栏显示版本以满足您的要求。要修改标题,请导航至编辑 | 首选项 | 用户界面 | 布局,并在自定义窗口标题字段中输入合适的标题,如下图所示:

TitleTitle

注意

注意:这将被附加到当前标题,如前面的屏幕截图所示。

菜单

菜单栏包含了 Wireshark 的所有特性,这些特性都被分类在合适的标题下。在本书的过程中,这些选项将在需要时被采用。例如,您可以通过导航到帮助 | 关于 Wireshark 并选择作者选项卡来查看参与 Wireshark 开发的作者。

Menu

这就是它的样子:

Menu

主工具栏

主工具栏包含 Wireshark 中更常用项目的图标。您会注意到有些选项是灰色的。这是因为在当前上下文中并非所有选项都可用。一旦我们开始捕获,我们将看到它们中的大部分被突出显示并可供使用。

Main toolbar

过滤工具栏

Filter toolbar

过滤流量可以帮助分析器大海捞针。Wireshark 中有两种类型的过滤选项。一个叫做 捕获滤镜,第二个叫做显示滤镜

捕获过滤器定义哪些帧将被捕获并发送到 Wireshark 的捕获引擎进行处理,然后在 Wireshark 中显示,而显示过滤器定义哪些帧在被捕获后显示。我们可以重新定义显示过滤器,而不需要重新开始捕获,这不是捕获过滤器的情况;因此,我们需要谨慎使用它们。侧面的表达式选项帮助我们以一种简单的方式创建过滤器表达式,因为有一个巨大的过滤器列表,我们不需要浪费时间去记忆它们。

Wireshark 通过提供我们使用的过滤器是否正确(被 Wireshark 接受)的视觉指示器,通过将背景颜色更改为红色(错误的过滤器表达式)和绿色(正确的过滤器表达式)来提供帮助,如下面的屏幕截图所示:

Filter toolbar

错误的过滤器

正确的过滤器应该是这样的:

Filter toolbar

正确的过滤器

注意

您可能会注意到,有时过滤器显示黄色背景。这可能是因为您输入的筛选表达式没有按预期工作。一个例子是使用Filter toolbar代替正确的滤波器,即Filter toolbar

一旦过滤器表达式准备就绪,您可以按进入,或者点击应用将该过滤器应用于所选的数据包列表,并且您可以通过点击清除来移除当前的过滤器表达式。

注意

在大型捕获中应用显示过滤器可能需要一些时间,并且进度是可见的。

在花了一些时间创建过滤器后,您会注意到您使用多个AND ( &&)和OR ( ||)语句组合了许多过滤器,并且还想在另一个捕获文件中使用相同的过滤器表达式。为此,您可以使用过滤器工具栏最右侧的保存按钮在 Wireshark 中保存过滤器。

Filter toolbar

过滤以仅查看 192.168.20.130 发出的 HTTP GET 请求

捕获帧

这个帧有助于识别开始捕获数据包的接口以及这些接口的相关选项。

Capture frame

这里,在捕获帧,我们有三种方式开始捕获:

  • 接口列表:如果你不确定用于捕获的活动接口,选择这个选项是一个不错的选择,因为它给你一个可用接口、使用中的 IP 地址和每个接口传输的数据包数量的完整列表。使用这些信息,我们可以很容易地确定使用哪个接口来捕获流量。Capture frame简单来说就是Capture frame界面,点击开始开始抓图。

    注意

    您可以选择在开始捕获之前点击选项.然而,这将打开在捕获选项中讨论的相同捕获选项

  • 开始:如果你知道有问题的网络接口,这是最简单和最快的开始捕获的方法。您只需从可用的接口列表中选择接口,然后点击开始

  • Capture Options: This is an advanced way to start a capture, as it provides tweaking capabilities before a capture is even started.Capture frameHere you can Capture frame an individual interface to capture or Capture frameCapture on all interfaces, to do exactly what it says.

    通过单击捕获过滤器,您可以在捕获开始前选择/创建任何过滤器。在此之后,您可以调整一些选项来执行无人值守的捕获。例如,我们希望创建多个 200 KB 的文件,并在 2 分钟后自动停止捕获。下面的屏幕截图显示了这是如何做到的:

    Capture frame

    为多个文件配置

    以下是生成的文件:

    Capture frame

    多个文件

注意

Wireshark 以FileName_FileNumber_YEARMMDDHRMINSEC.pcap格式保存文件名。

关于此框架上其他选项的详细信息,请访问https://www . wireshark . org/docs/wsug _ html _ chunked/chcapcaptureoptions . html

捕获帮助

以下是捕获帮助菜单的外观,稍后我们将看到该菜单下可用选项的描述。

Capture Help

在这里,我们有两个选项可以帮助我们高效地使用 Wireshark 进行捕获。单击这些选项会将用户重定向到:

文件菜单

下面的是文件菜单的样子,稍后我们将看到该菜单下可用选项的描述。

The Files menu

该菜单提供了以下选项:

  1. 浏览并打开已经捕获的跟踪文件。
  2. 单击并打开任何最近打开的文件。此处列出的最近文件的数量可以通过转到编辑 | 首选项 | 用户界面然后编辑最大最近文件数选项至所选值进行修改。The Files menu
  3. 在官方网站(http://wiki.wireshark.org/SampleCaptures)下载样本采集文件。

在线

顾名思义,点击此类别下列出的选项会将我们重定向到 Wireshark 的在线资源。

状态栏

状态栏用于显示信息性消息。它分为以下三个部分:

  • 状态栏的左侧显示与上下文相关的信息,其中包括指示当前专家信息级别的彩色项目符号,以及编辑或添加捕获注释的选项。

  • 中间部分显示了当前的数据包数量和加载时间。

  • 状态栏的右侧显示当前使用的配置描述文件。默认情况下,存在三种配置文件[ 默认蓝牙经典 ],用户可以随时根据需要创建和使用新的配置文件。The Status bar

    状态栏

第一次数据包捕获

让我们按照以下步骤使用 Wireshark 从第一个数据包捕获开始:

  1. 启动 Wireshark

  2. 选择正确的接口来捕获流量。这可以通过导航到菜单栏并点击捕获 | 接口来完成(作为一种快捷方式,我们可以选择 Ctrl + I )。一旦我们打开了Wireshark:Capture Interfaces窗口,执行以下步骤:

    1. 选择面向互联网的接口(例如,在我的例子中是 Wi-Fi)。窗口右侧的数据包数据包/秒栏是活动界面的一个很好的指示,如下图所示:First packet capture
    2. 选择接口后,点击选项按钮,如截图中突出显示的,弹出 Wireshark:捕获选项窗口,如下图所示:First packet capture捕获过滤器字段中输入host example.com,因为我们只想捕获进出域example.com的流量,并点击输入键。我们将在下一章详细讨论捕获过滤器
  3. 下一步是让 Wireshark 在后台运行,打开你选择的浏览器(例如,在我的例子中是 Mozilla Firefox)并浏览example.com

  4. Once example.com loads, navigate to Wireshark, and stop the packet capture, by clicking on the Stop button First packet capture in the main toolbar. Once stopped, the capture appears as shown in the following screenshot:First packet capture

    在前面的截图中,我们可以看到 Wireshark 的菜单栏、主工具栏和过滤器工具栏,后面是三个不同的窗格和状态栏。这三个窗格如下:

    1. 数据包列表窗格:该窗格反映 Wireshark 捕获的数据包以及这些数据包的一些基本细节。例如,我们捕获的第一个数据包是从客户端到服务器的三次握手的 SYN 数据包。

      注意

      请注意,此窗格下显示的数据包可能会受到过滤器工具栏中使用的显示过滤器的影响

    2. Packet Details pane: If we select any packet in the Packet List pane, its details are shown under this pane. For example, after selecting the first packet in our capture, we can look at the packet at a more granular level, that is, the changes it undergoes at different layers of networking (for example, source and destination ports under the Transmission Control Protocol (TCP), that is, the Transport layer of the TCP/IP model).

      此窗格以树格式显示协议和协议字段,并且当当前数据包与同一捕获中的另一个数据包有关系时,还会显示任何链接(例如,单个通信的请求和响应关系)。

    3. 数据包字节窗格:该窗格以十六进制转储格式显示所选数据包的字节,并受前一窗格即数据包详情窗格所选内容的影响。

  5. 最后一步是保存捕获的数据包。我们可以通过导航到菜单栏,点击文件 | 保存,并在您选择的目录中以适当的名称保存。

恭喜你!这样,我们就成功地捕获并保存了我们的第一个跟踪文件。

总结

在本章中,我们回顾了嗅探的基础及其在现实世界中的实际重要性,可供我们使用的执行嗅探的不同工具,以及了解 Wireshark GUI 以快速开始嗅探并执行我们的第一个数据包捕获。我们将在下一章开始分析部分。

二、调整 Wireshark

不言而喻,一旦你开始在一个繁忙的网络上嗅探,你将被大量的流量淹没,你很快就会失去你所寻找的东西并寻求帮助。因此,理解嗅探器的不同特性变得至关重要。本章将在使用 Wireshark 分析多个跟踪文件时重点介绍这些功能。在本章结束时,您将对以下内容感到满意:

  • 在 Wireshark 中使用过滤器
  • 创建多个配置文件
  • 使用先进的技术
  • 使用 Wireshark 预装的实用工具执行命令行 fu

通过 Wireshark 过滤

过滤器类似于程序员/开发人员在编写代码时使用的条件。如果我们只想看到TelnetCapture.pcap文件中的 ARP 数据包,我们将在过滤器工具栏中为 ARP 和应用一个条件,如果当前文件包含 ARP 数据包,它们将被显示否则根本看不到任何数据包。

Filtering our way through Wireshark

仅显示 ARP 流量

Wireshark 的当前稳定版本 1.12.6 总共包括 13 个默认捕获过滤器和 15 个默认显示过滤器。要查看可用的捕获过滤器列表,我们可以进入菜单栏,点击捕获 | 捕获过滤器...,并查看可用的显示过滤器,点击过滤器工具栏上的过滤器按钮。我们可以按原样使用它们,也可以将它们用作模板,并对它们进行定制,以添加/创建新的模板来满足我们的需求。

Filtering our way through Wireshark

Wireshark 中可用的默认捕获过滤器

Wireshark 提供了以下两种类型的过滤选项:

  • 捕获过滤器
  • 显示过滤器

Tip

捕获和显示过滤器的语法是不同的。捕获过滤器使用 Berkeley 包过滤 ( BPF )过滤器语法也使用 by tcpdump ,而显示过滤器使用 Wireshark 的专用显示过滤器格式。要深入了解这些过滤器,请访问以下 URL:

捕获滤镜:http://wiki.wireshark.org/CaptureFilters

显示过滤器:http://wiki.wireshark.org/DisplayFilters

捕获过滤器

捕获过滤器在任何界面上开始捕获之前使用,不能应用于现有的捕获文件。

当我们确切地知道我们在寻找什么时,没有什么比捕获过滤器更好的了。例如,当我们需要排除网络上与 动态主机配置协议 ( DHCP )相关的问题,并且不关心网络上的任何其他帧时,那么我们可以应用下面的捕获过滤器:port bootpc,并且我们将看到的只是网络上的 DHCP 流量,而不是其他。

注意

从技术上讲,所有流量首先通过捕获过滤器,然后转发到捕获引擎进行进一步处理。如果应用了捕获过滤器,符合条件(捕获过滤器)的帧将被转发到 Wireshark 的捕获引擎 ,其余的将被完全丢弃。这是使用捕获过滤器的主要好处,因为它减轻了计算机解析任何无用帧的负担。但这是一把双刃剑,我们在应用捕获过滤器时需要小心,因为我们不想丢弃任何从分析角度来看可能很重要的帧。

在武器库中拥有一套优秀的捕获过滤器可以帮助我们快速定位网络上的任何异常。

注意

关于快速解决网络问题,需要注意的另一个要点是将分析仪放置在正确的位置,即位置。例如,如果网络上的许多客户端抱怨网络性能,那么将分析器放在离服务器更近的地方将是一个很好的开始,而不是在每个客户端进行分析。

以下是捕获过滤器的列表:

除了前面提到的默认的一组捕获过滤器之外,您的武器库中还有许多方便的捕获过滤器。它们如下:

|

捕获过滤器

|

描述

|
| --- | --- |
| ether host <Client's MAC> and ether host <Server's MAC> | 仅客户端和服务器流量,基于各自的 MAC 地址 |
| port bootpc | 仅 DHCP 流量 |
| vlan <vlan-id> | 对于特定的 VLAN |
| ip6 | 仅 IPv6 流量 |
| ip proto 1 | 仅 ICMP 流量 |
| port ftp | 仅 FTP 流量 |
| not port 3389 | 排除 RDP 流量 |
| udp dst port 162 | SNMP 请求 |

到生成捕获过滤器的有用链接是https://www.wireshark.org/tools/string-cf.html

Tip

每当您不确定使用哪种捕获过滤器时,建议从不太严格的捕获过滤器开始,或者根本不使用捕获过滤器,然后使用显示过滤器缩小问题范围。一个例子是使用捕获过滤器udp dst port 162和显示过滤器snmp.community来查看 SNMP 请求中的社区字符串。

显示过滤器

显示过滤器主要用于分析已经捕获的数据包。但是,它们也可以在捕获时使用,因为它们不限制被捕获的数据包,它们只是限制可见的数据包数量。

现在,有时我们不想在开始数据包捕获之前应用任何过滤器,而是需要捕获通过我们网络的所有内容。

例如,每当网络上触发安全事件时,我们必须捕获网络上流动的所有数据包,然后使用 Wireshark 等数据包/网络分析工具分析和重建事件,这一点非常重要。在分析过程中,我们可能需要根据某些条件过滤掉流量,例如基于 IRC 的通信或跟踪上传到另一个国家的服务器的 FTP。为此,Wireshark 提供了显示过滤器,让生活变得更加轻松。显示过滤器允许我们最大限度地利用 Wireshark 解析器,它负责解码和解释每个数据包的字段。

Wireshark 中有大量的显示过滤器,幸运的是,记住它们并不是我们应该做的。如果我们碰巧知道字段名,我们可以点击过滤器工具栏中的表达式,并通过从协议子树中选择字段名字段名字段值之间的关系手动创建一个表达式,然后最后给它赋值。

Display filters

Wireshark 的过滤器表达式窗口

另一种方法是简单地选择特定的数据包,在数据包详细信息窗格中定位我们正在寻找的字段,过滤器的相应字段名将在底部的状态栏中突出显示。

例如,我们可以看到下面的截图,其中我们试图找到用于过滤基于 TCP 源端口 23 的流量的字段名称

Display filters

最终过滤器如下所示:

Display filters

源端口 23 的显示过滤器[TCP]

显示过滤器的列表

下面的表格显示了一组方便的显示过滤器:

|

显示过滤器字段名称

|

描述

|
| --- | --- |
| ip.addr | 进出 IP 地址的流量 |
| eth.addr | 进出以太网地址的流量 |
| tcp.port | 指定一个 TCP 端口 |
| frame.time_delta | 距离前一个捕获帧的时间增量 |
| http.request | 仅 HTTP 请求 |
| arp.src.proto_ipv4 | ARP 数据包中的发送者 IP |
| tcp.analysis.ack_rtt | 往返时间 |
| tcp.analysis.retransmission | 显示所有重新传输 |
| icmp.type | ICMP 数据包的类型 |
| wlan.addr | 硬件地址[以太网或其他 MAC 地址] |

有关显示过滤器的更全面列表,您可以参考以下链接:

Wireshark 档案

随着我们对 Wireshark 的使用越来越熟悉,我们将在此过程中创建几个过滤器,其中一些在关键情况下会非常简洁和有用。此外,当修复特定问题需要使用多个显示和/或捕获过滤器、各种彩色化方案来突出显示流量中的坏的/意外的帧以帮助在视觉上区分这种流量,以及定制的偏好设置和布局改变时,将会出现这种情况。因此,为攻击场景、故障排除或任何特定情况创建我们自己的配置文件始终是一个不错的选择。

要查看 Wireshark 中当前使用的配置文件,请查看状态栏的右下角。到目前为止,我们已经使用了默认的概要文件。

创建新的个人资料

要创建一个新配置文件,请在键盘上按下Ctrl+Shift+A组合键,然后点击 New ,或者转到Edit|ConfigurationProfiles我们也可以右击状态栏中的 Profile 区域,选择 New

下面的截图显示了为不同场景创建的多个配置文件,加上切换到选项,这使得在多个配置文件之间快速切换变得容易:

Creating a new profile

新创建的配置文件会突出显示

每个配置文件配置位于本地不同的文件夹中。要找到文件夹的位置,只需进入帮助 | 关于 Wireshark 并选择文件夹选项卡。

Creating a new profile

在前面的屏幕截图中,突出显示的部分包含个人和全局配置文件的文件夹位置。

注意

为了在另一个系统上使用您的定制配置文件,只需将整个profiles文件夹复制并粘贴到另一个系统的profiles文件夹中。

Wireshark 中的基本技术

在深入包分析之前,本节介绍的技术将为您提供将要处理的内容的基本知识;从数据包分析的角度来看,这些技术非常重要。这些大多属于菜单栏下的统计菜单,如下图所示:

Essential techniques in Wireshark

统计类别下的众多选项

汇总窗口

要在 Wireshark 中访问的摘要窗口,请进入菜单栏中的统计并选择摘要汇总窗口包括以下内容:

  • 文件详细信息
  • 时间详情
  • 捕获细节
  • 显示详细信息

从这里可以推断出一些重要的细节:

  • 捕获时间和持续时间
  • 操作系统和 Wireshark 的版本详细信息
  • 捕获接口
  • 使用的任何捕获/显示过滤器
  • 平均包/秒,平均包大小
  • 平均字节/秒

协议层级窗口

要查看该视图,请进入菜单栏中的统计 并选择协议层级。本节为我们提供了当前打开的捕获文件中的协议分布,如下所示:

The Protocol Hierarchy window

来自 TelnetCapture.pcapng 的协议层次结构统计信息

对话窗口

对话是两个实体或端点之间的通信。对话可以发生在不同的层上,如 MAC 层、网络层和传输层。要查看对话,请前往统计 | 对话

The Conversations window

WebBrowsing.pcap 的对话窗口

如果我们将移动到 TCP 选项卡,我们将看到允许我们跟踪 TCP 流和创建图表的选项。

端点窗口

一个端点只是对话的一方,它可以是以太网、IPv4 和其他选项,这些选项在端点窗口中显示为选项卡。导航到统计 | 端点查看端点窗口。

当我们导航到端点窗口的 IPv4 选项卡时,它向我们显示了新的列,如国家城市纬度经度。为了让这些列反映这些值,我们需要首先配置 GeoIP 服务。按照后面提到的步骤在 Wireshark 中配置 GeoIP。

以下是在 Wireshark 1.12.6 中配置 GeoIP 的步骤:

  1. Download the GeoIP database. Since Wireshark does not prepackage its own set of GeoIP database(s), we will need to download a GeoIP database from http://geolite.maxmind.com/download/geoip/database/. This URL points to a freely available version of GeoIP database; however, you may also choose to buy it, if interested.

    从前面提到的 URL 下载 GeoLite Country 和 GeoLite City 的二进制/gzip 文件,并将这些文件解压缩并保存在选择的目录中。提取后,它们将如下所示:

    The Endpoints window

  2. Point Wireshark to the directory containing the GeoIP database. Launch Wireshark and navigate to Edit | Preferences and select Name Resolution under User Interface menu on the left-hand side of the window and click on Edit where it mentions GeoIP database directories, as highlighted in the following screenshot:The Endpoints window

    点击编辑后,我们将看到 GeoIP 数据库路径窗口,需要按照下面截图中突出显示的步骤来提及保存 GeoIP 数据库的目录路径,在我的例子中是D:\GeoIP

    The Endpoints window

    选择路径后,点击确定,然后再次点击 GeoIP 数据库路径窗口中的确定,以应用路径更改,最后点击 Wireshark 首选项窗口中的最后一个确定

  3. 关闭 Wireshark 并重新启动它。

  4. Open any trace file of choice, navigate to the Endpoints window, and click on Map, as highlighted in the following screenshot:The Endpoints window

    通过点击地图,Wireshark 使用纬度和经度值,动态创建地图。下面的截图反映了一个鸟瞰图,但是,如果我们放大,我们将能够看到黄点进一步扩展到其相应的纬度和经度值。

    The Endpoints window

    地图上的黄点表示端点窗口中显示的相应纬度和经度所指向的位置

统计数据类别下还有其他有趣的选项,我们将在本书的过程中不时深入探讨。

专家信息窗口

要从菜单栏打开专家信息窗口,导航至分析 | 专家信息,或简单点击状态栏左上角的彩色按钮。

Wireshark 使用专家信息提供专家建议,以帮助我们解决问题,并在某些情况下引导我们找到根本原因。该建议分为错误警告注释聊天,其中错误表示最严重的问题,而聊天表示最不严重的问题。

The Expert Infos window

如前图所示,这些类别旁边的彩色 led 也出现在状态栏的左上角,指示每个数据包的严重性级别。

专家信息也有自己的一套显示过滤器,如下所示:

The Expert Infos window

Wireshark 命令行傅

为了方便地使用 Wireshark 附带的命令行工具,建议将本地 Wireshark 目录的路径添加到系统环境变量中。随着我们继续前进,我将假设您已经如上所述配置了系统环境变量。说到这里,现在让我们来看看 Wireshark 附带的以下更有用的命令行实用工具:

  • tshark
  • capinfos
  • editcap
  • mergecap

Tip

-h参数传递给任何命令行实用工具,以浏览每个实用工具的帮助选项。例如,打开命令提示符并运行tshark –h

听着

Wireshark 的命令行版本: tshark 是用于在我们没有特权使用交互式用户界面,或者我们担心数据包丢失的典型情况下捕获并经常显示数据包。因为在网络上传输大量流量的情况下,Wireshark 的捕获引擎可能无法以数据包在接口上传输的速度进行捕获,也可能会崩溃。因此,使用 tshark 来捕获这样的流量总是一个明智的选择。

要查看 tshark 的所有可用选项,请运行命令tshark –h

开始捕获

如果您在没有任何参数的情况下运行,它将在遇到的第一个非环回接口上开始捕获。要查看可用接口,我们可以运行以下命令:

C:\>tshark –D

Starting the capture

用 tshark 列出接口

只需选择您想要使用的接口,并通过运行以下命令开始捕获该接口(在本例中为2)上的流量:

C:\>tshark –i 2

Tip

停止捕获

要手动停止,请按下 Ctrl + C 的组合。

要自动停止,使用带条件的–a选项。当满足应用的条件时,捕获停止。例如,以下捕获在 10 秒后停止:

C:\>tshark –i 2 –a duration:10

将捕获保存到文件中

现在,有些时候需要将捕获的数据包保存在一个文件中。在这种情况下,您可以使用–w选项:

C:\>tshark –i 2 –w FirstCapture.pcap

使用过滤器

在使用 tshark 捕获流量时,您可以同时使用显示和捕获过滤器。

要将捕获过滤器与 tshark 一起使用,请使用下面给出的–f选项:

C:\>tshark –i 2 –f "port bootpc" –w DHCP_Only.pcap

要将显示过滤器与 tshark 一起使用,使用如下给出的–R选项:

C:\>tshark -2 –R "http.request.method==GET" –r HTTP_Traffic.pcap –w HTTP_Get.pcap

使用上面的命令,我们读取HTTP_Traffic.pcap,应用http.request.method==GET的显示过滤器,然后将过滤后的数据包写入HTTP_Get.pcap

统计

tshark 也给了我们一个通过使用–z参数来查看统计数据的选项。

要查看协议层级,使用以下选项:

C:\>tshark –r HTTP_Traffic.pcap –qz io,phs

Statistics

首都信息

capiinfos用于打印捕获文件的信息,如下所示:

capinfos

capinfos 最常用的选项

-H参数用于使用常用的哈希算法SHA1RIPEMD160MD5创建捕获文件的哈希。

我们既可以单独使用这些参数,也可以如前所示将它们组合起来。

注意

您可以在不传递任何参数的情况下运行 capinfos 命令,以查看捕获文件的摘要,如下所示:

capinfos HTTP_Traffic.pcap

editcap

这个实用工具在修改捕获文件时很方便,比如将一个大文件分成多个文件集,从一个文件中删除重复的包,或者将一个捕获文件从一种格式转换成另一种格式。

editcap

使用 editcap 将一个文件拆分成多个文件集

以下示例显示了如何从跟踪文件[ Duplicates.pcap ]中删除重复的数据包。这个通常是为了避免重复检查相同数据包的麻烦,从而缩短分析时间。

C:\>editcap –d Duplicates.pcap NoDuplicates.pcap

mergecap

这个工具主要用于将多个捕获文件合并成一个输出文件。从下面的截图中可以看出,两个 PCAP 文件被作为输入提供给了mergecap实用工具,它生成了一个名为“HTTP_Merged.pcap”的合并版本。

mergecap

将多个 HTTP 捕获文件合并到 HTTP_Merged.pcap 中

总结

在这一章中,我们看到了在繁忙的网络中使用捕获过滤器的强大功能,以及如何使用显示过滤器或简单地将一个大的跟踪文件分割成多个文件以方便导航。我们还在 Wireshark 中创建了新的配置文件来帮助我们简化日常活动,并学习了如何使用 Wireshark 附带的出色的命令行实用工具。随着我们在本书中继续深入,我们将使用这些以及先进的技术。在下一章,我们将分析对局域网安全的威胁。

三、分析局域网安全威胁

|   | “认识自己是一切智慧的开始” |   |
|   | ——亚里士多德 |

对流经我们网络的流量有一个清晰的了解,对于理解任何通过网络的可疑流量非常重要。简单来说,我们应该能够区分好的和坏的流量。为良好的流量建立基准是朝着这个方向迈出的重要一步,可以显著减少威胁分析所需的工作量。在本章中,我们将讨论局域网安全面临的威胁,以及如何使用 Wireshark 来分析这些威胁。我们最后还会解决一个现实世界夺旗 ( CTF )的挑战。

兰是我们自己的王国,我们,这个王国的战士,有义务维护一个不被侵犯的环境。和任何王国一样,威胁总是存在,而且不容易根除。威胁可能来自许多媒介,例如,王国里淘气的人,来自外部世界的敌人,等等。

现在,时间快进,在现实世界中,王国是我们受雇的组织,威胁最终可能来自任何地方,如自然灾害、不满的员工、外部的任何人,甚至是咬断您的网线的老鼠。是的,老鼠咬断电缆是一种威胁,但绝对不是您可以通过 Wireshark 分析的威胁。

安全威胁不断创新,采用不同的攻击媒介,并且在不断演变。对策很多,许多公司以基于软件和硬件的解决方案的形式提供安全解决方案来防止和检测这种攻击。检测这些攻击与预防它们同样重要,当我们谈到企业时,他们所信任的工具都预先配置了某种集成的嗅探功能。前面已经讨论过集成嗅探功能的这类工具的例子。自动化是好的,我自己也是这方面的一个大布道者,但是完全依赖工具也不是一个明智的方法,就检测网络攻击而言,让某人在流量流动时进行分析是一个很好的选择。此外,Wireshark 凭借其广泛的功能,如前几章所述,可以帮助我们检测网络上发生的大多数攻击。

让我们从分析明文流量开始。

分析明文流量

首先我们将看看穿越我们网络的明文流量。这种流量的最大安全问题是它的可读和可理解的格式,甚至是用户凭证这样的敏感信息。正如我们将在本节中看到的那样,人类无需任何额外处理就可以轻松理解明文流量。我们网络中的许多常见协议都以这种方式进行通信。以下是常用协议的列表:

  • 文件传送协议
  • 用于远程联接服务的标准协议或者实现此协议的软件(可为动词)
  • 超文本传送协议
  • 普通文件传送协议(Trivial File Transfer Protocol)
  • 简单邮件传输协议
  • POP3

在 Wireshark 中查看凭证

现在,我们将看看如何分别查看这些明文协议的凭证。

FTP

文件传输协议 ( FTP ),用于通过 TCP 传输文件,默认情况下通过端口 21 运行,除非定制为使用不同的端口。这是文件传输最常用的协议之一。以下是在 Wireshark 的数据包列表窗格中显示用户凭据的 FTP 通信截图:

FTP

明文形式的 FTP 凭据

远程登录

Telnet 是一种通常用于与远程计算机交互的协议。这是远程配置网络设备或控制 web 服务器的最常见方式。当使用 Telnet 时,数据再次通过明文传输,但幸运的是,我们正在转向使用更安全的协议,如 SSH 来远程管理设备并与之通信。

默认情况下,Telnet 通过 TCP 端口 23 运行。

查看 Telnet 流量凭证的步骤如下:

  1. 进入统计 | 对话并移至 TCP 选项卡。
  2. 选择适当的 Telnet 对话(显示为端口 23)并点击底部的跟随流。【T2Telnet

跟踪 TCP 流后,我们可以清楚地看到 Telnet 流量和凭证,如下所示:

Telnet

注意

默认情况下,TCP 流中的红色表示客户端发送的数据,蓝色表示服务器发送的数据。因此,我们看到了一个奇怪的用户名,它是发送和接收的一个字节的组合。如果我们把这些字节分开来单独看,我们可以很容易地算出用户名。

HTTP

超文本传输协议 ( HTTP )是一种流行的应用层协议,通常用于浏览网站和在网络服务器和客户端(通常是网络浏览器)之间传输超文本文档。

默认情况下,HTTP 使用 TCP 端口 80,由于许多组织更喜欢为其 web 服务使用自定义端口,Wireshark 提供了一些常见端口的列表,它将这些端口解析为 HTTP 流量。这些可以在编辑 | 首选项 | 协议 | HTTP 下找到并进一步编辑。

HTTP

注意

最近,HTTP 从 1999 年的 HTTP/1.1 升级到了 HTTP/2,在撰写本文时,还没有正式开始使用 HTTP/2 的日期,但是许多人可能在不知不觉中仍在使用它。最新的服务器(Windows 10 下的 IIS)和浏览器(Firefox Beta 36)据说已经开始支持 HTTP/2。

HTTP 流量也以纯文本形式传输,使用什么类型的请求(GET 或 POST)并不重要:它们都不安全,因为协议本身不提供任何类型的加密。因此,我们使用 HTTPS (HTTP over SSL/TLS)来发送敏感信息。

注意

HTTPS 是 HTTP 的安全替代品,但是说使用 HTTPS 保护一切是天真的,因为我们最近已经看到针对 SSL 和 TLS 发现了漏洞,即 HeartBleed、BEAST、CRIME、POODLE 和 FREAK,使 SSL v3.0 成为过时和不安全的协议。

在本章的后面,我们将看到一个臭名昭著的攻击,它使用了与前面提到的攻击不同的媒介。在这种攻击下,我们将从 HTTPS 中剥离 SSL,从而将它转换成 HTTP[明文形式],使我们更容易阅读和理解通信。

TFTP

我们几乎总是需要一个可靠的协议来传输文件;因此,我们将使用 FTP,或者现在我们知道有相当安全的替代方案,我们可能想从中选择。但是我们很少使用 TFTP,因为它在 UDP 上工作,而且由于 UDP 是一种不可靠的协议,所以不推荐它用于文件传输。

你会注意到非常罕见的 TFTP 流量。例如,将 IOS 映像传输到 Cisco 设备的方法之一是使用 TFTP 协议,但您并不经常这样做。你知道吗?

底线 : TFTP 是网络上常见的一种不同寻常的协议,我们需要确保每当遇到这种穿越网络的流量时,我们都会仔细分析这种流量。

重组数据流

当流量以明文形式传输时,重组数据以查看哪些文件正在通过网络传输或下载变得很容易。稍后将分享一个案例研究,其中磨练这些技能会有所帮助。

案例研究

在我最近参与的一次法医调查中,我们被要求处理一起诈骗案。在仔细检查了组织提供的所需数据后,我决定分析捕获文件。

在分析这些捕获文件的过程中,一些事情引起了我的注意。我注意到文件传输在每隔一天的特定时间发生。这些传输是通过 FTP 进行的,从公司内部的一台客户机传输到一个外部 IP 地址,该地址对公司来说是未知的。

我的下一步是从 TCP 流中提取传输的数据(重新组装 FTP 数据流),为此,我遵循了与下面类似的步骤:

  1. 检查 TCP 对话。根据传输的最大字节对对话进行排序,通过点击跟随流选择并跟随可疑流(通常基于传输的大量字节),如下:Case study
  2. 在查看流之后,您需要通过查看传输的字节来选择正确的数据方向/流向,如下:Case study
  3. 选择后,下一步是通过分析流中的文件签名来识别正在传输的文件,在本例中是JFIF,它是 JPG 文件的指示器。Case study
  4. 最后一步是通过点击另存为保存数据流,并将其保存为指定的格式。在这种情况下,我把它保存为 JPG 文件。

这个案子是通过首先重组数据,提取一个图像文件,然后分析它来解决的,只有使用一种被称为隐写术的技术来缩小 XLS 文件隐藏在图像后面的范围。

注意

隐写术是一门将数据隐藏在其他看似无害的信息中的科学。

高级取证工具包和开源工具可用于从捕获文件中分析和提取信息和文件。然而,这是 Wireshark 在这种情况下如何得心应手的一个例子。

对于其他明文协议,数据流也可以以类似的方式重组。

注意

SMTP 和 POP3 将在下一章中简要介绍,即第 4 章探测电子邮件对话

检查嗅探攻击

嗅探活动是由恶意用户/攻击者在中间人 ( MitM )场景中执行的,他们想要掌握网络上的数据流。嗅探攻击有两种类型:

  • 被动嗅探
  • 主动嗅探

被动嗅探指的是在有集线器的网络上进行嗅探,其中网络上的所有设备都连接到一个集线器,由于所有数据包都发送到集线器上所有连接的设备,攻击者只需插入该集线器并监听该集线器上发生的对话。在使用集线器的网络上很容易嗅探,但很少发现有集线器的网络。

主动嗅探是指在交换网络上进行嗅探,其中设备连接到交换机,而交换机与集线器不同,它不会将所有数据包广播到网络上的所有设备。因此,在使用交换机的网络上执行嗅探并不容易。然而,在交换网络上也不是不可能的。

在当前使用交换机的环境中,我们不能只插上笔记本电脑就启动嗅探器。事实上,即使插上笔记本电脑并访问网络也不容易有许多基于网络访问控制 ( NAC )的解决方案,更不用说启动嗅探器了。

为了嗅探基于交换机的环境,攻击者需要执行额外的攻击。在这种情况下,我们假设攻击者是内部人员或在局域网上有足够权限执行这些攻击的人。这些攻击如下:

  • MAC 泛洪
  • ARP 中毒

MAC 泛滥

MAC flooding,也称为 CAM table exhaustion 攻击,是一种攻击者用大量随机 MAC 地址淹没交换机以填充交换机 CAM 表的攻击。这种攻击利用了交换机有限的内存来维护 MAC 地址到其物理端口的映射,当这种攻击成功时,交换机变成一个集线器,开始向所有端口发送数据包,使攻击者很容易嗅到网络上的流量。

用于这次攻击的工具是 Macof 和耶尔森氏菌。

使用 Wireshark 检测 MAC 泛洪攻击:

Wireshark 的专家信息:在 MAC flooding 攻击的情况下,首先 Wireshark 将所有数据包标记为格式错误的数据包,这在专家信息窗口下也是可见的,如下所示:

MAC flooding

现在,让我们看看下面截图中 MAC 泛滥的一些其他迹象:

MAC flooding

  • 在这里,随机源 IP 地址(1)具有相同的 TTL 值(2),这令人惊讶,在这种情况下,也指向相同的目的地。
  • 还有很多帧的源 MAC 地址属于 IEEE 802.3-2002 组(显示过滤器:eth.src_not_group))。

ARP 中毒

地址解析协议 ( ARP ),用于从已知的 IP 地址解析设备的 MAC 地址,需要注意的一点是,ARP 请求是广播,而 ARP 回复是单播。

ARP 中毒是一种非常常见的 MitM 攻击方式。在攻击过程中,攻击者的 MAC 地址与目标主机的 IP 地址或网络上的所有主机相关联,具体取决于所选攻击的类型。以下快照显示了攻击进行时其中一台主机的 ARP 缓存表:

ARP poisoning

需要的工具有 Ettercap、Arpspoof 和 Cain and Abel。

以下是使用 Wireshark 检测 ARP 中毒攻击的步骤:

  • Look for Duplicate IP address configured in the Expert Info window's Warnings tab as shown in the following screenshot:ARP poisoning

    否则,使用arp.duplicate-address-detected过滤流量。

  • 我们还可以过滤那些有网关 IP 地址但没有网关 MAC 地址的数据包,因为一般来说攻击者试图伪造网关 MAC 地址。Wireshark 的显示过滤器将是:

    arp.src.proto_ipv4 == <Gateway's IP> && !(eth.src == <Gateway's MAC address>)
    
    

分析网络侦察技术

侦察的字典定义是对一个地区的军事观察,以确定敌人的位置或确定战略特征。一个很好的侦察类比是,一个小偷在他/她甚至想从邻居那里偷东西之前,会研究邻居,观察哪些房子是空的,哪些是被占用的,住在被占用的房子里的家庭成员的数量,他们的进入点,这些被占用的房子空着的时间等等。

网络侦察是指收集有关目标网络基础设施、驻留在网络上的设备、此类设备使用的平台以及其上开放的端口的信息,以最终得出设备的简要网络图,然后相应地计划攻击。

接下来,我们将使用 Wireshark 检测此类活动。

检查网络扫描活动

执行网络扫描活动所需的工具随时可用,并且可以从互联网上轻松下载。其中一个流行的工具是网络映射器 ( Nmap )。它由 Gordon“Fyodor”Lyon 编写,是执行基于网络的侦察的常用工具。

网络扫描活动可以如下:

  • 扫描实时计算机
  • 端口扫描
  • 检测防火墙或附加 IP 协议的存在

检测正在运行的机器的扫描活动

一个攻击者会想要找出网络上的活机器,而不是在假设所有机器都是活的情况下执行任何活动。以下是可以使用的两种流行技术以及使用 Wireshark 检测它们的方法。

平扫

这种技术利用一种简单的技术来 ping 一个 IP 地址,以便识别它是否有效。几乎所有的现代网络都阻止 ICMP 协议;因此,这种技术不是很成功。但是,如果您的网络支持基于 ICMP 的流量,您可以通过查找大量发往网络上某个 IP 地址范围的 ping 请求来检测此攻击。在这种情况下,一个有用的过滤器是:

icmp.type == 8 || icmp.type == 0
ICMP Type 8 = ECHO Request
ICMP Type 0 = ECHO Reply

ARP 扫描

无法在网络上禁用 ARP 响应;因此,这种技术在尝试识别本地网络上的活动机器时非常有效。利用这种技术,攻击者可以发现可能被防火墙隐藏起来而不被其他发现方法(如 ping 扫描)发现的主机。

为此,攻击者发送一个 ARP 广播(目的 MAC 地址—FF:FF:FF:FF:FF:FF ),针对给定子网上所有可能的 IP 地址,响应这些请求的机器被标记为活动的。

为了检测 ARP 扫描企图,我们需要从网络上的客户机寻找大量的 ARP 广播。另一件要注意的事情是这些广播发送的持续时间。这些在下面的截图中突出显示:

ARP sweep

ARP 扫描正在进行中

注意

需要注意的一点是这些 ARP 请求的来源,以避免误报,因为此类请求也可能由合法服务(如 SNMP)发出。

识别端口扫描尝试

现在,我们将看看攻击者使用的不同端口扫描技术,以及如何使用 Wireshark 检测它们。

TCP 连接扫描

在 TCP 连接扫描中,客户端/攻击者在一系列端口号上向服务器/受害者发送 SYN 数据包。对于使用 SYN/ACK 响应的端口,客户端通过发送 ACK 来完成三次握手,然后通过向服务器/受害者发送 RST 来终止连接,而关闭的端口使用客户端/攻击者发送的 RST/ACK 数据包来回复 SYN。

因此,为了识别这种类型的扫描,我们需要寻找大量的 RST ( 专家信息)或 SYN/ACK 数据包。一般来说,当建立连接时,会传输某种形式的数据;然而,在扫描尝试中,没有数据被发送,这表明有人正在执行扫描(导航到对话 | TCP )。

另一个指示是这些分组被发送的短时间段;导航到统计 | 流程图

Wireshark 的流程图

在观察流图中的 TCP 流时,我们注意到一系列的 SYN、SYN/ACK 和 ACK 以及 SYN 和 RST/ACK。另一个指示是这些数据包发送的秒数部分(显示在左侧)。

Wireshark's Flow Graph

开放端口的完整三次握手,以及“时间”栏下的数据包发送速度

Wireshark 的专家信息

甚至专家信息窗口也显示大量连接重置。

Wireshark's Expert Info

专家信息下的警告选项卡

Wireshark 的对话

我们可以查看 TCP 对话,观察正在进行的扫描类型以及与每个对话相关的字节数。

Wireshark's Conversations

每次会话传输的数据包和字节数

数据包栏中的数字4表示 SYN、SYN/ACK、ACK 和 RST 数据包,数字2表示 Nmap 发送的 SYN 和关闭端口接收的 RST/ACK。

隐形扫描

秘密扫描不同于之前解释的 TCP 连接扫描,并且不会被应用层检测到,因为在该扫描期间不会建立完整的 TCP 三次握手,因此也称为半开扫描。

在扫描过程中,客户端/攻击者通过一系列端口号向服务器/受害者发送 SYN 数据包。如果 Nmap 收到对 SYN 请求的 SYN/ACK,说明端口是开放的;然后,Nmap 发送一个 RST 来关闭连接,甚至没有完成三次握手,而关闭的端口用 RST/ACK 数据包来回复 SYN 请求。

检测这种攻击的方式与前面的扫描类似,在扫描中您会注意到网络上有很多没有数据传输的 RST ( 专家信息)或 SYN/ACK 数据包(对话 | TCP )。

另一个指示是这些分组被发送的短时间段(统计 | 流图)。

现在,我们将查看 Wireshark 中的流程图专家信息对话窗口进行隐形扫描。

Wireshark 的流程图

在观察流图中的 TCP 流时,我们注意到一系列 SYN、SYN/ACK 和 RSTs(表示半开连接)以及 SYN 和 RST/ACK。另一个指示是这些数据包发送的秒数部分(显示在左侧)。

Wireshark's Flow Graph

此图显示了正在进行的半开放扫描,以及“时间”栏下的数据包发送速度

Wireshark 的专家信息

大量的连接重置是扫描正在进行的另一个迹象。

Wireshark's Expert Info

专家信息下的警告选项卡

Wireshark 的对话

TCP 对话还提供了一种洞察力,表明正在进行半开放扫描,以及与每次尝试相关的字节数。

Wireshark's Conversations

每次会话传输的数据包和字节数

数据包栏中的数字3表示 SYN、SYN/ACK 和 RST 数据包,数字2表示 Nmap 发送的 SYN 和关闭端口接收的 RST/ACK。

零扫描

在空扫描期间,发送带有 no 标志的异常 TCP 数据包。如果其结果是无响应,这意味着该端口是开放的或过滤的,而 RST/确认响应意味着该端口是关闭的。

检测这种扫描是否正在进行的快速方法是过滤tcp.flags == 0x00

NULL scan

UDP 扫描

最后三种技术与基于 TCP 的扫描相关。许多常见的协议也在 UDP 上工作(DNS、SNMP、TFTP 等),并且进行扫描来检测这些端口是否打开。

对 UDP 端口扫描没有响应表示该端口是开放的或受防火墙保护的,ICMP Destination Unreachable / Port Unreachable的响应表示该端口已关闭。

通过在(icmp.type == 3) && (icmp.code == 3)上过滤来检测 UDP 扫描。

ICMP Type 3 = Destination Unreachable
ICMP Code 3 = Port Unreachable

其他扫描尝试

下面的扫描技术超越了传统的端口扫描技术,帮助攻击者进一步枚举网络。

确认扫描

ACK 标志扫描从不定位开放端口;更确切地说,它只以过滤未过滤的形式提供结果,通常用于检测防火墙的存在。

无响应意味着端口被过滤,RST 响应表明端口未被过滤。

ACK scan

ACK 标志扫描的流程图(TCP)

IP 协议扫描

攻击者进行 IP 协议扫描,以确定受害者是否使用了其他 IP 协议。例如,如果使用这种技术扫描路由器,可能会发现使用了其它协议,如 EGP、IGP、EIGRP 等。

无响应表示协议存在或响应被过滤,而 ICMP Destination Unreachable / Protocol Unreachable表示设备不支持该协议。

要使用 Wireshark 检测这种扫描,我们可以根据以下内容过滤流量:(icmp.type == 3) && (icmp.code == 2)

ICMP Type 3 = Destination Unreachable
ICMP Code 2 = Protocol Unreachable

操作系统指纹尝试

操作系统指纹是一种技术,攻击者试图识别目标机器上运行的操作系统。攻击者可以执行被动或主动指纹识别。

在被动指纹识别中,攻击者监控进出目标机器的流量,并寻找某些指示,如初始 IP TTL 值、TCP 窗口大小或用户代理字符串,以及其他独特的操作系统特征,以识别所使用的操作系统。例如,Mozilla/5.0 的用户代理字符串(X11Linux i686RV:31.0)Gecko/2010 01 01 Firefox/31.0 ice weasel/31 . 5 . 0 帮助攻击者假设目标运行的是 Linux 机器。但是,用户代理字符串和其他因素可以使用许多工具进行修改。因此,这不是一个可靠的方法。

需要的工具是 P0f 和 Ettercap。

主动操作系统指纹识别为攻击者提供了更可靠的结果,但在此活动期间发送的探测使其可被 Wireshark 和其他高级检测工具检测到。

以下是用于操作系统指纹识别的不同技术:

  • ICMP-based fingerprinting: Certain tools make use of unique ICMP probes to detect how an OS responds and make a guess based on that. The following are important filters for such a case:

    (icmp.type == 8) && (!(icmp.code == 0))
    
    

    一些工具(例如,xprobe2)使用带有异常 ICMP 代码的 ICMP 回应请求,因此前面的过滤器帮助我们检测这些尝试。

    (icmp.type == 13) || (icmp.type == 15) || (icmp.type == 17)
    
    

    其他工具倾向于发送 ICMP 时间戳请求(13)、ICMP 信息请求(15)和 ICMP 地址掩码请求(17),以便执行操作系统指纹识别。

  • TCP/IP-based fingerprinting: Specific TCP probes with specific field values are sent and monitored for OS-based responses in order to detect the type of OS in use.

    例如,进行的测试之一是发送 TCP SYN 数据包并记录 SYN/ACK 响应,以测试初始序列号 ( 不是)的值。

    关于这些尝试的更多细节可以在 https://nmap.org/book/osdetect-methods.html T2 找到。

注意

劳拉·沙佩尔在 2013 年鲨鱼节上分享了一个有趣的样本安全简介。该配置文件包括基于特定过滤器的着色规则,用于不同的扫描、指纹识别和网络上的其他非法活动。截至发稿时,这个简介可以从 bit.ly/nmapcolors 的下载到 T2 的

检测密码破解企图

密码破解是一个有意义的或随机的猜测密码的过程。有几种技术可以做到这一点。然而,以下是破解密码的两种最流行的方法。

  • 暴力攻击
  • 基于字典的攻击

暴力攻击

暴力破解是一种尝试用数字、大小写字母和特殊字符的组合来破解密码的方法。这可以使用某些工具来完成,如 Brutus、THC Hydra、Medusa、Burp Suite intruder 和许多其他在线工具。可以对网络上运行的许多涉及身份验证的服务进行暴力攻击,例如 FTP、SSH、POP3、HTTP、Telnet、RDP 等等。

识别 POP3 密码破解

在下面的例子中,我们看到一个捕获的暴力破解 POP3 的企图。

Identifying POP3 password cracking

在上图中,我们使用了一个显示过滤器(pop.request.command == PASS)来缩小访问 POP3 服务的密码尝试的范围,并查看过滤的数据包;可以看出,暴力破解正在进行中。

这些尝试的另一个迹象是这些尝试进行得有多快。一个人不可能在几秒钟内做出如此多的尝试,正如在时间栏中突出显示的那样,因此表明使用了密码破解工具。

HTTP 基本认证

当用户试图访问无线接入点和路由器等设备的任何基于 web 的管理时,通常会发现这种类型的身份验证。在一次安全评估中,我发现了一个管理思科自适应安全设备管理 ( ASDM )设备的门户网站,该设备具有这种类型的认证,很容易被暴力破解,因为它也没有任何锁定机制。

注意

对于 HTTP 基本身份验证,需要注意的一点是凭据是 Base-64 编码的,而不是像 FTP 或 POP3 那样以明文形式发送。然而,Base-64 很容易被解码,我们将在解决 CTF 挑战时看到。

基于字典的攻击

在基于字典的攻击中,有限的一组单词(单词表)被用来破解密码。

检测 FTP 密码破解

为了这个演示的目的,我们使用 THC Hydra 通过基于字典的攻击来破解 FTP 的密码。以下是跟踪文件:

Detecting FTP password cracking

使用 ftp.request.command 过滤 ftp 请求

在上图中,我们可以注意到随机单词被尝试用作用户admin的密码,这表明基于单词列表的攻击正在进行中。另一个指示是在几秒钟内尝试这些密码,这可以在时间栏中查看。

为了以防万一,我们需要验证攻击者是否成功地进行了这些尝试,我们可以在ftp.response.code == 230上进行过滤,并查看是否有任何符合该过滤器的数据包。

Detecting FTP password cracking

在当前场景中,我们找到了一个符合过滤规则的数据包。这表明攻击成功,攻击者找到了用户msfadmin的密码。

Tip

检测密码破解企图的另一个标志是 TCP 对话的巨大数量,可以在统计下查看。

杂项攻击

在本节中,我们将从网络的角度来看一些未分类但很重要的攻击。

FTP 反弹攻击

这是以一种隐秘的方式执行端口扫描的老技术。该漏洞存在于 FTP 在ACTIVE模式下传输数据时使用的PORT命令中。

利用这种技术,攻击者可以指示 FTP 服务器打开到可能不是原始客户端的机器的特定端口的连接。这种情况可能允许攻击者通过隐藏自己的身份在目标上执行端口扫描。Nmap 有一个选项–b来执行这种类型的扫描。然而,大多数 FTP 服务器都知道这种攻击,并相应地进行配置来阻止这种扫描,从而防止 FTP 反弹攻击。

在极少数情况下,如果您怀疑有人试图对网络进行此类攻击,您可能需要使用以下过滤器:

ftp.request.command == "PORT"
ftp.response.code == 226 || ftp.response.code == 426
Response Code of 226 means "Closing data connection. Requested file action successful" and 426 means "Connection closed; transfer aborted". Nmap uses these response codes to determine whether the port is open or closed.

注意

FTP 更安全的替代方案是 SFTP 和 SCP,它们通过加密通道传输数据。

DNS 区域迁移

默认情况下,DNS 使用 UDP 端口 53 进行普通查询和响应,使用 TCP 端口 53 进行区域传输和更大的名称查询和响应。

仅用于 DNS 流量的捕获过滤器是 tcp 端口 53 或 udp 端口 53。

DNS 区域迁移是一种跨多个 DNS 服务器复制 DNS 数据库的技术。它可以通过以下两种方式执行:

  • 完全/完整[AXFR]
  • 增量[IXFR]

攻击者可能试图执行区域转移来了解 DNS 数据库。你不会经常在网上看到这样的流量。从攻击的角度来看,我们应该寻找完整的区域转移尝试,下面的过滤器在像dns.qry.type == 252这样的场景中会很有用。

SSL 剥离攻击

简单地说,这种攻击迫使受害者的浏览器通过 HTTP 而不是 HTTPS 进行通信,由于受害者通过 HTTP(一种纯文本协议)进行交互,这使得攻击者很容易理解通信。

注意

这种攻击的内部工作方式非常有趣,我强烈建议您访问http://www.thoughtcrime.org/software/sslstrip/了解这种攻击,下载 Python 脚本,并在本地测试环境中执行这种攻击。

如上所述,为了这次攻击的目的,我们将使用 sslstrip (由莫邪·马林斯派克编写)。这个工具也预装在 Kali Linux 的当前版本中,一个渗透测试 Linux 发行版,(【https://www.kali.org/】T4)。

以下是成功执行攻击后以纯文本格式捕获的 Gmail 凭据示例:

SSL stripping attack

纯文本格式的 Gmail 凭据

接下来,我们可以看到雅虎!纯文本邮件凭证。

SSL stripping attack

雅虎!纯文本邮件凭据

Wireshark 的补充工具

在此部分,我们将了解一些神奇的工具,它们是 Wireshark 的补充,有助于我们进行更好的分析。

Xplico

Xplico 是一个奇妙的开源网络取证分析工具,它与流行的 pen-testing 和 forensics Linux 发行版打包在一起。

在 Kali Linux 上运行 Xplico:

  1. 要手动安装 Xplico,请运行以下命令:

    sudo apt-get install xplico
    
    
  2. 安装完成后,我们需要通过运行:

    /etc/init.d/xplico start
    
    

    来启动 Xplico 的服务

  3. 此外,请确保 web 服务正在运行。这可以通过运行/etc/init.d/apache2 start来完成。现在我们需要打开浏览器,浏览http://127.0.0.1:9876,使用xplicoxplico作为用户名和密码。Xplico

    Xplico 的图像使用者界面登录后

  4. 首先,我们需要创建一个新案例,然后在该案例中创建一个新会话,稍后上传 PCAP 文件进行分析。Xplico

正如在其维基页面中提到的,Xplico 可以帮助重建用数据包嗅探器获取的内容。

Sysdig

对于执行故障排除活动的人来说,这是一个的令人敬畏的工具,是对 Wireshark 的很好补充。Sysdig 让系统级故障排除变得更轻松、更有趣。Sysdig 可以使用–w命令行标志创建跟踪文件,并使用–r标志读取它们,如下面的屏幕截图所示:

Sysdig

使用 Sysdig 写入和读取跟踪文件

Sysdig 还包括一组有用的脚本,术语中也称为凿子,可以与–c标志一起使用。要查看 Sysdig 使用的凿子列表,请查看–cl标志,如下所示:

Sysdig

Sysdig 中的凿子列表

我们也可以创建自己的凿子来和 Sysdig 一起工作。目前,Sysdig 将其凿子分为九类,如下所述:

  • CPU 使用率
  • 错误
  • 输入-输出
  • 日志
  • 多方面的
  • 网络
  • 表演
  • 安全性
  • 系统状态

注意

要想深入了解 Sysdig 的,我建议去 http://www.sysdig.org/和 T2【体验】一下这个工具。

PCA x2 XML

Pcap2XML 是一个方便的实用工具,用于在宏观层面解析 802.11 数据包。它将捕获文件转换成等效的 XML 和 SQLite 文件,然后执行 XPath、XQuery 和/或 SQL 查询,从这些文件中获取宏统计信息。

该工具通过提供 Wireshark 目前没有的功能来补充 Wireshark。例如,我们可以使用该实用工具解析出 802.11 捕获文件中的唯一 MAC 地址。

Pcap2XML

使用 Pcap2XML 将 PCAP 转换为数据库文件

将捕获文件转换为数据库文件后,我们可以用任何用于编辑与 SQLite 兼容的数据库文件的软件打开它,并执行 SQL 查询以获得所需的结果。

Pcap2XML

对数据库文件执行的 SQL 查询

我们还可以在使用 Pcap2XML 的–x选项将 PCAP 文件转换成 XML 文件后运行 XPath 查询。

注意

pcap 2 XML 可以从https://github.com/securitytube/pcap2xml下载。

SSHFlow

SSHFlow 是由 Alex Weber 编写的一个有趣的“正在开发中”的实用工具,用于检查 SSH 流量的 PCAP 文件。它是用 Python 编写的,其工作原理是根据最常见的数据包大小来猜测通过 SSH 会话传输的是什么。

该实用工具的当前功能包括以下检测:

  • 文件传输
  • 互动会议
  • 嵌套隧道
  • X11 转发

下面的是 SSHFlow 的一个使用示例。这个屏幕截图反映了一个用户通过 SSH 与远程机器进行交互。

SSHFlow

在 SSH.pcap 文件中检测到交互式会话

下面的屏幕截图显示了正在运行的文件复制:

SSHFlow

在 SSH2.pcap 文件中检测到文件传输

注意

你可以在https://github.com/alexwebr/sshflow找到更多关于 SSHFlow 的。

重要显示过滤器

在此部分,我们将了解一些显示过滤器,它们将在日常的安全协议分析中派上用场。

基于协议的过滤器

在本部分,我们将了解一些最常用协议的最有用的显示过滤器。

DNA

DNS 常用的显示过滤器如下:

dns
dns.query.response == 0 
dns.query.response == 1
dns.flags.rcode == 2 [Server Failure]

FTP

遍历 FTP 通信时可以使用的一些常用显示过滤器如下:

  1. ftp.request.command == "USER":该过滤器用于根据特定的 FTP 命令过滤数据。可以在 http://en.wikipedia.org/wiki/List_of_FTP_commands找到 FTP 命令列表。
  2. ftp.request.arg == "anonymous":我们可以使用这个过滤器来缩小传递给 FTP 命令的精确参数的范围。
  3. 过滤特定的 FTP 响应代码可以帮助我们识别网络上的任何特定问题。例如,如果我们在 FTP 流量中看到许多 530 响应代码,则很有可能有人试图破解密码。
  4. ftp || ftp-data (command control and data transfer):这个过滤器允许我们查看网络上完整的 FTP 流量,包括通过网络传输的命令和数据。

HTTP

下面的是 Wireshark 中用于 HTTP 或 HTTP/2 流量的相关显示过滤器:

http
http2
http.set_cookie
http.cookie
http.request.method 
http.response.code >=300 and http.response.code <400 [Redirections]
http.response.code >=400 and http.response.code <500 [Client-Side Errors]
http.response.code >500 [Server-Side Errors]
http.user_agent [Malwares might try to beacon using some specific User-Agent String, or Scanners/Tools can be identified using a particular User-Agent String]

以下是 Wireshark 根据用户代理字符串检测到的常见自动 SQL 注入工具的示例:

  • Havij(一个自动化的 SQL 注入工具)在运行中如下面的截图所示:HTTP
  • Sqlmap(一个自动化的 SQL 注入工具)在下面的截图中显示:HTTP

下面的命令有助于过滤掉恶意或异常的主机名流量。例如,当恶意软件执行呼叫总部机制时。

http.host matches "some-domain-name"

基于唯一签名和正则表达式的过滤器

独特的签名:我们也可以选择过滤不同文件类型的独特签名。例如,当在跟踪文件中查找 ZIP 文件时,我们可以使用以下显示过滤器:

frame contains "\x50\x4B\x03\x04"

\x50\x4B\x03\x04是 ZIP 文件的唯一签名。这些签名有时被称为幻数。下表突出显示了一些常见文件扩展名的签名,可以在显示过滤器中与contains关键字一起使用。

这些签名的示例用法如下:

语法 : frame contains "<Signature>"

示例 : frame contains "\x25\x50\x44\x46"(用于 PDF 文件)

这些在分析过程中会很方便。

注意

http://en.wikipedia.org/wiki/List_of_file_signatures可以找到文件签名的综合列表。

正则表达式

Wireshark 为我们提供了另一个简洁的特性:将正则表达式 ( RegEx )与我们的显示过滤器一起使用。为了使用带有显示过滤器的正则表达式,我们使用matches关键字。以下是一些例子:

  1. 要在跟踪文件中定位任何关键字(passwordconfidentialsecret,请使用以下过滤器:、

    frame matches "(?i)(password|confidential|secret)"
    
    

  2. 要在 HTTP 流量中查找任何.com域,请使用以下过滤器:

    http matches "[a-zA-Z0-9\-\.]+\.(?i)(com)"
    
    
  3. 要查找 SMTP 流量中的任何电子邮件地址,请使用以下过滤器:

    smtp matches "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9._%+-]"
    
    

通过使用正则表达式,我们可以在字符串字段和字节序列中搜索流行的文本。我们对 RegEx 使用得越好,遍历跟踪文件的速度就越快,从而缩短分析时间。

注意

Wireshark 中的正则表达式使用了 Perl 兼容的正则表达式 ( PCRE )。

http://regexone.com/了解更多关于 RegEx 的。

挑战 CTF

CTF 事件是全球安全会议的常见内容。在一些 CTF 挑战赛中,我们会收到一个 PCAP 文件,需要对其进行分析,以解决特定的挑战或获得旗帜。这正是我们接下来要做的。我们将解决黑客 3(【http://hack3rcon.org/】T5)大会中给出的 CTF 挑战。

挑战:夺取给定的 PCAP 文件中的旗帜。这个文件可以从http://sickbits.net/other/hc3.pcap-04.cap下载。

解决方案:我们将使用 Wireshark 解决这一挑战,并引入一些其他实用工具来帮助解决这一问题。步骤如下:

  1. 使用 Wireshark 打开 PCAP 文件,查看运行中的协议。Nailing the CTF challenge

  2. We can see that this file contains 802.11 frames. The next step would be to identify the security algorithm in use, to see if we can crack the encrypted 802.11 frames and actually see what is going on behind the scenes. We can do this by filtering on unique signatures in each type of security algorithms, namely, WEP, WPA, and WPA2.

    我们可以使用 IV ( 初始化向量),一个与数据加密密钥一起使用的随机数,来识别 WEP 是否在使用中。因此,wlan.wep.iv上的过滤将在跟踪文件中显示任何 WEP 加密的流量。

    Nailing the CTF challenge

    根据过滤器显示总数据包的 74.4%

    在前面的图像中,我们注意到有 155051 个数据包与我们的过滤器匹配,如果我们进一步观察第 5 帧,我们可以看到以下内容:

    Nailing the CTF challenge

    因此,目前,我们可以假设 WEP 用于加密 802.11 流量。

  3. WEP is a weak algorithm with numerous weaknesses, and we can attempt to crack it. However, to crack WEP, we need to have a minimum number of IVs captured, and if we notice in the screenshot that shows 74.4 percent of the total packets based on the filter, we have 155051 frames containing IV, which is enough to attempt to crack the WEP key.

    为了破解 WEP,我们将利用一个名为aircrack-ng的流行而神奇的工具。这种情况下用来破解 WEP 的命令是aircrack-ng hc3.pcap-04.cap

    Nailing the CTF challenge

    成功破解 WEP

  4. 现在,我们可以使用airdecap-ng来解密 PCAP 文件中使用该密钥的帧,或者我们可以通过删除找到的密钥中的冒号(:)来向 Wireshark 添加解密密钥。让我们使用 Wireshark 来实现这一点。Nailing the CTF challenge

    检查无线工具栏,并从无线工具栏中选择"解密密钥…"选项

    Nailing the CTF challenge将(=water-extendedpolyester)水扩展聚脂解密密钥添加到 Wireshark 的步骤

  5. 将解密密钥添加到 Wireshark 后,从无线工具栏突出显示的下拉菜单中选择 Wireshark ,点击主工具栏上的Nailing the CTF challenge ( 重新加载按钮),重新加载跟踪文件。一旦重新加载,我们可以看到 802.11 流量和其他协议的混合,如 ICMP 和 ARP。要去除 802.11 流量,使用显示过滤器:llc,然后我们将看到一些可以分析的有趣的流量。此时,我们可以选择将这些数据包导出到一个单独的 PCAP 文件中[推荐]或直接使用它。

  6. After going over to Statistics | Conversations and then to the TCP tab, we can see conversations over FTP, SMTP, and POP3.Nailing the CTF challenge

    有趣的对话

    在跟踪突出显示的对话上的 TCP 流之后,我们能够注意到 ZIP 文件的文件签名;因此,我们使用另存为按钮将其保存为 ZIP 文件,如下所示:

    Nailing the CTF challenge

    将 TCP 流保存为 ZIP 文件

我们还在 TCP 流中看到一个有趣的关键字,如前面的图片中突出显示的,因此选择将该文件保存为flag.zip

  1. 我们还没有完成,因为这个 ZIP 文件被密码保护如下:Nailing the CTF challenge
  2. 让我们回到我们的 PCAP,看看我们是否错过了什么。进一步跟踪,我们注意到 SMTP 和 POP3 通信。如果我们移动并扩展帧 105840 上的,我们会注意到互联网消息格式 ( IMF )的使用,并且在该帧上的扩展将 Base-64 编码的字符串反映为,如下图所示:Nailing the CTF challenge
  3. Base-64 本身可以使用许多工具和在线资源轻松解码。以下是反映解码后的 Base-64 字符串的屏幕截图。Nailing the CTF challenge

恭喜你!

我们能够通过使用解码的密码bostonMA1977打开受密码保护的 ZIP 文件。下面的是我们的挑战旗帜:

Nailing the CTF challenge

旗帜在图像中突出显示

总结

在本章中,我们研究了局域网环境中最常见的攻击,并了解了如何使用 Wireshark 的最佳功能来检测这类攻击。此外,我们需要强调良好流量的基线,以便更好地应对局域网安全威胁,这样任何异常都可以通过 Wireshark 轻松检测到。另一个方便的技巧是拥有一个好的过滤器和着色规则列表来匹配它们并节省分析时间。我们简要地看了一下那些很好地补充 Wireshark 的工具,并在最后使用了一些工具来解决 CTF 挑战。

四、检测电子邮件通信

几个世纪以来,信息一直在交换;然而,交换这些信息的方式已经发生了变化,隐私变得比以往任何时候都更加重要。从使用信使以物理方式传递消息的时代到最近使用互联网传递消息的时代,这些漏洞一直存在,并且直到今天也没有完全修复。在这一章中,我们将探讨一种当代的信息传递方式,即电子邮件,以及它带来的安全威胁。

在本章中,我们将学习以下内容:

  • 如何使用 Wireshark 检测对 SMTP 的大量攻击
  • 使用 Wireshark 和 Python 解决 SMTP 取证难题
  • 检测异常 SMTP 流量的重要过滤器

在 20 世纪 60 年代,我们接触到了电子邮件(e-mail ),从那时起,无论是随意地还是专业地在互联网上交换信息已经成为事实上的标准。这种通信中使用的协议是 SMTP、POP3 和 IMAP。从本质上讲,这些协议通过明文传输数据,正如我们在前一章中所看到的那样,这些数据很容易在网络上被截获。

在一个相当简单的场景中,电子邮件通信使用 SMTP (TCP/25)或 submission (TCP/587),也称为 push 协议,来发送电子邮件,并且它们可以使用 POP3 (TCP/110)或 IMAP (TCP/143),也称为 pull 协议,来在 Outlook 等电子邮件客户端上接收电子邮件。我们也可以选择在 TLS 等安全通道上运行这些,例如 SMTP(TCP/465)、pop 3(TCP/995)和 IMAP(TCP/993)。

如今,大多数组织都在其安全设备中集成了反垃圾邮件机制,这往往会提供实时垃圾邮件保护,防止零日威胁和恶意软件、僵尸网络、网络钓鱼等混合攻击。然而,有时这些解决方案可能会错误地将合法电子邮件识别为垃圾邮件(误报)或允许垃圾邮件(误报)。在这种情况下,如果网络上正在进行捕获,Wireshark 可用于探测此类通信。

假设您知道电子邮件通信是如何工作的,我们将从一些有趣的在线挑战开始,并使用 Wireshark 解决它们。

电子邮件取证挑战

在此部分,我们将分析跟踪文件以解决挑战。跟踪文件包含有趣的电子邮件流量,等待分析。让我们开始吧。

挑战 1–正常登录会话

描述:一个用户登录邮件服务器访问他的电子邮件。

注意

本次挑战所需的文件可在http://securityoverride.org/challenges/forensics/3/获得。

目标:从给定的跟踪文件中识别用户名和密码。

分析:本次挑战可用的跟踪文件要点如下:

  • ESMTP(扩展 SMTP) :这可以在这个跟踪文件中看到。ESMTP 通过提供扩展来扩展 SMTP 协议。

  • SMTP-AUTH :这个扩展在这个跟踪中用于认证目的。

  • AUTH LOGIN :这个 trace 的 packet 8 中的这个命令用于对服务器进行认证登录。在AUTH LOGIN命令被发送到服务器后,服务器通过向客户端发送 Base64 编码的文本(问题)来询问用户名和密码。Challenge 1 – Normal login session

    身份验证过程显示凭据编码为 base64

    T9

注意

Base64 是一种编码(不同于加密)方案,旨在通过将二进制数据转换为 radix-64 表示,将二进制数据表示为 ASCII 文本。Base64 很容易被解码,不建议用于机密信息。

Base64 可以在 Wireshark 中对该跟踪进行解码,只需遵循下面截图中提到的步骤:

Challenge 1 – Normal login session

另一种解码 Base64 的方法是使用任何工具,如 Burp Suite(它比简单地解码 Base64 执行更复杂的任务);在线资源可在 https://www.base64decode.org/获得

对于我们当中的编码人员,我们也可以选择用 Python 编写脚本。以下是在 Linux 上编写的用于解码 Base64 的示例 Python 脚本:

#!/usr/bin/python

import sys, base64

try:
    decodedResult = base64.b64decode(sys.argv[1])
    print("Base64 decoded value = " + decodedResult)

except:
    print("Please enter a valid Base64 encoded string, and TRY AGAIN !")

#END

这段代码简单地将 Base64 编码的字符串作为输入,并返回解码后的值,如下所示:

Challenge 1 – Normal login session

最终解决方案如下表所示:

|

项目

|

Base64 编码

|

base64 解码

|
| --- | --- | --- |
| 用户名 | QXVkaQ== | Audi |
| 密码 | MTIzNGFk | 1234ad |

挑战 2——商业间谍

描述:一名间谍设法从一家汽车公司的内部系统中复制一辆汽车的原型图像。她知道电子邮件内容可以被嗅探,因此将图像粘贴到文件中,并将该文件作为附件发送。在这个挑战中,我们提供了一个名为Dhakkan.cap的跟踪文件,其中包含间谍活动进行过程中捕获的数据包。

注意

本次挑战所需的文件可在http://securityoverride.org/challenges/forensics/9/获得。

目标:从附件中分析并提取图像,提交以下细节:

  • 图像的 MD5
  • 会场
  • 日期

分析:在对数据包进行简要概述后,我们了解到跟踪文件包含 SMTP 流量,其中包括许多数据命令。

在这种情况下,一种实用的方法是查看 TCP 会话,并根据字节对会话进行排序。选择最大字节数的对话后,点击跟随流打开该 TCP 流。

Challenge 2 – Corporate espionage

按字节排序的 TCP 会话

在检查了 TCP 流之后,我们推断如下:

  • 电子邮件发送者 : <[Dhakkan@securityoverride.com](mailto:Dhakkan@securityoverride.com)>

  • 电子邮件收件人 : <[hacku@dhakkansecurity.com](mailto:hacku@dhakkansecurity.com)>

  • 主题:秘密概念车照片

  • 内容-传输-编码:引用-可打印

  • 附件名称及格式 : secret.rtf(富文本格式)Challenge 2 – Corporate espionage

    TCP 流

现在,我们可以从收集的信息中看到,电子邮件是以 quotable-printable 格式编码的,附件是 rtf 格式的。

  1. Extract the attachment from the provided trace file. Copy the RTF content from the stream and decode it as per the encoding scheme. Begin copying from the beginning of the RTF file as highlighted in the following screenshot and finish it.Challenge 2 – Corporate espionage

    前面的图像也反映了挑战中要求的地点日期的细节。接得好。

    Tip

    另一种提取电子邮件附件的方法如下:

    使用imf作为显示过滤器,并转到所选 IMF 数据包的数据包详细信息窗格。

    展开互联网消息格式头,跟随展开到媒体类型,右键导出选中的数据包字节,此导出将导致附件文件的提取。

  2. Once the attachment is extracted from the trace file, we will need to decode the RTF content, which was copied from the TCP stream.

    下面是我在 Linux 上写的一个小 Python 脚本,用于解码:

    #!/usr/bin/python
    
    import os, quopri
    
    encodedFile=open('/home/piyush/secret.rtf')
    decodedFile=open('/home/piyush/decoded_secret.rtf', 'wb')
    
    quopri.decode(encodedFile, decodedFile)
    
    #END
    

    不,我们将快速浏览一下代码。该代码首先导入以下两个模块:

    • os读取和写入文件
    • quopri解码引用的可打印编码方案

    然后,encodedFile变量存储由open()函数返回的文件对象。在这种情况下,它打开了我们想要解码的secret.rtf

    下一行代码创建一个名为decodedFile的文件对象,并创建一个新文件decoded_secret.rtf并打开它以二进制模式(wb)写入。

    最后,我们使用quopri模块中可用的quopri.decode()函数读取encodedFile文件对象,即读取secret.rtf文件并解码。解码后的输出写入decodedFile文件对象,即写入decoded_secret.rtf

    注意

    解码引用可打印编码的在线资源如下:

    http://www.motobit.com/util/quoted-printable-decoder.asp

    请随意选择任何资源,只要你能解码它。

  3. 解码后,使用写字板打开decoded_secret.rtf,如下图所示:Challenge 2 – Corporate espionage

    解码的多文本格式文件

在的最后几个步骤中,我们使用 Wireshark 和 Python 脚本从给定的跟踪文件中提取并解码了附件。

现在,为了解决这个问题,我们应该从 RTF 文件中提取出content.jpg文件,并为该图像创建一个 MD5 散列。为了解决这个难题的最后一部分,我们可以将content.jpg拖放到一个文件夹或桌面,然后使用软件创建它的 MD5,作为 HashCalc 或一个 Linux 实用工具, md5sum ,如下所示:

Challenge 2 – Corporate espionage

最终解决方案如下:

  • 图像的 MD5:3796102 e17ff 50382 CB 48160 b76a 3946
  • 集合地点 : 电影公园德国
  • 日期:2011 年 2 月 29 日

分析对电子邮件通信的攻击

电子邮件通信可以被篡改,从重要的邮件帐户发送垃圾邮件和伪造的电子邮件,甚至可以利用最近的 Shellshock 漏洞。

可以使用EXPNVRFYRCPT命令来枚举 SMTP 服务器上的用户。这可以通过简单地通过端口 25 连接到 SMTP 服务器并运行相应的命令来手动实现,如下面的屏幕截图所示,也可以通过工具(如 Nmap 和 Metasploit)自动实现,这将在本节中进一步讨论。

Analyzing attacks on e-mail communications

使用 VRFY 命令手动枚举 SMTP

检测 SMTP 枚举

为了检测任何 SMTP 枚举尝试,我们需要寻找以下迹象:

  • 跟踪文件中有大量的VRFYEXPN命令
  • 包含MAILRCPT命令以及很少或没有DATA命令的数据包
  • 大量数据包包含 SMTP 响应代码550
  • 捆绑RSET个命令中的

在 Metasploit 中使用辅助模块

Metasploit 包含一个名为smtp_enum的辅助模块。该模块使用一个字典来执行用户名枚举,在成功执行该模块后,我们能够通过发送一些RCPT命令来验证它是否工作。

Using auxiliary module in Metasploit

用户枚举来自 Metasploit 的辅助模块

下面是 Metasploit 的辅助模块对用户枚举的过滤流量。

Using auxiliary module in Metasploit

Wireshark 对上述攻击的过滤捕获

显示筛选器以识别 SMTP 枚举:

smtp.req.command == "VRFY" || smtp.req.command == "EXPN" 
smtp.req.command == "RCPT" 
smtp.response.code == 550 
//Indicates Requested action not taken: mailbox unavailable
smtp.req.command == "RSET" 

分析 SMTP 中继攻击

SMTP 中继攻击被攻击者用来发送伪装在真实 SMTP 服务器下的垃圾邮件和恶意软件。流行的工具,比如 Metasploit 和 Nmap,可以用来验证邮件服务器是否允许开放中继,否则也可以手动执行。在以下示例中,Wireshark 用于分析 Nmap 的开放中继攻击企图。

Analyzing SMTP relay attack

SMTP 开放中继攻击正在进行中

显示过滤器以识别 SMTP 中继攻击:

  • smtp.response.code == 554:表示交易失败
  • smtp.response.code == 553:表示接收方无效
  • smtp matches "[a-zA-Z0-9._%+-]+@nmap.scanme.org":执行开放中继测试时,显示与 Nmap 签名匹配的过滤器

Tip

另一个技巧是跟踪通信的 TCP 流,因为当 SMTP 中继攻击正在进行时,它可能会反映一些不寻常的发件人或收件人地址。

重要过滤器

以下过滤器可用于检测电子邮件通信中的任何问题/错误:

smtp.response.code >= 400
pop.response.indicator == "-ERR"

显示用于查找电子邮件凭证的过滤器如下:

pop.request.command == "USER" || pop.request.command == "PASS"
imap.request contains "login"
smtp.req.command == "AUTH"

总结

在本章中,我们使用 Wireshark 解决了 SMTP 取证难题,并学习了如何使用 Wireshark 检测通过流行的安全工具(如 Metasploit 和 Nmap)进行的电子邮件通信攻击。在下一章中,我们将查看恶意跟踪文件,并学习如何在 Wireshark 的帮助下分析它们。

五、检查恶意软件流量

恶意软件是任何具有恶意意图的软件,通常指病毒、蠕虫、特洛伊木马、间谍软件、广告软件、勒索软件等等。这是我们经常听到的(不幸的是)。分析这样一个软件,以了解它的工作方式,它影响的文件,它独特的签名,以及它可能对系统造成的伤害,这就是所谓的恶意软件分析。恶意软件分析是一种不同的球类游戏,它有自己的一套工具,与我们在本课中将深入探讨的工具不同。在本章中,我们将重点介绍以下内容:

  • 使用 Wireshark 和一些常识分析恶意流量
  • 锁定网络上任何恶意软件的重要指针
  • 了解机器人如何通过 IRC 通信
  • 分析恶意 IRC 通信时要注意的细节

您可能会想到的第一个问题是“当我的反病毒和其他带有“闪烁灯”的解决方案完全保护我免受此类异常情况的影响时,我为什么需要检查恶意软件流量?”。好吧,如果你认为你的安全解决方案可以保护你免受任何恶意攻击,那么我建议你走出你一直生活的虚拟世界,在现实中深呼吸。此外,现实表明,没有任何安全解决方案可以为您的系统和网络提供 360 度的保护,因为有些时候这些解决方案可能会被绕过,您需要自己解决问题并深入了解情况,当然需要工具的一些帮助。

这是其中一种情况。当您怀疑您网络上的系统感染了一种全新且未被检测到的恶意软件,并且很有可能它的签名不可用,或者没有使用正在使用的防病毒 ( AV )或入侵检测系统 ( IDS )解决方案进行更新。否则,让我们考虑一下,你的 AV 足够聪明,可以检测并删除它,但几天后,同样的问题又出现了。你是做什么的?你去找谁?这时,您需要浏览网络流量并自己分析恶意软件,以确定根本原因。

IDS 工作的方式之一是基于签名。分析恶意软件流量类似于电影幕后的,因为开发并集成到 IDS 中以检测恶意流量的大多数签名都是基于网络流量分析的结果,定期开发的大量签名足以证明其重要性。在这一章中,我们将强调这一点。

Wireshark 蓄势待发

为了简化对恶意流量的分析,Wireshark 需要做一些调整。简而言之,我们需要在 Wireshark 中创建新的配置文件来检查恶意软件流量。

更新栏目

我们在 Wireshark 中添加了以下栏目:

Updated columns

可以通过进入菜单栏并导航到编辑 | 首选项 | 选择列(在用户界面下)来添加/修改列。

  • SPort—源端口(未解析)
  • d 端口—目的端口(未解析)
  • HTTP 主机—显示过滤器:http.host
  • URI—显示过滤器:http.request.uri

更新了着色规则

对于任何包含异常数量 DNS 答案的数据包,我们用背景色——黑色和前景色——橙色对其进行着色,如下图所示。

Updated coloring rules

数据包细节窗格的标题下可以看到任何数据包隐含的着色规则。

Updated coloring rules

上述数据包隐含的着色规则

重要显示过滤器

也可以保存一些正在使用的常用显示过滤器,如以下过滤器工具栏所示:

Important display filters

只需将滤镜放入可用空间,等到背景变成绿色,点击保存(滤镜工具栏中应用旁边)。以下是使用的显示过滤器:

  • HTTP 请求:http.request
  • 通过 DHCP 的主机:bootp.option.hostname
  • 通过 DNS 的主机:dns.qry.name
  • IRC 的加入命令:irc && tcp matches "(?i) join"
  • IRC 的请求命令:irc.request

注意

该配置文件是一个样本配置文件,仅限于本章的分析需要。请根据您的要求随时更新档案。

恶意流量分析

对网络流量的定期分析有助于检测我们网络上是否存在任何受恶意软件感染的主机。没有一种通用的方法来分析恶意软件流量,因为可能会有各种因素,如通信渠道、不同的攻击签名和使用的有效载荷,以及更多会影响我们采取的方法的因素。我们将通过以下案例研究来了解当前最流行的威胁之一,并分析由此产生的流量。

案例研究——黑洞利用工具包

漏洞利用是一段利用漏洞的代码,而漏洞利用工具包只是一个包含漏洞利用代码和有效载荷的工具集,用于自动化危害系统的过程,并负责漏洞利用后的工作。

据维基百科称,漏洞工具包黑洞是 2012 年最普遍的网络威胁,并在一个地下黑客论坛上发布。

注意

要了解这个漏洞利用工具包的功能,请参考https://naked security . sophos . com/exploring-the-black hole-exploit-kit/

我们现在将获取包含受感染流量的捕获文件,并对其进行分析。在分析过程中,我们会指出重要的线索,引导我们找到感染的根本原因。

注意

这里使用的抓图文件可以从http://www . malware-traffic-analysis . net/2013/07/21/index . html下载。该网站是一个极好的来源,因为它包含一个包含恶意流量的跟踪文件的综合数据库,并由 Brad(一位热情的安全研究员)定期更新。

行动中的协议

要查看运行中的协议,我们可以查看统计信息菜单下的协议层次结构,在我们正在使用的跟踪文件中,我们可以看到 HTTP 和 HTTP2 协议的使用,以及使用 SSL 对传输中的数据进行加密。

Protocols in action

被感染机器的 IP 地址

我们有多种方法可以识别被感染机器的详细信息。检查 TCP 对话端点,甚至在这种情况下检查 HTTP 请求,可以帮助我们缩小到客户端(Infected Box)。

The IP address of the infected box

TCP 对话显示 192.168.204.150 用于所有对话

因为该跟踪包含 HTTP 流量,所以过滤 HTTP 请求是发现发出请求的客户端的一个好选择。

The IP address of the infected box

显示 192.168.204.150 是所有 HTTP 请求的来源

在添加中,如果你已经注意到192.168.204.150是跟踪文件中唯一的私有 IP 地址,我们可以得出以下结论。

被感染机器的 IP 地址 : 192.168.204.150

注意

如果跟踪文件包含任何 DNS 或 DHCP 流量,通过过滤 NBNS/DNS 流量[dns.qry.name]或 DHCP 流量[bootp.option.hostname],甚至可以找到受害者的主机名。

任何不寻常的端口号

如果我们查看 TCP 会话,并根据目的端口对其进行排序,即端口 B ,那么我们可以清楚地看到总共使用了三个端口,即 80、443 和 16471。其中,16471 看起来很奇怪,因为 80 和 443 用于 HTTP 和 HTTPS 通信,这完全证明了前面确定的协议是正确的。

出于好奇,在谷歌上简单搜索一下,就会发现以下关于端口 16471 的信息。

Any unusual port number

不寻常的端口号导致关于零访问僵尸网络的信息

经过进一步研究,我们知道 ZeroAccess 木马是黑洞漏洞利用工具包提供的有效载荷之一。

同样,如果我们搜索与端口 16471 相关联的 IP 地址,我们将在https://www.malwares.com/上找到以下结果:

Any unusual port number

显示 IP 的通信历史:92.55.86.251

注意

在线资源可用于验证是否有任何域/URL 或 IP 地址也被列入黑名单。一些好的资源是:

https://www.malwares.com/

https://www.virustotal.com/

被入侵的网站

在分析了上述细节后,例如,使用 HTTP 进行通信,我们可以得出结论客户端访问了一个恶意网站,这开始了整个灾难。为了确定客户访问的网站或域,我们首先需要检查跟踪文件中存在的所有域,并将这些点连接起来。由于该跟踪文件中没有 DNS 流量,我们可以通过过滤 HTTP 流量来查看域。在这种情况下,以下显示过滤器很有帮助:

http.request
http.host

下面的屏幕截图显示了主机的详细信息:

A compromised website

http.host过滤的主机列下的域列表

在分析了来自每个域的流量后,我们可以得出以下结论:

  1. 客户端访问http://tonerkozpont.hu/,被重定向到raiwinners.org,这里可以看到:A compromised website

    数据包四上的以下传输控制协议(Transmission Control Protocol)流可见的重定向网址

  2. 同样,如果我们跟随重定向请求到包 13,我们注意到在 HTTP 302 响应中通过位置报头到domenicossos.com的另一个重定向。A compromised website通过数据包 13 上的以下传输控制协议(Transmission Control Protocol)流进行的另一次重定向

统计菜单下的流程图中可以看到另一个被感染网站的指示。该图表明客户端最初访问了91.186.20.51,该 IP 地址解析为http://tonerkozpont.hu/

A compromised website

该流程图表明首先访问的是 91.186.20.51

被攻陷的网站:tonerkozpont.com(91.186.20.51)

受感染的文件

在这一部分,我们将从 Wireshark 捕获中提取文件,给文件一个适当的扩展名,并测试它们是否有任何不适当的内容。

从 Wireshark 捕获中提取文件可以手动完成,也可以转到文件 | 导出对象 | HTTP 到从 HTTP 流量中提取文件,因为在这种情况下使用 HTTP 进行通信。

Infected file(s)

此跟踪文件的 HTTP 对象列表

注意

要获得了解如何手动提取文件的链接,您可以参考http://digital-forensics . sans . org/blog/2009/03/10/pulling-binaries-from-pcaps/

提取文件的步骤如下:

  1. 点击保存所有下的 HTTP 对象列表。这将在所选位置保存所有 HTTP 对象。下一步将是识别这些文件的类型/扩展名。
  2. 为了识别提取文件的扩展名,我们需要首先从前面截图中突出显示的列中找出数据包编号,然后导航到数据包列表窗格,右键单击数据包选择跟随 TCP 流

接下来,我们将为提取的文件分配适当的文件扩展名。以下是文件的 TCP 流,突出显示了文件扩展名:

文件 1 是从数据包 163 的 TCP 流中提取的 java-archive 文件,如下图所示:

Infected file(s)

文件 2、3 和 4 是从数据包 665 的 TCP 流中提取的三个可执行文件,它们被提及如下:

Infected file(s)

第一个可执行文件,名为 calc.exe

第二个文件如下:

Infected file(s)

第二个可执行文件,名为 info.exe

第三个文件如下:

Infected file(s)

第三个可执行文件,名为 readme.exe

在成功提取并给文件指定适当的名称和扩展名后,我们得到了以下内容:

Infected file(s)

从跟踪文件中提取的重要文件

现在,分析文件的过程由您决定。在这种情况下,我们的选择是:

  • 该文件可以发送给专家,他们可以对其进行逆向工程,并缩小任何异常,例如对有效载荷的调用
  • 这些文件可以上传到一个检查可疑签名的网站上。

以下是在https://www.virustotal.com/上传readme.exe后的报告样本。

Infected file(s)

49 家反病毒软件供应商中有 36 家检测到此文件是恶意的

结论

在这个案例研究中,我们得出了以下结论:

客户/受害者(192.168.204.150)访问了一个被感染的网站(http://tonerkozpont.hu/),该网站将他进一步重定向到一个在mydb.php页面上托管黑洞利用工具包的网站(domenicossos.com)。可疑的网站随后下载了受害者盒子上的 java 漏洞(JavaArchive.jar),然后发送了三种不同的有效载荷(calc.exeinfo.exereadme.exe)。一旦被感染,会注意到ohtheigh.cc的多个子域有额外的 HTTPS 流量,并且还存在到端口 16471 的流量,这指向 ZeroAccess 特洛伊木马。

IRC 僵尸网络

互联网中继聊天 ( IRC ),是一个用于在互联网上通信的聊天系统,而僵尸网络是一个被入侵机器(bot)的网络,其中由攻击者使用命令和控制 ( C & C )服务器进行远程控制。IRC 是僵尸网络最常用的 C & C 通道。

注意

公司网络上出现 IRC 应该会引起红色警报

简单来说,一旦机器被入侵,它就会被编程为连接到预设的 IRC 通道,并等待服务器的进一步指示。然后,攻击者可以远程控制被入侵的机器人来代表他或她执行操作,在最糟糕的情况下,攻击者可以一起使用多个机器人,对选择的目标执行灾难性的攻击,如分布式拒绝服务 ( DDoS )(在流行的中情局三人组的保护伞下针对信息的可用性的攻击)。

注意

请参考以下内容,以便更好地理解:

IRC 通信:https://tools.ietf.org/html/rfc1459

基于僵尸网络的通信:http://honeynet.org/papers/bots/

检验

为了进行分析,我们将从https://mcfp . felk . cvut . cz/public datasets/CTU-Malware-Capture-Botnet-45/Botnet-Capture-2011 08 15-rbot-dos-icmp . pcap中提取一个跟踪文件。

  1. Since, we expect this to be IRC communication, then using an appropriate display filter can prove handy, And the output is shown here:Inspection

    By default, the frame communicated through port 6667 is decoded as IRC

    Note

    in Wireshark. One indicator in this case is the visibility of common IRC commands, such as USER, NICK, JOIN, MODE and USERHOST. Then, we need to manually set Wireshark to decode IRC and other traffic by selecting under Analysis in the menu bar to decode it into and selecting the appropriate decoding settings.

  2. Filtering on DNS communications show us the packets based on the coloring rule (dns.count.answers>5) defined earlier. It can be seen as follows:Inspection

    在彩色数据包中收到的 DNS 响应突出显示,它们在 DNS 响应中包含五个以上的答案。跟踪文件中的 DNS 答案如下:

    Inspection

  3. 因为 IRC 流量以明文形式通过;因此,对 IRC 流量执行 Follow TCP Stream 是跟踪机器人执行的活动和 IRC 命令的好办法。Inspection

    • NICK:这是用来给用户一个昵称或者改变一个已经存在的昵称
    • USER:这是用来在连接开始的时候指定用户名、主机名、服务器名、 新用户的真实姓名
    • USERHOST:这是一个以昵称为参数并返回昵称信息的命令
    • MODE:该命令用于改变用户名或频道
    • JOIN的模式:该命令用于加入或连接到一个特定的 IRC 频道

深入挖掘 TCP 流,我们得出以下结论:

Inspection

C&C 服务器发出了几个 PRIVMSG 命令来执行 DoS 攻击。

总结

在这一章中,我们学习了如何使用 Wireshark 寻找并整合恶意软件流量分析难题的不同部分,还详细介绍了 IRC 僵尸网络感染的通信。在下一章中,我们将看看如何使用 Wireshark 来满足我们的网络性能需求。

六、网络性能分析

网络正常运行时间和最佳性能是任何技术人员最关心的问题,影响网络正常运行时间和最佳性能的问题可能是众多问题中的一个,完全取决于所讨论网络的规模和复杂性。这些异常包括但不限于以下内容:

  • 慢速互联网
  • 瓶颈
  • 分组丢失和/或重传
  • 过度的带宽消耗
  • 意外的 BitTorrent 流量

深入了解网络协议如何交织和工作对于排除网络性能故障是不可或缺的。例如,如果我们不能有效地理解 TCP 的流程和错误控制机制,那么我们可能无法有效地测试基于 TCP 的性能问题。

很多次,有人问我,“Wireshark 如何解决我的网络问题?”老实说,Wireshark 可能并不总能引导您找到问题的根源,但它绝对可以帮助您检测到问题的位置。缩小问题原因的范围完全取决于分析器的技能。例如,Wireshark 可能会帮助您找到在网络上丢弃数据包的设备,但可能并不总能让您找到其背后的原因。

Wireshark 有助于分析性能问题的一些特性如下:

  • 专家信息窗口
  • 图形
  • 时间变化
  • 着色规则

为故障排除创建自定义配置文件

我们将首先创建一个坚如磐石的配置文件用于故障排除,然后查看可能会阻碍网络性能的不同问题。

到目前为止,我假设您已经习惯了在 Wireshark 中创建配置文件。简介的重点如下:

  1. 取消选中/禁用允许子分配器重组 TCP 流选项。这应该仅在获取 HTTP 或 SMB 对象时启用。

  2. To deal with sequencing issues in TCP, we first need to enable Analyze TCP sequence numbers under Preferences | Protocols | TCP. The following is how my TCP Preferences look like:Creating a custom profile for troubleshooting

    故障排除配置文件:TCP 首选项

    接下来,将序列号、下一个序列号和确认号放入 Wireshark 中的三个不同的列中,以便于分析 TCP 序列,如下一个屏幕截图所示。

  3. "Time" is always a major factor when looking for delays on the network and hence we will begin by tweaking it. First of all, we will change the display format of time by navigating to View | Time Display Format and selecting Seconds since previously displayed packet.

    现在,在已经存在的时间列旁边加入 delta 时间列(tcp.time_delta),如下一个屏幕截图所示。

  4. 包含另一列窗口大小(tcp.window_size),以检查与 TCP 窗口过程相关的任何问题,如下一个屏幕截图所示。

  5. 创建并保存以下显示过滤按钮:

    • HTTP 错误 : http.response.code > 399
    • DNS 错误 : dns.flags.rcode > 0
    • FTP 错误 : ftp.response.code > 399
    • WLAN 重试次数:wlan.fc.retry == 1

    Creating a custom profile for troubleshooting

    故障排除配置文件:列和保存的显示过滤器

前面的配置文件是一个故障排除配置文件示例。因此,请根据您的环境随意添加和/或修改。例如,您可能希望根据基于 Torrent 的流量的签名来更新它。

分析前优化

选择正确的地方开始捕获通常是解决性能挫折的关键。例如,建议将分析仪放在更靠近经常抱怨网络性能差的员工系统的地方,而不是放在任何随机用户的系统中,因为这将使我们更好地了解问题。

注意

如果在服务器上捕获是我们唯一的选择,那么我们需要确保使用一组良好的捕获过滤器来避免任何不必要的流量,或者我们可以选择使用显示过滤器从完整的跟踪文件中提取相关的对话。

例如,如果我们只对进出 IP 地址为10.1.0.20的特定主机的流量感兴趣,那么我们可以使用host 10.1.0.20作为我们的捕获过滤器,或者在捕获完整的流量后,我们可以使用ip.host == 10.1.0.20 作为显示过滤器,并使用导出指定的数据包来提取该对话。

这很重要,并且通过避免不相关的帧节省了大量的分析时间。

另一个建议是,如果需要长时间执行捕获,可以使用命令行工具,比如 tshark 或 tcpdump。

基于 TCP 的问题

专家信息选项卡是一个很好的指示器,可以指示由于 TCP 问题而出现的任何问题;否则,我们还可以使用显示过滤器tcp.analysis.flags来缩小 Wireshark 发现的任何 TCP 问题的范围。下面是一些常见的 TCP 问题及其各自的显示过滤器:

  • 前一段未被捕获(tcp.analysis.lost_segment)
  • 重复确认(tcp.analysis.duplicate_ack)
  • TCP 快速重新传输(tcp.analysis.fast_retransmission)
  • TCP 重新传输(tcp.analysis.retransmission)
  • 无序段(tcp.analysis.out_of_order)
  • 零窗口(tcp.analysis.zero_window)

需要注意的要点是:

  • 每当数据包在网络上丢失时,我们都会注意到网络上的快速重新传输和/或重新传输。一般的经验法则是重复的 ack 会导致快速重传,而发送端过期的请求超时 ( RTOs )会导致重传。TCP-based issues

    专家信息"窗口,在"注释"选项卡下显示快速重新传输和重新传输

  • 当应用在 TCP 上运行时,我们可以通过查看 SYN 和 SYN/ACK 之间的延迟(路径延迟)以及来自服务器的 ACK 和随后的实际数据之间的延迟来检测路径和服务器延迟,例如,服务器延迟的 DNS 响应延迟(如果有)。

  • 每当 Wireshark 检测到 TCP 对话的任何一方将 TCP 窗口大小值(tcp.window_size_value == 0)作为0进行广告时,它会将数据包标记为零窗口。当接收方的接收缓冲区跟不上数据接收速率时,就会产生此情况。这里要注意的一点是,如果数据包的 RST、SYN 或 FIN 位设置为 1,它们将不会被标记为零窗口,如下所示:TCP-based issues

    零窗口示例

案例研究 1——慢速互联网

我们公司的一名员工找到网络支持极客(让我们称他为 Bob ),请求检查互联网是否有问题,因为在过去几天里,他从互联网上收到的应用响应非常慢。经过他那边的一些调查,Bob 发现这是一个普遍存在的问题,许多人在过去两天都注意到了这一点。

由于问题出在互联网上(根据用户的分析和观点),Bob 决定首先将分析器连接到出口节点,即路由器,将网络连接到互联网,并捕获一些流量进行分析。

分析

跟踪文件中的大部分流量都来自特定的主机192.168.10.132,因此 Bob 在ip.host==192.168.10.132上进行过滤,并将这些数据包导出到不同的跟踪文件中进行分析。

对话窗口显示在捕获帧的短时间内有大量 TCP 和 UDP 对话。在 UDP 选项卡下的字节列上排序后;Bob 注意到通信发生在客户端的同一个端口上,即 46816 到不同的 IP 地址。

Analysis

此外,查看 DNS 查询,发现查询是针对不同国家的域进行的,并暗示使用 Vuze(BitTorrent 客户端)是潜在的罪魁祸首:

Analysis

DNS 查询

这两个指标对 Bob 来说都足够强大,他可以亲自去那个系统(192.168.10.132)进行检查。他发现用户正在运行 BitTorrent 客户端,并通过 Torrent 下载内容。一旦下载被停止,Vuze 被从用户的机器上卸载,一切正常,用户获得了最佳的网速。

案例研究 2–缓慢的下载

在这个案例研究中,我们将查看一个跟踪文件,该文件包含一个抱怨下载缓慢的用户的系统中发生的下载帧。

分析

在模拟用户执行的相同下载并在他的系统中捕获流量后,我们得出了一个巨大的跟踪文件,并因此过滤了(使用 tshark )下载所来自的特定 IP 上的流量。

检查延迟时首先要注意的是增量时间,更具体地说,是通过 TCP 下载时的 TCP 增量时间。按照 TCP delta 时间对流量进行排序,我们会看到时间上的显著延迟,如下图所示:

Analysis

高 TCP 增量时间

还可以创建一个图表来指示高 TCP 增量时间,这对于向其他人显示和解释问题是必不可少的。

Analysis

该图可通过执行以下步骤生成:

  1. 进入统计 | IO 图
  2. Y 轴部分,从单元下拉菜单中选择高级
  3. 计算下拉菜单中选择最大值(*) ,并输入 TCP 增量时间所需的过滤器(tcp.time_delta)。
  4. 点击最左侧的图表 2 按钮。

接下来,我们可以查看专家信息窗口,看看 Wireshark 是否在跟踪文件中检测到任何错误。以下是观察结果:

  • 前一段未捕获到 : 1309 帧
  • 重复确认 : 12249 帧
  • TCP 快速重传 : 625 帧
  • TCP 重传 : 1216 帧
  • 无序段 : 1226 帧
  • 零窗口 : 3 帧

为了确定数据包丢失的位置,我们决定分析 TCP 序列号(我们之前添加到配置文件中的三列, SEQ#NEXTSEQ#ACK# ),并得出结论,数据包丢失发生在客户端附近,经过进一步调查,结果是由于中间设备的配置错误。

案例研究 3–拒绝服务

拒绝服务 ( 拒绝服务)是一种攻击,在这种攻击中,授权人员需要访问服务时,被拒绝访问。例如,最近在 HTTP.sys 中发现的影响互联网信息服务器 ( IIS )的漏洞,如果被利用,可能导致拒绝服务条件,从而导致对易受其攻击的 web 服务器的拒绝访问(CVE-2015-1635)。简而言之,这是对信息可用性的攻击。

在过去,许多黑客活动组织或黑客出于政治和其他原因执行了分布式拒绝服务 ( DDoS )来证明一个观点,他们已经成为许多头条新闻,这是不言自明的,而不是我在这里解释。

让我们来看看一个非常标准的 DoS 攻击,并通过 Wireshark 进行分析。

合成洪水

SYN flood 攻击是指攻击者发送大量 SYN 位设置为1的 TCP 帧,表示他/她正在尝试发起连接。然而,当服务器在很短的时间内收到大量这样的请求时,这往往会耗尽其资源;因此,合法用户无法使用该特定服务,从而导致 DoS 情况。

下面是一个跟踪,显示使用hping3实用工具对 web 服务器进行的 SYN flood 攻击。

SYN flood

正在进行 SYN flood 攻击

注意

检查 SYN flood 攻击的一个有用的显示过滤器是:

tcp.flags.syn==1 && tcp.flags.ack==0

总结

在本章中,我们了解了如何创建相关的故障排除配置文件,并学习了如何使用 TCP 增量时间对任何时间延迟进行排序,以及如何使用 IO 图来更好地表示性能问题。故障排除的关键仍然是对协议的深入理解,因为工具只能帮助我们解决问题,但我们的工作是找出问题所在。

posted @ 2025-06-19 16:04  绝不原创的飞龙  阅读(14)  评论(0)    收藏  举报