Nmap 安装与配置

CybersecurityCybersecurityBeginner
立即练习

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

简介

在本实验中,我们将探索 Nmap 的安装和基本用法。Nmap 是一款功能强大的网络扫描和安全审计工具,全称为 Network Mapper。它是系统管理员和安全专业人员常用的开源工具,用于发现网络中的主机、服务和漏洞。本实验将指导你完成 Nmap 的安装过程,设置本地服务以进行扫描,并执行基本扫描以了解 Nmap 的功能。

安装 Nmap

在本步骤中,我们将在你的 Ubuntu Linux 系统上安装 Nmap。Nmap 包含在默认的 Ubuntu 软件源中,因此安装过程非常简单。

首先,打开终端。默认情况下,你应该位于 /home/labex/project 目录中。如果不在该目录,请使用以下命令导航到该目录:

cd /home/labex/project
Nmap 安装的终端截图

接下来,更新软件包列表并安装 Nmap:

sudo apt update
sudo apt install nmap -y

sudo 命令允许你以管理员权限运行命令。-y 标志会在安装过程中自动对所有提示回答“是”。

安装完成后,通过检查 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 nmap-libssh2-1.8.2 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

此输出确认 Nmap 已安装,并提供了版本和编译选项的相关信息。

设置本地服务以进行扫描

在使用 Nmap 进行扫描之前,运行一个目标服务会非常有用。在本步骤中,我们将使用 Python 内置的 http.server 模块设置一个简单的 HTTP 服务器。

首先,为我们的 HTTP 服务器创建一个新目录:

mkdir -p /home/labex/project/http-server
cd /home/labex/project/http-server

接下来,创建一个简单的 HTML 文件,供服务器提供:

echo "<html><body><h1>Welcome to the Nmap Lab</h1></body></html>" > index.html

此命令创建了一个名为 index.html 的文件,其中包含基本的 HTML 结构和欢迎信息。

然后,启动 Python HTTP 服务器:

python3 -m http.server 8000

此命令在端口 8000 上启动了一个简单的 HTTP 服务器。

请打开一个新的终端标签页或窗口以继续。

要验证服务器是否正在运行,可以使用 curl 命令:

curl http://localhost:8000

你应该会看到我们之前创建的 HTML 内容:

127.0.0.1 - - [13/Sep/2024 15:24:21] "GET / HTTP/1.1" 200 -
<html>
  <body>
    <h1>Welcome to the Nmap Lab</h1>
  </body>
</html>

基本 Nmap 扫描

现在我们已经安装了 Nmap 并运行了一个本地服务,接下来我们将执行一些基本扫描,以了解 Nmap 的工作原理。

首先,对我们的本地 HTTP 服务器执行一个简单的 TCP 连接扫描:

nmap -sT -p 8000 localhost

在此命令中:

  • -sT 指定 TCP 连接扫描
  • -p 8000 告诉 Nmap 仅扫描端口 8000
  • localhost 是我们的扫描目标

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

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
8000/tcp open  http-alt

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

此输出显示端口 8000 是开放的,并且正在运行 HTTP 服务。

接下来,我们执行一个更详细的扫描,尝试确定正在运行的服务的版本:

nmap -sV -p 8000 localhost

-sV 选项告诉 Nmap 探测开放的端口以确定服务/版本信息。

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

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE VERSION
8000/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)

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

此输出提供了有关端口 8000 上运行的服务的更详细信息,包括它是一个 Python SimpleHTTPServer。

你可以在启动 Python HTTP 服务器的终端日志中查看 Nmap 的请求记录。

扫描多个端口

在实际场景中,你通常需要扫描多个端口,甚至整个端口范围。让我们探索如何使用 Nmap 实现这一点。

首先,扫描 localhost 上最常见的 1000 个端口:

nmap localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:29 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8000/tcp open  http-alt

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

此命令未指定任何端口,因此会扫描最常见的 1000 个端口。你应该会看到开放、关闭和过滤端口的列表。

接下来,扫描所有 65535 个端口:

nmap -p- localhost

-p- 选项告诉 Nmap 扫描从 1 到 65535 的所有端口。此扫描需要更长的时间才能完成。

最后,扫描特定范围的端口:

nmap -p 1-1000 localhost

此命令扫描端口 1 到 1000。

输出格式与保存结果

Nmap 提供了多种输出格式,适用于不同的用途。在本步骤中,我们将探索其中一些格式,并学习如何保存扫描结果。

首先,执行扫描并将输出保存为普通格式:

nmap -oN normal_output.txt localhost

-oN 选项告诉 Nmap 将输出保存为普通格式到指定文件中。

接下来,将输出保存为 XML 格式:

nmap -oX xml_output.xml localhost

-oX 选项将输出保存为 XML 格式,这种格式便于使用脚本解析或导入到其他工具中。

最后,将输出保存为可 grep 的格式:

nmap -oG grepable_output.txt localhost

-oG 选项将输出保存为一种易于使用 grep 等工具解析的格式。

你可以使用 cat 命令查看这些文件的内容,例如:

cat normal_output.txt

总结

在本实验中,我们探索了 Nmap 的基本功能,这是一款功能强大的网络扫描和安全审计工具。我们首先在 Ubuntu Linux 系统上安装了 Nmap 并验证了其安装。接着,我们设置了一个本地 HTTP 服务器作为扫描目标,展示了如何为测试目的创建一个简单的服务。

我们逐步学习了各种扫描技术,从基本的端口扫描开始,逐步深入到更详细的服务版本检测。我们了解了如何扫描特定端口、端口范围,甚至是系统上的所有 65535 个端口。这些知识对于理解网络环境并识别潜在漏洞至关重要。

最后,我们探索了 Nmap 的输出选项,学习了如何以不同格式保存扫描结果,包括普通文本、XML 和可 grep 的输出格式。这些输出格式对于文档记录、进一步分析以及与其他安全工具的集成非常重要。

通过本实验,你已经获得了 Nmap 的实践经验,为更高级的网络扫描和安全审计任务奠定了基础。请记住,虽然 Nmap 是理解网络结构和识别潜在安全问题的强大工具,但应始终以负责任的方式并在获得适当授权的情况下使用。

您可能感兴趣的其他 Cybersecurity 教程