简介
在本次实验中,你将学习如何在不同详细程度级别下使用强大的网络扫描工具 Nmap。Nmap 是安全专家用于发现计算机网络中的主机和服务的首选工具。掌握 Nmap 的详细程度选项可以让你控制扫描过程中显示的信息,这对于高效的网络分析和故障排除至关重要。
在整个实验过程中,你将设置一个本地服务器用于扫描练习。你还将探索不同的详细程度级别如何影响扫描结果和显示的信息。
在本次实验中,你将学习如何在不同详细程度级别下使用强大的网络扫描工具 Nmap。Nmap 是安全专家用于发现计算机网络中的主机和服务的首选工具。掌握 Nmap 的详细程度选项可以让你控制扫描过程中显示的信息,这对于高效的网络分析和故障排除至关重要。
在整个实验过程中,你将设置一个本地服务器用于扫描练习。你还将探索不同的详细程度级别如何影响扫描结果和显示的信息。
在本次实验的第一步,我们将在你的机器上设置一个本地 Web 服务器。这个服务器将作为我们使用 Nmap 进行扫描的目标。Nmap 是一款强大的网络扫描工具,在网络安全领域用于发现计算机网络中的主机和服务。通过搭建本地服务器,你可以安全地练习使用 Nmap,而不会对真实网络造成影响。
在创建服务器之前,让我们先了解一下什么是 HTTP 服务器。HTTP 代表超文本传输协议(HyperText Transfer Protocol)。它是你的 Web 浏览器用于与网站进行通信的协议。HTTP 服务器是一种能够理解 URL(网页地址)和 HTTP 协议的软件应用程序。当你在浏览器中输入一个网页地址时,浏览器会向相应的 HTTP 服务器发送一个 HTTP 请求,然后服务器会返回你所请求的网页。在本次实验中,我们将使用 Python(一种流行且易于学习的编程语言)来创建一个简单的 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 进行扫描的目标。
确认服务器是否正常运行非常重要。为此,我们可以使用以下命令:
ss -tulwn | grep 8080
ss
命令用于显示套接字统计信息。选项 -tulwn
告诉 ss
显示 TCP、UDP、监听和数字套接字信息。|
是管道符号,它将 ss
命令的输出传递给 grep
命令。grep
命令会在输出中搜索字符串 8080
。如果服务器正在运行,这个命令应该会显示表明有程序正在监听 8080 端口的输出,这就确认了你的 HTTP 服务器已经启动并可以进行 Nmap 扫描。
现在我们的目标服务器已经启动并运行,是时候开始探索 Nmap 及其详细程度级别了。Nmap 是网络映射器(Network Mapper)的缩写,是一款强大的安全扫描工具。它的主要用途是帮助你发现计算机网络中的主机和服务。这在网络安全领域至关重要,因为它能让你了解网络布局并识别潜在的安全风险。
在 Nmap 中,详细程度决定了扫描过程中显示的信息量。根据你希望扫描结果达到的详细程度,你可以选择不同的详细程度级别。以下是常见详细程度级别的分类:
-v
选项,你可以在扫描输出中获得更多详细信息。-vv
选项将为你提供更详细的信息。让我们首先使用 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
让我们来理解一下这个输出的含义:
localhost
,其 IP 地址为 127.0.0.1
。0.000097
秒。open
状态,这意味着有服务正在该端口上监听。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 时,输出提供了大量额外细节。以下是你可以看到的内容:
这些额外信息非常有用,因为它使你能够:
为了更清楚地看到正常扫描和提高详细程度扫描之间的差异,我们将比较这两个输出文件。使用以下命令:
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
当你查看输出时,会注意到它包含了关于扫描过程更多的技术细节。这些细节包括:
不同的详细程度级别在不同的场景中很有用。让我们来看看每个级别及其实际应用:
默认级别(0):
详细程度级别 1(-v):
更高详细程度级别(-vv, -vvv):
详细程度选项可以与其他 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 技术结合使用,以进行更强大的网络分析。这些技能对于网络管理员和安全专业人员至关重要,能使他们高效地收集网络数据,并根据特定任务定制扫描。