使用 Nmap 扫描并记录网络服务

CybersecurityCybersecurityBeginner
立即练习

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

简介

在本次实验中,你将学习如何使用 Nmap(一款强大的网络扫描工具)来发现和分析网络上运行的服务。Nmap 是网络管理员和安全专业人员的重要工具,常用于网络发现和安全审计。

你将掌握的技能包括搭建基本的 Web 服务器、使用 Nmap 扫描和检测服务、解读扫描结果,以及有效地记录你的发现。这些知识是进行网络安全评估的基础,并且在现实场景中被广泛应用,以识别系统的潜在漏洞。

搭建 Web 服务器

在这一步中,我们将在你的本地机器上搭建一个基本的 Web 服务器。为什么要这么做呢?这个 Web 服务器将作为你后续 Nmap 扫描练习的目标。Nmap 是一款用于网络探索和安全审计的强大工具,有一个本地 Web 服务器供你扫描,将有助于你在安全且可控的环境中了解它的工作原理。

什么是 Web 服务器?

Web 服务器是在网络中起着关键作用的软件。当你在浏览器中打开一个网站时,正是 Web 服务器根据你的请求将网页内容(如 HTML 页面、图片或视频)发送到你的浏览器。在本次实验中,我们将利用 Python 的内置功能来创建一个简单的 HTTP 服务器。HTTP(超文本传输协议)是网络数据通信的基础,使用 Python 的内置服务器是快速启动并运行 Web 服务器的简便方法。

创建 Web 目录和内容

  1. 首先,你需要打开一个终端。终端是一个基于文本的界面,允许你通过输入命令与计算机的操作系统进行交互。打开终端后,你要导航到项目目录。在终端中导航意味着在计算机的文件系统中移动。使用以下命令进入项目目录:

    cd /home/labex/project
  2. 现在,我们要为你的 Web 服务器内容创建一个新目录。目录就像你计算机上的文件夹,可用于存储文件。我们使用 mkdir 命令来创建新目录。这里 -p 标志很重要,它确保如果父目录(即包含你要创建的目录的目录)不存在,会为你创建这些父目录。运行以下命令:

    mkdir -p services
  3. 创建目录后,我们需要进入该目录。就像你在桌面上打开一个文件夹一样,我们使用 cd 命令进入新创建的目录:

    cd services
  4. 接下来,我们要创建一个简单的 HTML 文件。HTML(超文本标记语言)是创建网页的标准语言。这个文件将由你的 Web 服务器提供服务。以下命令创建一个名为 index.html 的文件,并将文本 "Welcome to the mini fortress" 放入其中:

    echo "Welcome to the mini fortress" > index.html
  5. 最后,我们将在端口 8000 上启动一个 Python HTTP 服务器。端口就像你计算机上的一扇门,网络流量可以通过它进出。端口 8000 是测试 Web 服务器常用的端口。以下命令使用 Python 的内置 HTTP 服务器模块来启动 Web 服务器:

    python3 -m http.server 8000

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

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

    这意味着你的 Web 服务器已启动并运行,随时可以处理请求。

验证你的 Web 服务器

为了确保你的 Web 服务器正常运行,我们需要打开一个新的终端窗口。保持第一个终端窗口运行,因为它当前被 Web 服务器进程占用。如果你关闭它,Web 服务器将停止运行。

  1. 打开一个新的终端窗口。

  2. 现在,我们将使用 curl 命令来访问你的 Web 服务器。curl 是一个命令行工具,允许你向服务器传输数据或从服务器接收数据。运行以下命令:

    curl http://localhost:8000

    如果一切正常,你应该会看到消息:Welcome to the mini fortress

    这确认了你的 Web 服务器正在运行且可以访问。

你刚刚搭建的 Web 服务器将继续在第一个终端窗口中运行。保持此窗口打开,让服务器继续运行,以便进行后续步骤。所有后续命令都应在你刚刚打开的新终端窗口中执行。

使用 Nmap 扫描服务

在这一步中,我们将使用一款名为 Nmap 的强大工具来扫描并检测你在上一步中搭建的 Web 服务器服务。扫描服务是网络安全的重要组成部分,因为它能帮助我们了解网络上运行着哪些服务,以及这些服务是否可能遭受攻击。

了解 Nmap

Nmap 即网络映射器(Network Mapper),是一款免费的开源工具。它广泛用于网络发现和安全审计。Nmap 的工作原理是向网络中的目标主机发送原始 IP 数据包。根据收到的响应,它可以确定以下几个重要信息:

  • 首先,它能告诉我们网络上有哪些可用的主机。主机可以是计算机、服务器或任何连接到网络的设备。
  • 其次,它可以确定这些主机提供哪些服务。服务可能包括 Web 服务器、电子邮件服务器或文件共享服务等。
  • 第三,它甚至可以识别主机运行的操作系统。这很有用,因为不同的操作系统可能存在不同的安全漏洞。
  • 此外,Nmap 还能发现网络中主机的许多其他特征。

执行基本的服务扫描

  1. 在开始扫描之前,我们需要确保位于项目目录中。项目目录是存储本次实验所有相关文件的地方。要导航到项目目录,我们在终端中使用 cd 命令。

    cd /home/labex/project
  2. 现在,我们将对本地 Web 服务器进行 Nmap 服务扫描。本地 Web 服务器在我们自己的机器上运行,我们将使用 Nmap 来查明端口 8000 上运行的是什么服务。

    sudo nmap -sV localhost -p 8000

    让我们分解这个命令,了解每个部分的作用:

    • sudo:用于以管理员权限运行命令。系统中的某些操作需要管理员权限,Nmap 可能需要这些权限才能进行正确的扫描。
    • nmap:这就是我们一直在讨论的网络映射工具,是执行扫描的主要命令。
    • -sV:此选项启用版本检测,帮助 Nmap 识别目标端口上运行的具体服务。
    • localhost:这是我们要扫描的目标,在这种情况下是我们的本地机器。
    • -p 8000:此选项指定我们要扫描端口 8000。端口就像计算机上的门,不同的服务使用不同的端口进行通信。

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

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-01 12:00 UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000094s latency).
    
    PORT     STATE SERVICE VERSION
    8000/tcp open  http    Python/3.10 http.server
    
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 6.31 seconds

    输出显示 Nmap 已检测到端口 8000 上运行着一个 HTTP 服务。具体来说,它已将该服务识别为 Python 3.10 HTTP 服务器。

  3. 为了记录扫描结果以便进一步分析,我们将把输出保存到一个文件中。这样,我们以后可以回顾结果,并查找任何潜在的安全问题。

    sudo nmap -sV localhost -p 8000 > /home/labex/project/nmap_service_detection.txt

    此命令执行与之前相同的 Nmap 扫描,但不是在终端上显示输出,而是将输出重定向到一个名为 nmap_service_detection.txt 的文件中。

  4. 现在,让我们查看保存文件的内容,确保结果已保存。我们使用 cat 命令在终端中显示文件的内容。

    cat /home/labex/project/nmap_service_detection.txt

    你看到的内容应该与之前直接运行 Nmap 命令时看到的输出相匹配。

理解 Nmap 输出

让我们仔细查看 Nmap 扫描的输出,了解每个部分的含义:

  • Starting Nmap 7.80:这一行表明正在使用的 Nmap 版本。不同版本的 Nmap 可能具有不同的功能和特性。
  • Host is up:这表明目标(在这种情况下是我们的本地机器)正在响应网络请求。如果主机处于关闭状态,Nmap 将无法从它那里获取任何信息。
  • PORT:此列列出了被扫描的端口号。在我们的例子中,是端口 8000。
  • STATE:显示端口的状态。它可以是开放(open)、关闭(closed)或被过滤(filtered)。开放的端口意味着有服务正在该端口上监听并接受连接。
  • SERVICE:识别端口上运行的服务。在我们的输出中,是一个 HTTP 服务。
  • VERSION:显示服务版本的详细信息。这里告诉我们该 HTTP 服务是 Python 3.10 http.server。

这些信息对于安全评估至关重要。通过了解网络上暴露了哪些服务,我们可以检查它们是否存在已知的漏洞。如果这些服务没有得到妥善保护,攻击者就有可能利用它们。

记录你的发现

在这一步中,我们将专注于记录你使用 Nmap 发现的服务信息。文档记录在安全工作领域就像一张地图。它至关重要,因为它能让你记录扫描过程中发现的所有重要细节。这份记录日后可用于分析,查看情况随时间的变化,或满足某些合规性要求。

文档记录的重要性

在专业的安全评估和网络审计中,详细的文档记录起着几个关键作用:

  • 系统和服务的快照:它记录了特定时间点存在的系统和服务。这有助于了解网络在给定时刻的状态。
  • 跟踪变化:帮助你跟踪网络基础设施的任何变化。通过比较不同时间的文档记录,你可以轻松发现新服务、移除的系统或其他变更。
  • 合规性证据:提供你已进行适当安全检查的证据,这通常是各种法规和标准所要求的。
  • 规划改进:在规划安全改进时作为参考。你可以查看记录的发现,确定需要关注的领域。

创建文档文件

步骤 1:导航到项目目录

首先,你需要确保位于项目目录中。我们将在此创建并存储文档文件。为此,使用 cd 命令,即“change directory”(更改目录)的缩写。

cd /home/labex/project

步骤 2:创建新文件

现在,我们将创建一个新文件来记录我们的发现。我们将使用 touch 命令。如果文件不存在,touch 将创建一个具有指定名称的空文件。

touch nmap_findings.txt

步骤 3:添加描述性标题

接下来,我们将为文档文件添加一个描述性标题。这个标题将为我们即将添加的扫描结果提供一些背景信息。我们将使用 echo 命令打印文本,并使用 >> 运算符将其追加到文件中。>> 运算符很重要,因为它将文本添加到文件末尾,而不会覆盖已有的内容。

echo "Nmap has detected the following service running on localhost, port 8000:" >> nmap_findings.txt

步骤 4:添加详细的扫描结果

现在,我们将把详细的 Nmap 扫描结果添加到文档中。我们将再次运行 Nmap 扫描,并使用 >> 运算符将结果追加到文件中。

nmap -sV localhost -p 8000 >> nmap_findings.txt

步骤 5:查看你的文档

最后,让我们查看完成的文档。我们将使用 cat 命令,即“concatenate”(连接)的缩写,来显示文件的内容。

cat nmap_findings.txt

你的文件现在应该包含一个标题和完整的 Nmap 扫描结果,类似于:

Nmap has detected the following service running on localhost, port 8000:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-01 12:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).

PORT     STATE SERVICE VERSION
8000/tcp open  http    Python/3.10 http.server

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.31 seconds

安全文档记录的最佳实践

在现实场景中记录安全发现时,你应该考虑包含以下几个重要元素:

  1. 评估的日期和时间:这有助于你跟踪扫描的进行时间,对于理解网络变化的时间线很有用。
  2. 使用的工具(包括版本号):了解使用了哪些工具及其版本对于可重复性和理解扫描的能力很重要。
  3. 评估范围:明确界定测试的内容。这可能包括特定的 IP 地址、端口或系统。
  4. 带有证据的详细发现:尽可能详细地提供发现的信息,并附上任何支持证据。
  5. 潜在的安全影响:分析发现并识别任何潜在的安全风险或漏洞。
  6. 改进建议:根据发现,提出改善网络安全的步骤。

对于本次实验,我们创建了一个包含扫描结果的简单文档,但在专业环境中,文档通常会更全面。

总结

在本次实验中,你学习了使用 Nmap 进行网络服务发现和文档记录的重要技能。这些技能是全球专业人员进行网络安全评估实践的基础。

关键要点包括搭建基本的 Web 服务器、使用 Nmap 检测正在运行的服务、解读扫描结果以及记录发现。这些技能适用于现实场景,如网络资产盘点、安全评估、系统管理和合规性验证。随着你在网络和安全领域的不断进步,Nmap 将成为一个非常有价值的工具。你可以考虑探索 Nmap 的高级功能,以增强你的网络发现能力。