如何在网络安全中使用 Wireshark 识别可疑网络活动

WiresharkAdvanced
立即练习

介绍

在网络安全领域,理解并识别可疑的网络活动对于维护安全且有弹性的网络基础设施至关重要。本教程将指导你使用 Wireshark,一个强大的网络协议分析器,来检测和分析网络环境中潜在的威胁。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 高级 级别的实验,完成率为 15%。获得了学习者 100% 的好评率。

安装和设置 Wireshark

什么是 Wireshark?

Wireshark 是一个强大的开源网络协议分析器,它允许你实时捕获和检查网络上往返的数据。安全专业人员使用它来:

  • 监控网络流量
  • 排除网络问题
  • 检测可疑活动
  • 分析协议细节
  • 识别潜在的安全威胁

安装 Wireshark

让我们从在你的 Ubuntu 系统上安装 Wireshark 开始。打开一个终端并执行以下命令:

sudo apt update
sudo apt install -y wireshark

在安装过程中,你将被问到非超级用户是否应该能够捕获数据包。在这个实验环境中,为了方便起见,选择“Yes”。

安装可能需要几分钟。完成后,你应该看到输出,表明 Wireshark 已成功安装。

设置用户权限

为了在不以 root 身份运行 Wireshark 的情况下捕获数据包,我们需要将你的用户添加到 wireshark 组:

sudo usermod -a -G wireshark $USER

为了使更改生效,我们需要注销并重新登录,但对于这个实验,我们可以使用以下命令立即应用更改:

newgrp wireshark

验证安装

让我们验证 Wireshark 是否已正确安装:

wireshark --version

你应该看到类似如下的输出:

Wireshark 3.6.2 (Git v3.6.2 packaged as 3.6.2-2)

Copyright 1998-2022 Gerald Combs <gerald@wireshark.org> and contributors.
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with Qt 5.15.3, with libpcap, with POSIX capabilities
(Linux), with libnl 3, with Lua 5.2.4, with GLib 2.72.1, with zlib 1.2.11,
with Snappy, with libpcap 1.10.1, with GNUTLS 3.7.3, with Gcrypt 1.9.4.

启动 Wireshark

现在让我们使用图形界面启动 Wireshark:

wireshark &

Wireshark 应用程序将在一个新窗口中打开。你将看到主界面,其中列出了可用于数据包捕获的网络接口。

花点时间熟悉一下 Wireshark 用户界面:

  1. 顶部部分显示可用的网络接口
  2. 中间部分(目前为空)将显示捕获的数据包
  3. 顶部的过滤器栏允许你过滤显示的数据包
  4. 各种菜单和工具栏提供附加功能

在下一步中,我们将学习如何使用 Wireshark 捕获网络流量。

使用 Wireshark 捕获网络流量

理解网络接口

在捕获网络流量之前,我们需要了解要监视哪个网络接口。在一个典型的系统中,你可能拥有几个接口:

  • eth0ens33:以太网(有线)连接
  • wlan0:Wi-Fi 连接
  • lo:环回接口(本地流量)

让我们检查系统上可用的网络接口:

ip a

此命令将显示所有网络接口。查找类似 eth0ens33 或其他网络接口的接口(确切的名称取决于你的系统配置)。

生成测试网络流量

为了确保我们有一些网络流量可以分析,让我们通过发出一些 Web 请求来生成一些基本的 HTTP 流量:

## 创建一个目录来保存我们的捕获
mkdir -p ~/wireshark_lab

## 生成一些 HTTP 流量
curl -s http://example.com > /dev/null
curl -s http://google.com > /dev/null

在 Wireshark 中捕获流量

现在,让我们使用 Wireshark 捕获一些网络流量:

  1. 如果 Wireshark 尚未运行,请启动它:
wireshark &
  1. 在 Wireshark 主窗口中,找到你的主要网络接口(可能是 eth0ens33 - 使用你之前使用 ip a 命令标识的接口)。

  2. 双击网络接口开始捕获数据包。

  3. 你将看到数据包开始出现在主窗口中,因为它们被捕获:

    • 顶部窗格显示数据包列表
    • 中间窗格显示所选数据包的详细信息
    • 底部窗格以十六进制和 ASCII 格式显示所选数据包的原始数据
  4. 让我们在 Wireshark 捕获时生成更多网络流量:

## 打开一个新的终端窗口并执行:
ping -c 5 google.com
  1. 返回 Wireshark,你应该看到 ICMP ping 数据包出现在捕获中。

  2. 要停止捕获,请单击工具栏中的红色正方形按钮,或转到 Capture > Stop

保存捕获的流量

现在我们已经捕获了一些网络流量,让我们保存它以供进一步分析:

  1. 在 Wireshark 中,转到 File > Save 或按 Ctrl+S

  2. 导航到我们之前创建的 ~/wireshark_lab 目录。

  3. 将你的文件命名为 basic_capture.pcapng 并单击 Save

## 验证捕获文件是否已保存
ls -la ~/wireshark_lab/

你应该在输出中看到你的 basic_capture.pcapng 文件。

打开已保存的捕获

让我们练习打开我们保存的捕获文件:

  1. 在 Wireshark 中,转到 File > Open 或按 Ctrl+O

  2. 导航到 ~/wireshark_lab/basic_capture.pcapng 并打开它。

捕获的数据包现在应该显示在 Wireshark 中,准备好进行分析。

在下一步中,我们将学习如何过滤和分析此捕获的流量,以识别特定类型的网络活动。

使用基本过滤器分析网络流量

理解 Wireshark 显示过滤器

Wireshark 显示过滤器允许你仅查看符合特定条件的数据包。这在分析大型数据包捕获以查找相关信息时至关重要。

Wireshark 显示过滤器的基本语法是:

protocol.field == value

例如:

  • ip.addr == 192.168.1.1 - 显示具有此 IP 地址的数据包
  • tcp.port == 80 - 显示具有 TCP 端口 80 的数据包
  • http - 显示所有 HTTP 数据包

应用基本显示过滤器

让我们练习将一些基本过滤器应用于我们捕获的流量:

  1. 确保 Wireshark 已打开,并加载了我们之前保存的捕获文件。如果不是,请打开它:
wireshark ~/wireshark_lab/basic_capture.pcapng &
  1. 找到数据包列表顶部的过滤器栏(当为空时,它显示“Apply a display filter...”)。

  2. 让我们过滤 DNS 流量。在过滤器栏中键入以下内容:

dns
  1. 按 Enter 键或单击蓝色箭头按钮以应用过滤器。

现在你应该只在显示中看到 DNS 数据包。这些是域名解析请求和响应。

  1. 现在让我们尝试过滤 HTTP 流量:
http

应用过滤器并观察 HTTP 数据包。

  1. 让我们过滤特定的 IP 地址。首先,通过查看源或目标列来识别捕获中的 IP 地址。然后应用如下过滤器:
ip.addr == [replace_with_an_ip_from_your_capture]

例如:ip.addr == 93.184.216.34(如果你看到到 example.com 的流量)

组合过滤器

你可以使用逻辑运算符组合过滤器:

  • &&and 用于 AND 运算
  • ||or 用于 OR 运算
  • !not 用于 NOT 运算

让我们尝试一个组合过滤器:

http && ip.addr == [replace_with_an_ip_from_your_capture]

这将仅显示到/来自指定 IP 地址的 HTTP 流量。

为 TCP 流量创建简单过滤器

让我们为 TCP 流量创建并保存一个过滤器:

  1. 在过滤器栏中,键入:
tcp
  1. 应用过滤器。你应该只看到 TCP 数据包。

  2. 让我们保存此过滤器以供将来使用。单击过滤器栏右侧的“+”按钮。

  3. 在出现的对话框中,输入:

    • 过滤器名称:TCP Traffic
    • 过滤器字符串:tcp
  4. 单击“Save”以保存此过滤器。

分析协议层次结构

Wireshark 提供了捕获中协议的有用可视化:

  1. 转到 Statistics > Protocol Hierarchy

  2. 这显示了按百分比和数据包计数分解的协议。

  3. 审查完毕后关闭此窗口。

保存过滤后的结果

让我们保存我们捕获的过滤视图:

  1. 应用你选择的过滤器(例如,httpdns)。

  2. 转到 File > Export Specified Packets

  3. 确保在“Packet Range”部分中选择了“Displayed”。

  4. 导航到 ~/wireshark_lab/ 并另存为 filtered_capture.pcapng

  5. 验证文件是否已保存:

ls -la ~/wireshark_lab/

你应该同时看到你的原始捕获文件和过滤后的捕获文件。

在下一步中,我们将使用这些过滤技术来识别可疑的网络活动。

识别可疑的网络活动

可疑网络活动常见指标

在出于安全目的分析网络流量时,某些模式和行为可能表明存在可疑或恶意活动:

  1. 不寻常的端口使用:在不常见的端口或众所周知的恶意软件端口上的流量
  2. 过多的 DNS 查询:可能表明 DNS 隧道或数据泄露
  3. 未加密的凭据:以明文形式发送的密码
  4. 端口扫描:多次尝试连接到不同的端口
  5. 不寻常的数据模式:Base64 编码的有效负载或未按预期加密的流量
  6. 尝试连接到已知的恶意 IP:到/来自黑名单地址的流量

模拟可疑活动

为了学习的目的,让我们模拟一些可以使用 Wireshark 检测到的可疑网络活动:

## 创建一个目录用于我们的安全分析
mkdir -p ~/wireshark_lab/security_analysis

## 模拟端口扫描(仅限于几个端口以进行演示)
nmap -p 80,443,22,21,25 scanme.nmap.org > ~/wireshark_lab/security_analysis/scan_results.txt 2>&1

注意:上面的 nmap 命令对 scanme.nmap.org 服务器的常见端口执行扫描,该服务器专门用于测试 nmap。

捕获和分析可疑流量

  1. 在你的主网络接口上启动一个新的 Wireshark 捕获:
wireshark &
  1. 在 Wireshark 中,双击你的主网络接口以开始捕获。

  2. 在单独的终端中,运行模拟命令:

## 在捕获时模拟另一个端口扫描
nmap -p 80,443,22,21,25 scanme.nmap.org > /dev/null 2>&1
  1. 命令完成后,通过单击红色正方形按钮停止 Wireshark 捕获。

  2. 将此捕获保存为 suspicious_traffic.pcapng,位于 ~/wireshark_lab/security_analysis/ 目录中。

检测端口扫描

端口扫描是攻击者用来发现系统上运行的服务的一种常见侦察技术。让我们在我们的捕获中识别端口扫描活动:

  1. 应用一个过滤器以查看到不同端口的连接尝试:
tcp.flags.syn == 1 && tcp.flags.ack == 0

此过滤器显示 TCP SYN 数据包,这些数据包用于启动连接。大量这些数据包到同一主机上的不同端口表明存在端口扫描。

  1. 为了专注于与我们的 nmap 扫描相关的流量,你可以添加一个针对目标域的过滤器:
tcp.flags.syn == 1 && tcp.flags.ack == 0 && ip.addr contains scanme.nmap.org

创建安全分析报告

让我们在简单的安全分析报告中记录我们的发现:

## 创建一个报告文件
nano ~/wireshark_lab/security_analysis/security_report.txt

将以下内容添加到文件中:

安全分析报告
=======================

日期:[当前日期]

发现:
1.  检测到端口扫描活动
    - 来源:[你的 IP 地址]
    - 目标:scanme.nmap.org
    - 目标端口:80,443,22,21,25
    - 证据:TCP SYN 数据包到多个端口

2.  分析方法:
    - 使用 Wireshark 捕获网络流量
    - 应用过滤器:tcp.flags.syn == 1 && tcp.flags.ack == 0
    - 识别系统连接尝试的模式

3.  建议措施:
    - 监视未经授权的扫描活动
    - 实施防火墙规则以限制出站扫描
    - 考虑实施网络入侵检测系统

Ctrl+O,然后按 Enter 保存文件,并使用 Ctrl+X 退出 nano。

创建用于可疑活动的自定义过滤器

让我们创建一个自定义过滤器来检测潜在的安全问题:

  1. 在 Wireshark 中,键入以下过滤器:
(tcp.flags.syn == 1 && tcp.flags.ack == 0) || (dns.qry.type == 1 && dns.qry.name contains "suspicious") || (http.request && ip.addr == 192.168.0.1)

此复杂过滤器查找:

  • 端口扫描活动(没有 ACK 的 SYN 数据包)
  • 对包含“suspicious”的域的 DNS 查询
  • 到/来自 IP 192.168.0.1 的 HTTP 请求
  1. 保存此过滤器:

    • 单击过滤器栏右端的“+”按钮
    • 名称:Security Monitoring
    • 过滤器字符串:(粘贴上面的过滤器)
    • 单击“Save”
  2. 导出此过滤器配置以供将来使用:

## 首先,打开你的 Wireshark 配置文件目录以找到已保存的过滤器
ls -la ~/.config/wireshark/

总结你的安全分析

让我们验证我们的安全分析工件:

## 列出我们创建的所有文件
ls -la ~/wireshark_lab/security_analysis/

你应该看到:

  • scan_results.txt - 我们的 nmap 扫描的输出
  • suspicious_traffic.pcapng - Wireshark 捕获的可疑活动
  • security_report.txt - 我们的分析报告

这些文件代表一个基本的网络安全分析工作流程:

  1. 捕获可疑流量
  2. 使用适当的过滤器分析流量
  3. 记录发现和建议

在真实的安全环境中,你将继续完善你的检测技术,创建更复杂的过滤器,并将 Wireshark 分析与其他安全工具集成,以进行全面的威胁检测和响应。

总结

在这个实验中,你获得了使用 Wireshark 的实践经验,Wireshark 是一款在网络安全领域广泛使用的强大网络协议分析器。你已经学会了如何:

  1. 在 Ubuntu 上安装和设置 Wireshark
  2. 从各种接口捕获网络流量
  3. 应用过滤器来分析特定类型的网络流量
  4. 识别潜在的可疑活动,如端口扫描
  5. 在安全分析报告中记录你的发现

这些技能构成了用于网络安全目的的网络流量分析的基础。通过了解如何有效地使用 Wireshark,你可以监视网络流量,检测异常情况,并在潜在的安全威胁造成重大损害之前识别它们。

在你继续你的网络安全之旅时,你可以通过学习更高级的过滤技术,开发自定义检测规则,并将 Wireshark 与其他安全工具集成,来构建这些基础知识,从而创建全面的网络监控解决方案。