使用 Nmap 进行基础漏洞扫描

CompTIABeginner
立即练习

介绍

欢迎来到本实验,我们将学习使用 Nmap 进行基础的漏洞扫描。Nmap (Network Mapper) 是一个强大、开源的工具,被网络管理员和安全专业人士用于网络发现和安全审计。它可以识别网络上有哪些主机可用,这些主机提供哪些服务,它们运行什么操作系统,以及更多信息。

在本实验中,你将获得使用 Nmap 的实践经验。你将首先在 Ubuntu 系统上安装它,然后使用它扫描你自己的机器 (localhost) 来查找开放端口,最后,你将学习如何解读扫描结果,以识别正在运行的服务及其版本,这是评估潜在漏洞的第一步。

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

在 Ubuntu 22.04 上安装 Nmap

在此步骤中,你将在你的 Ubuntu 22.04 系统上安装 Nmap 工具。在使用任何软件之前,你必须先确保它已安装。我们将使用 apt 包管理器,这是像 Ubuntu 这样的 Debian 系 Linux 发行版的标准。

首先,更新系统的包列表是一个好习惯。这可以确保你获得最新版本的软件。打开终端并运行以下命令:

sudo apt update

你将看到 apt 从仓库获取最新包信息的输出。

接下来,使用 apt install 命令安装 Nmap。-y 标志会自动回答任何提示为“是”,使安装过程无需交互。

sudo apt install -y nmap

安装完成后,你可以通过检查其版本来验证 Nmap 是否已正确安装。

nmap --version

你应该会看到类似以下的输出,确认安装并显示已安装的版本。

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1f libz-1.2.11 libpcre-8.39 nmap-libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

现在 Nmap 已安装,你已准备好执行你的第一次扫描。

执行本地主机端口扫描以识别开放服务

在此步骤中,你将对你的本地机器执行基础端口扫描,以识别任何开放端口及其关联的服务。扫描 localhost(其 IP 地址为 127.0.0.1)是练习使用 Nmap 的一种安全方式,因为你只扫描你自己的系统。

端口扫描会检查计算机上服务用于通过网络通信的开放“端口”。默认情况下,Nmap 会扫描 1000 个最常见的 TCP 端口。

要在你的本地机器上运行基础扫描,请在终端中执行以下命令:

nmap localhost

Nmap 现在将扫描你的机器并报告其发现。输出将类似于此。请注意,实验环境已预先配置,在端口 8000 上运行了一个服务。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8000/tcp open  http-alt       SimpleHTTPServer 0.6 (Python 3.10.12)

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

让我们来分析一下这个输出:

  • PORT: 端口号和协议(例如 8000/tcp)。
  • STATE: 端口的状态。open 表示有服务正在此端口上接受连接。
  • SERVICE: 通常在该端口上找到的服务的通用名称(例如,端口 22 的 ssh)。

从这次扫描中,你已识别出你的机器上的端口 22 和 8000 是开放的。

解读 Nmap 扫描结果以发现潜在漏洞

在此步骤中,你将学习如何解析 Nmap 扫描结果以收集更详细的信息,这对于识别潜在漏洞至关重要。知道一个端口是开放的很有用,但知道该端口上运行的确切软件和版本则强大得多。

开放端口本身并不是漏洞。风险来自于运行在该端口上的服务。如果服务已过时或配置不当,它可能会被利用。

要了解有关服务的更多信息,你可以使用 Nmap 的版本检测功能,并加上 -sV 标志。这将探测开放的端口以确定服务和版本信息。

运行以下命令对 localhost 执行版本扫描:

nmap -sV localhost

输出现在将更加详细。请密切关注 VERSION 列。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh         OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
3001/tcp open  ssl/nessus?
8000/tcp open  http        SimpleHTTPServer 0.6 (Python 3.10.12)

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

如你所见,Nmap 现在已识别出运行的服务具体版本。例如,在端口 8000 上,它不再是通用的 Web 服务(http-alt),而是明确的 SimpleHTTPServer 0.6 (Python 3.10.12)

有了这些版本信息,安全分析师(或攻击者)就可以在在线漏洞数据库(如 CVE)中搜索已知会影响“SimpleHTTPServer 0.6 (Python 3.10.12)”的漏洞利用。这是基础漏洞扫描的基本过程。

总结

恭喜你完成了本次实验!你已经成功迈出了使用 Nmap 进行网络扫描的第一步。

在本次实验中,你学习了如何:

  • 使用 apt 在 Ubuntu 系统上安装 Nmap 工具。
  • localhost 执行基础端口扫描以发现开放端口。
  • 使用版本检测扫描(-sV)来识别这些端口上运行的具体软件和版本。
  • 理解解释扫描结果以识别潜在弱点区域的基本原理。

这些是网络安全、系统管理或网络工程领域任何人的基础技能。我们鼓励你继续探索 Nmap 的许多其他功能,例如其强大的脚本引擎(NSE),以进行更高级的扫描。