简介
在本实验中,我们将探索 Nmap 的安装和基本用法。Nmap 是一款功能强大的网络扫描和安全审计工具,全称为 Network Mapper。它是系统管理员和安全专业人员常用的开源工具,用于发现网络中的主机、服务和漏洞。本实验将指导你完成 Nmap 的安装过程,设置本地服务以进行扫描,并执行基本扫描以了解 Nmap 的功能。
在本实验中,我们将探索 Nmap 的安装和基本用法。Nmap 是一款功能强大的网络扫描和安全审计工具,全称为 Network Mapper。它是系统管理员和安全专业人员常用的开源工具,用于发现网络中的主机、服务和漏洞。本实验将指导你完成 Nmap 的安装过程,设置本地服务以进行扫描,并执行基本扫描以了解 Nmap 的功能。
在本步骤中,我们将在你的 Ubuntu Linux 系统上安装 Nmap。Nmap 包含在默认的 Ubuntu 软件源中,因此安装过程非常简单。
首先,打开终端。默认情况下,你应该位于 /home/labex/project
目录中。如果不在该目录,请使用以下命令导航到该目录:
cd /home/labex/project
接下来,更新软件包列表并安装 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 的工作原理。
首先,对我们的本地 HTTP 服务器执行一个简单的 TCP 连接扫描:
nmap -sT -p 8000 localhost
在此命令中:
-sT
指定 TCP 连接扫描-p 8000
告诉 Nmap 仅扫描端口 8000localhost
是我们的扫描目标你应该会看到类似以下的输出:
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 是理解网络结构和识别潜在安全问题的强大工具,但应始终以负责任的方式并在获得适当授权的情况下使用。