探索 Nmap 网络扫描的详细程度级别

NmapNmapBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本次实验中,你将学习如何在不同详细程度级别下使用强大的网络扫描工具 Nmap。Nmap 是安全专家用于发现计算机网络中的主机和服务的首选工具。掌握 Nmap 的详细程度选项可以让你控制扫描过程中显示的信息,这对于高效的网络分析和故障排除至关重要。

在整个实验过程中,你将设置一个本地服务器用于扫描练习。你还将探索不同的详细程度级别如何影响扫描结果和显示的信息。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/basic_syntax("Basic Command Syntax") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") subgraph Lab Skills nmap/installation -.-> lab-415939{{"探索 Nmap 网络扫描的详细程度级别"}} nmap/basic_syntax -.-> lab-415939{{"探索 Nmap 网络扫描的详细程度级别"}} nmap/save_output -.-> lab-415939{{"探索 Nmap 网络扫描的详细程度级别"}} nmap/port_scanning -.-> lab-415939{{"探索 Nmap 网络扫描的详细程度级别"}} nmap/verbosity -.-> lab-415939{{"探索 Nmap 网络扫描的详细程度级别"}} end

为网络扫描设置环境

在本次实验的第一步,我们将在你的机器上设置一个本地 Web 服务器。这个服务器将作为我们使用 Nmap 进行扫描的目标。Nmap 是一款强大的网络扫描工具,在网络安全领域用于发现计算机网络中的主机和服务。通过搭建本地服务器,你可以安全地练习使用 Nmap,而不会对真实网络造成影响。

了解 HTTP 服务器

在创建服务器之前,让我们先了解一下什么是 HTTP 服务器。HTTP 代表超文本传输协议(HyperText Transfer Protocol)。它是你的 Web 浏览器用于与网站进行通信的协议。HTTP 服务器是一种能够理解 URL(网页地址)和 HTTP 协议的软件应用程序。当你在浏览器中输入一个网页地址时,浏览器会向相应的 HTTP 服务器发送一个 HTTP 请求,然后服务器会返回你所请求的网页。在本次实验中,我们将使用 Python(一种流行且易于学习的编程语言)来创建一个简单的 HTTP 服务器。

创建 HTTP 服务器

首先,你需要确保自己处于正确的工作目录中。工作目录就像是一个文件夹,你的命令将在其中执行。在这种情况下,我们希望进入 /home/labex/project 目录。要导航到这个目录,请使用以下命令:

cd /home/labex/project

现在我们已经处于正确的位置,接下来将使用 Python 内置的 HTTP 服务器模块来创建一个简单的 Web 服务器。我们将设置这个服务器监听 8080 端口。端口就像是计算机上的一扇门,网络流量可以通过它进出。不同的服务使用不同的端口。请输入以下命令:

python -m http.server --bind localhost 8080 &

让我们来分析一下这个命令的作用:

  • python -m http.server:这部分启动 Python 内置的 HTTP 服务器模块。它告诉 Python 运行 HTTP 服务器功能。
  • 8080:这指定了服务器应该监听 8080 端口。这意味着任何发往该端口的 HTTP 请求都将由我们的服务器处理。
  • &:在命令末尾加上一个与符号(&)可以让服务器在后台运行。这很有用,因为这样你就可以在服务器运行的同时继续使用终端执行其他命令。

运行该命令后,你应该会看到类似以下的输出:

Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

这个输出表明你的 HTTP 服务器现在已经启动并正在监听 8080 端口,准备接受连接。有了这个运行中的服务器,我们在接下来的步骤中就有了一个可以使用 Nmap 进行扫描的目标。

验证 HTTP 服务器是否正在运行

确认服务器是否正常运行非常重要。为此,我们可以使用以下命令:

ss -tulwn | grep 8080

ss 命令用于显示套接字统计信息。选项 -tulwn 告诉 ss 显示 TCP、UDP、监听和数字套接字信息。| 是管道符号,它将 ss 命令的输出传递给 grep 命令。grep 命令会在输出中搜索字符串 8080。如果服务器正在运行,这个命令应该会显示表明有程序正在监听 8080 端口的输出,这就确认了你的 HTTP 服务器已经启动并可以进行 Nmap 扫描。

了解 Nmap 基础和默认详细程度

现在我们的目标服务器已经启动并运行,是时候开始探索 Nmap 及其详细程度级别了。Nmap 是网络映射器(Network Mapper)的缩写,是一款强大的安全扫描工具。它的主要用途是帮助你发现计算机网络中的主机和服务。这在网络安全领域至关重要,因为它能让你了解网络布局并识别潜在的安全风险。

什么是 Nmap 详细程度?

在 Nmap 中,详细程度决定了扫描过程中显示的信息量。根据你希望扫描结果达到的详细程度,你可以选择不同的详细程度级别。以下是常见详细程度级别的分类:

  • 级别 0:这是默认级别。它提供标准输出,给出关于扫描的基本信息。
  • 级别 1:使用 -v 选项,你可以在扫描输出中获得更多详细信息。
  • 级别 2:使用 -vv 选项将为你提供更详细的信息。

执行默认详细程度(级别 0)扫描

让我们首先使用 Nmap 的默认详细程度级别进行第一次扫描。这将让我们初步了解在不增加额外详细程度的情况下能获得何种信息。

nmap -p 8080 localhost > /home/labex/project/verbosity-0.txt

让我们来分析一下这个命令:

  • nmap:这是调用 Nmap 扫描工具的命令。它告知系统使用 Nmap 进行网络扫描。
  • -p 8080:此选项告诉 Nmap 仅对 8080 端口进行扫描。端口就像计算机上的门,不同的服务使用不同的端口。通过指定 8080 端口,我们只关注在该特定端口上运行的服务。
  • localhost:这表明我们正在扫描本地机器。换句话说,我们正在检查运行 Nmap 命令的同一台计算机上运行的服务。
  • > /home/labex/project/verbosity-0.txt:命令的这部分将扫描输出重定向到位于 /home/labex/project 目录下名为 verbosity-0.txt 的文件中。将输出保存到文件中,方便我们后续查看。

现在,让我们查看扫描结果:

cat /home/labex/project/verbosity-0.txt

运行此命令后,你应该会看到类似于以下的输出:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-10 15:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

让我们来理解一下这个输出的含义:

  • 扫描开始时间:第一行告诉我们 Nmap 扫描的确切开始时间。这有助于跟踪信息的收集时间。
  • 扫描目标:它显示我们正在扫描 localhost,其 IP 地址为 127.0.0.1
  • 主机状态:它表明主机处于活动状态且响应迅速,延迟仅为 0.000097 秒。
  • 端口状态:它告诉我们 8080 端口处于 open 状态,这意味着有服务正在该端口上监听。
  • 运行的服务:它表明在 8080 端口上运行的可能是 http-proxy 服务。
  • 扫描完成统计信息:最后一行提供了扫描所用的时间信息,在这种情况下是 0.05 秒。

默认级别提供了基本信息,但缺乏详细的洞察。在接下来的步骤中,我们将探索更高的详细程度级别如何为我们提供关于扫描的更深入信息。

使用 -v 选项提高详细程度

在网络扫描领域,获取详细信息至关重要。在这一步中,我们将学习如何通过提高 Nmap 的详细程度级别来获取更深入的细节。Nmap 中的详细程度是指扫描过程中它所显示的信息量。-v 选项将详细程度级别设置为 1,能为我们提供对网络分析极为有用的额外信息。

以提高的详细程度运行扫描

让我们首先以提高的详细程度运行一次扫描。我们将使用以下命令:

nmap -p 8080 localhost -v > /home/labex/project/verbosity-1.txt

让我们来分析一下这个命令:

  • nmap 是调用 Nmap 扫描工具的命令。Nmap 是一款功能强大且广泛使用的网络探测和安全审计工具。
  • -p 8080 告诉 Nmap 仅扫描 8080 端口。端口就像网络中的门,通过指定端口,我们将扫描重点放在可能在该端口上运行的特定服务上。
  • localhost 表明我们的扫描目标是本地机器。这对于测试和了解 Nmap 在你自己系统上的工作方式很有用。
  • -v 将详细程度级别提高到 1。这意味着 Nmap 将显示更多关于扫描过程的信息。
  • > /home/labex/project/verbosity-1.txt 将扫描输出重定向到 /home/labex/project 目录下名为 verbosity-1.txt 的文件中。将输出保存到文件中,方便我们后续查看。

现在,让我们看看扫描结果:

cat /home/labex/project/verbosity-1.txt

当你运行此命令时,你应该会看到更详细的输出,类似于以下内容:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-10 15:35 UTC
Initiating Ping Scan at 15:35
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 15:35, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 15:35
Scanning localhost (127.0.0.1) [1 port]
Discovered open port 8080/tcp on 127.0.0.1
Completed Connect Scan at 15:35, 0.00s elapsed (1 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000089s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds

理解额外信息

详细程度级别为 1 时,输出提供了大量额外细节。以下是你可以看到的内容:

  1. 扫描过程被分解为多个阶段。例如,有 Ping 扫描和 Connect 扫描。Ping 扫描用于检查主机是否可达,而 Connect 扫描则尝试与特定端口建立连接。
  2. 提供了每个阶段的时间信息。这有助于你了解扫描的每个部分花费了多长时间。
  3. 你可以看到发现开放端口的确切时刻。这很重要,因为它为你提供了扫描的清晰时间线。
  4. 还显示了 Nmap 在扫描过程中使用的数据文件。这些文件包含有关服务、端口和其他与网络相关的数据,Nmap 使用这些数据来执行扫描。

这些额外信息非常有用,因为它使你能够:

  • 了解 Nmap 如何执行扫描。通过查看不同的阶段及其发生顺序,你可以更好地掌握扫描过程。
  • 了解扫描期间事件的确切时间线。这对于故障排除或了解网络行为很有用。
  • 确定何时发现特定的端口和服务。这对于安全评估和网络管理至关重要。

比较详细程度级别

为了更清楚地看到正常扫描和提高详细程度扫描之间的差异,我们将比较这两个输出文件。使用以下命令:

diff /home/labex/project/verbosity-0.txt /home/labex/project/verbosity-1.txt

diff 命令用于比较两个文件的内容并显示它们之间的差异。此命令的输出将展示提高详细程度级别如何为扫描过程提供更多洞察。当你进行网络故障排除或进行详细的安全评估时,这些额外信息尤其有用。

更高的详细程度级别

Nmap 的详细程度不止于级别 1。它还支持更高的详细程度级别:

  • -vv 将详细程度级别设置为 2。
  • -vvv 将详细程度级别设置为 3。

随着你提高详细程度级别,Nmap 将提供关于扫描过程越来越详细的信息。当你需要深入了解网络并了解扫描的各个方面时,这会非常有用。

探索更高详细程度级别及其实际应用

在这一步中,我们将更深入地探究 Nmap 的功能。首先,我们会使用更高的详细程度级别,这将在扫描过程中为我们提供更详细的信息。然后,我们将了解不同详细程度设置的实际应用,这样你就会知道在现实场景中何时使用每个级别。

以最高详细程度运行扫描

让我们执行一次详细程度级别为 2 的扫描。在 Nmap 中,我们可以使用 -vv 选项来设置详细程度级别。详细程度级别 2 将提供大量关于扫描的详细信息。以下是运行扫描的命令:

nmap -p 8080 localhost -vv > /home/labex/project/verbosity-2.txt

在这个命令中,-p 8080 告诉 Nmap 扫描 8080 端口。localhost 是我们要扫描的目标,指的是本地机器。-vv 选项将详细程度提高到级别 2。> 符号将扫描输出重定向到文件 /home/labex/project/verbosity-2.txt 中。

现在,让我们查看扫描结果。我们可以使用 cat 命令来显示文件内容:

cat /home/labex/project/verbosity-2.txt

当你查看输出时,会注意到它包含了关于扫描过程更多的技术细节。这些细节包括:

  • 更深入的时间信息:这有助于你了解扫描的不同部分花费了多长时间。
  • 额外的调试信息:如果扫描过程中出现问题,这些信息会很有用。
  • 更详细的协议信息:这能让你更好地理解扫描中涉及的网络协议。

不同详细程度级别的实际应用

不同的详细程度级别在不同的场景中很有用。让我们来看看每个级别及其实际应用:

  1. 默认级别(0)

    • 默认详细程度级别最适合快速扫描。当你只需要关于目标的基本信息,比如特定端口是开放还是关闭时,这个级别就足够了。
    • 它也适用于常规检查和简单的网络映射。例如,如果你想快速检查服务器端口的基本状态,可以使用默认级别。
    • 一个使用场景示例是检查服务器上特定端口是否开放。你可以快速获得概览,而不会陷入过多细节。
  2. 详细程度级别 1(-v)

    • 这个级别适用于更详细的分析。它比默认级别提供更多信息,有助于你更好地理解扫描时间线。
    • 如果你正在排查连接问题,这个级别提供的额外信息会非常有帮助。你可以看到扫描的哪些部分花费时间更长,或者是否有任何错误。
    • 一个使用场景示例是排查连接问题。你可以利用额外的细节来找出可能导致问题的原因。
  3. 更高详细程度级别(-vv, -vvv)

    • 这些级别非常适合深入分析和调试。它们提供了最多的信息,对于安全审计非常有用。
    • 当你进行详细的安全评估,或者需要确切了解扫描如何与目标交互时,更高的详细程度级别是首选。
    • 一个使用场景示例是进行详细的安全评估,或者当你需要确切了解扫描如何与目标交互时。你可以全面了解扫描过程。

将详细程度与其他 Nmap 选项结合使用

详细程度选项可以与其他 Nmap 选项结合使用,以执行更强大的扫描。让我们使用以下命令尝试一次更高级的扫描:

nmap -p 8080 -sV localhost -v > /home/labex/project/advanced-scan.txt

让我们来分析一下这个命令:

  • -p 8080 指定我们要扫描 8080 端口。
  • -sV 启用版本检测。这个选项会尝试确定在扫描端口上运行的服务的版本。
  • -v 将详细程度提高到级别 1,这样我们将获得关于扫描过程更详细的信息。
  • > 符号将扫描输出重定向到文件 /home/labex/project/advanced-scan.txt 中。

现在,让我们查看扫描结果:

cat /home/labex/project/advanced-scan.txt

你会注意到,添加 -sV 选项提供了关于在 8080 端口上运行的服务版本的信息。同时,-v 选项确保你获得关于扫描过程的详细信息,使分析结果更加容易。

清理工作

在完成这个实验之前,我们需要正确关闭之前创建的 HTTP 服务器。我们可以使用以下命令来完成:

pkill -f "python -m http.server"

这个命令会终止在 8080 端口上运行的 Python HTTP 服务器进程。正确清理以避免未来出现任何冲突或资源使用问题是很重要的。

总结

在这个实验中,你学习了如何有效利用 Nmap 的详细程度级别来控制网络扫描期间显示的信息。从基本的本地 HTTP 服务器设置开始,你探索了不同的详细程度级别如何影响 Nmap 扫描的输出。

你发现默认详细程度级别(0)会提供有关开放端口和服务的基本信息。使用 -v 选项可以提高详细程度,让你对扫描过程有更多了解。像 -vv-vvv 这样的更高级别则会提供详细的技术信息,便于进行深入分析。详细程度选项还可以与其他 Nmap 技术结合使用,以进行更强大的网络分析。这些技能对于网络管理员和安全专业人员至关重要,能使他们高效地收集网络数据,并根据特定任务定制扫描。