介绍
在本实验中,你将学习如何在 Nmap 中执行高强度扫描。本实验涵盖了对目标 IP 地址运行高强度扫描、扫描特定端口、增加扫描的详细程度、保存扫描结果、分析详细输出以及将其与基本扫描进行比较。你将在 Xfce 终端中使用诸如 nmap -A、nmap -A -p、nmap -v -A 和 nmap -A -oN 等命令来完成这些任务。
使用 nmap -A 192.168.1.1 运行高强度扫描
在本步骤中,我们将使用 Nmap 执行高强度扫描。高强度扫描结合了多种扫描技术,以收集有关目标的全面信息。-A 选项启用操作系统检测、版本检测、脚本扫描和路由跟踪。这种类型的扫描对于识别开放端口、在这些端口上运行的服务以及目标的操作系统很有用。
在开始之前,让我们先明确一下什么是 IP 地址。IP 地址是分配给连接到使用 Internet 协议进行通信的计算机网络的每个设备的数字标签。在我们的例子中,192.168.1.1 是一个私有 IP 地址,通常用于家庭或小型办公网络。
现在,让我们执行高强度扫描。打开你的 Xfce 终端。确保你在 ~/project 目录中。
cd ~/project
然后,运行以下 Nmap 命令:
sudo nmap -A 192.168.1.1
系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。
此命令将针对目标 IP 地址 192.168.1.1 发起高强度扫描。Nmap 将尝试识别操作系统、检测正在运行的服务的版本、运行默认脚本并执行路由跟踪。
输出将显示扫描结果的详细报告,包括开放端口、服务版本以及扫描期间收集的其他信息。确切的输出将取决于目标系统及其配置。以下是输出可能的样子的示例(尽管你的结果可能会有所不同):
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.0012s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p0 Ubuntu 7ubuntu2 (protocol 2.0)
| ssh-hostkey:
| 2048 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
| 256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
|_ 256 SHA256:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
443/tcp open ssl/http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
| ssl-cert: Subject: commonName=localhost
| Not valid before: 2018-08-22T12:20:36
| Not valid after: 2028-08-19T12:20:36
| ...
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 0.00 ms 192.168.1.1
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.23 seconds
此输出显示了开放端口(在此示例中为 22、80 和 443)、在这些端口上运行的服务(SSH 和 HTTP)以及有关操作系统(Linux)的信息。路由跟踪部分显示了到目标的路径。
使用 nmap -A -p 22,80 127.0.0.1 扫描特定端口
在本步骤中,我们将把 Nmap 扫描聚焦在特定端口上。我们不会扫描所有端口或依赖 Nmap 的默认端口选择,而是指定 Nmap 仅扫描目标 IP 地址 127.0.0.1 上的 22 和 80 端口。当你想要快速检查已知服务的状态或缩短扫描时间时,这会很有用。
在继续之前,让我们了解一下什么是端口。在网络中,端口是网络连接开始和结束的虚拟点。端口基于软件并由操作系统管理。它们允许多个应用程序同时使用单个网络连接。端口 22 通常用于 SSH(安全外壳协议),这是一种用于远程访问的安全协议,而端口 80 通常用于 HTTP(超文本传输协议),它是万维网上数据通信的基础。
127.0.0.1 是回环地址,也称为本地主机。它指的是你正在使用的当前机器。扫描 127.0.0.1 对于测试在你自己机器上运行的服务很有用。
现在,让我们执行 Nmap 命令来扫描特定端口。打开你的 Xfce 终端。确保你在 ~/project 目录中。
cd ~/project
然后,运行以下 Nmap 命令:
sudo nmap -A -p 22,80 127.0.0.1
系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。
此命令将发起一次高强度扫描,但仅针对 127.0.0.1 的 22 和 80 端口。Nmap 将尝试识别在这些端口上运行的服务并收集其他信息。
输出将显示扫描结果的报告,特别是针对 22 和 80 端口的。以下是输出可能的样子的示例(尽管你的结果可能不同):
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (protocol 2.0)
| ssh-hostkey:
| 3072 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
| 256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
|_ 256 SHA256:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 2.57 seconds
此输出表明端口 22 开放并运行着 SSH,端口 80 开放并运行着 Apache HTTP 服务器。每个服务的版本信息也会显示出来。
使用 nmap -v -A 192.168.1.1 添加详细程度
在本步骤中,我们将在 Nmap 高强度扫描中增加详细程度。Nmap 中的详细程度意味着在扫描期间增加显示的信息量。这有助于理解 Nmap 正在做什么以及排查任何问题。-v 选项会增加详细程度级别。多次使用 -v(例如 -vv 或 -vvv)会进一步提高详细程度级别,提供更详细的输出。
让我们说明一下为什么详细程度很有用。默认情况下,Nmap 会提供扫描结果的摘要。然而,在排查问题或试图理解扫描过程时,更详细的信息可能非常宝贵。详细输出会显示扫描的进度、发送的探测以及收到的响应。
现在,让我们执行带有详细程度的 Nmap 命令。打开你的 Xfce 终端。确保你在 ~/project 目录中。
cd ~/project
然后,运行以下 Nmap 命令:
sudo nmap -v -A 192.168.1.1
系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。
此命令将针对目标 IP 地址 192.168.1.1 发起高强度扫描,并增加详细程度。Nmap 在扫描过程中会显示有关扫描过程的更多信息。
输出将比之前的高强度扫描更详细。你将看到有关发送的探测、收到的响应以及扫描每个阶段的进度的信息。以下是输出可能的样子的示例(尽管你的结果可能不同):
Starting Nmap 7.80 ( https://nmap.org )
NSE: Loaded 151 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
NSE: Executing script msrpc-enum on 192.168.1.1
NSE: Starting runlevel 2 (of 3) scan.
NSE: Starting runlevel 3 (of 3) scan.
NSE: Finished script pre-scanning.
Initiating Ping Scan at 14:35
Scanning 192.168.1.1 [4 ports]
Completed Ping Scan at 14:35, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 14:35
Completed Parallel DNS resolution of 1 host. at 14:35, 0.00s elapsed
Initiating SYN Stealth Scan at 14:35
Scanning 192.168.1.1 [1000 ports]
Discovered open port 22/tcp on 192.168.1.1
Discovered open port 80/tcp on 192.168.1.1
Discovered open port 443/tcp on 192.168.1.1
Completed SYN Stealth Scan at 14:35, 0.15s elapsed (1000 total ports)
Initiating Service scan at 14:35
Scanning 3 services on 192.168.1.1
Completed Service scan at 14:35, 5.23s elapsed (3 services total)
Initiating OS detection at 14:35
Completed OS detection at 14:35, 5.18s elapsed
Nmap scan report for 192.168.1.1
Host is up (0.00078s latency).
Not shown: 997 closed ports
... (rest of the output)...
详细输出显示了扫描的不同阶段,例如 ping 扫描、端口扫描、服务检测和操作系统检测。它还显示了 Nmap 脚本引擎(NSE)正在执行的脚本。
使用 nmap -A -oN aggressive.txt 127.0.0.1 保存高强度扫描结果
在本步骤中,我们将学习如何将 Nmap 高强度扫描的输出保存到文件中。这对于后续的分析、报告或与其他扫描结果进行比较很有用。Nmap 提供了多种以不同格式保存输出的选项。我们将使用 -oN 选项,它会以“普通”的人类可读格式保存输出。
-oN 选项后面跟着一个文件名,这会告诉 Nmap 使用普通输出格式将扫描结果保存到指定的文件中。这种格式旨在便于人类阅读。
现在,让我们执行 Nmap 命令,将高强度扫描输出保存到文件中。打开你的 Xfce 终端。确保你在 ~/project 目录中。
cd ~/project
然后,运行以下 Nmap 命令:
sudo nmap -A -oN aggressive.txt 127.0.0.1
系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。
此命令将针对目标 IP 地址 127.0.0.1 发起高强度扫描,并将输出以普通格式保存到 ~/project 目录下一个名为 aggressive.txt 的文件中。
扫描完成后,你可以使用像 nano 或 cat 这样的文本编辑器查看 aggressive.txt 文件的内容。
要使用 nano 查看文件内容,运行以下命令:
nano aggressive.txt
这将在 nano 文本编辑器中打开 aggressive.txt 文件。你可以滚动浏览文件以查看扫描结果。
或者,你可以使用 cat 命令在终端中显示文件内容:
cat aggressive.txt
这会将 aggressive.txt 文件的内容打印到终端。
aggressive.txt 文件的内容将类似于你在不使用 -oN 选项运行 Nmap 时在屏幕上看到的输出,但现在它被保存在一个文件中以供后续使用。
## Nmap 7.80 scan initiated Mon Nov 21 14:45:32 2023 as: nmap -A -oN aggressive.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (protocol 2.0)
| ssh-hostkey:
| 3072 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
| 256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
|_ 256 SHA256:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
## Nmap done at Mon Nov 21 14:45:35 2023 -- 1 IP address (1 host up) scanned in 2.57 seconds
在 Xfce 终端中分析详细输出
在本步骤中,我们将分析上一步中保存的高强度扫描的详细输出。理解 Nmap 扫描的输出对于识别系统中潜在的漏洞和配置错误至关重要。我们将使用 cat 命令在 Xfce 终端中查看 aggressive.txt 文件的内容,并讨论输出的关键部分。
高强度扫描(nmap -A)执行多种类型的扫描,包括:
- TCP 连接扫描:通过完成 TCP 三次握手来检查端口是否开放。
- 服务版本检测:确定在开放端口上运行的软件版本。
- 操作系统检测:尝试识别目标主机的操作系统。
- Traceroute:映射到目标的网络路径。
- Nmap 脚本引擎(NSE):执行脚本来识别漏洞并收集更多信息。
现在,让我们分析输出。打开你的 Xfce 终端。确保你在 ~/project 目录中。
cd ~/project
然后,使用 cat 命令显示 aggressive.txt 文件的内容:
cat aggressive.txt
输出将显示在终端中。让我们分解关键部分:
Nmap 扫描报告:此部分提供有关扫描的一般信息,包括目标 IP 地址、主机名(如果可用)以及扫描的开始和结束时间。
## Nmap 7.80 scan initiated Mon Nov 21 14:45:32 2023 as: nmap -A -oN aggressive.txt 127.0.0.1 Nmap scan report for localhost (127.0.0.1) Host is up (0.000028s latency). Other addresses for localhost (not scanned): ::1端口扫描结果:此部分列出目标主机上开放、关闭和被过滤的端口。对于每个开放端口,Nmap 尝试识别在该端口上运行的服务及其版本。
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (protocol 2.0) | ssh-hostkey: | 3072 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA) | 256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA) |_ 256 SHA256:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz (ED25519) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) |_http-server-header: Apache/2.4.41 (Ubuntu)PORT:端口号和协议(例如,22/tcp)。STATE:端口状态(open、closed、filtered)。SERVICE:在端口上识别出的服务(例如,ssh、http)。VERSION:服务版本(例如,OpenSSH 8.2p1、Apache httpd 2.4.41)。ssh-hostkey:SSH 主机密钥指纹。http-server-header:HTTP 服务器标头。
服务信息:此部分提供有关目标主机上运行的服务的其他信息,例如操作系统。
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel操作系统检测:此部分显示 Nmap 操作系统检测尝试的结果。Nmap 将从目标主机收到的响应与已知操作系统指纹数据库进行比较,以识别操作系统。
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .Nmap 脚本引擎(NSE)结果:此部分显示扫描期间执行的任何 NSE 脚本的输出。这些脚本可以提供广泛的信息,例如识别漏洞、收集用户信息和检测配置错误。(如果没有运行脚本或脚本没有产生任何输出,此部分可能不存在。)
扫描摘要:此部分总结扫描结果,包括扫描的 IP 地址数量和总扫描时间。
## Nmap done at Mon Nov 21 14:45:35 2023 -- 1 IP address (1 host up) scanned in 2.57 seconds
通过分析高强度扫描的详细输出,你可以全面了解目标系统的网络服务、操作系统和潜在漏洞。
在 Xfce 终端中与基本扫描结果进行比较
在本步骤中,我们将执行一次基本的 Nmap 扫描,并将其输出与我们之前执行的高强度扫描进行比较。这种比较将突出每次扫描在细节程度和收集的信息类型上的差异。基本扫描通常只执行 TCP 连接扫描,速度更快,但提供的信息比高强度扫描少。
一次基本的 Nmap 扫描,在没有任何特定选项的情况下,会对最常见的 1000 个端口执行 TCP 连接扫描。它会识别这些端口是开放、关闭还是被过滤。默认情况下,它不会执行服务版本检测、操作系统检测或运行 NSE 脚本。
现在,让我们执行一次基本的 Nmap 扫描并比较结果。打开你的 Xfce 终端。确保你在 ~/project 目录中。
cd ~/project
运行以下 Nmap 命令对目标 IP 地址 127.0.0.1 执行基本扫描:
sudo nmap 127.0.0.1
系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。
基本扫描的输出将显示在终端中。它会显示目标主机上开放、关闭和被过滤的端口。
Starting Nmap 7.80 ( https://nmap.org ) at Mon Nov 21 15:00:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
现在,让我们将此输出与我们保存在 aggressive.txt 文件中的高强度扫描输出进行比较。你可以再次使用 cat 命令查看 aggressive.txt 文件的内容:
cat aggressive.txt
将基本扫描的输出与 aggressive.txt 文件的内容进行比较。你会注意到以下差异:
- 服务版本检测:高强度扫描会识别开放端口上运行的服务的具体版本(例如,
OpenSSH 8.2p1,Apache httpd 2.4.41),而基本扫描只识别服务名称(例如,ssh,http)。 - 操作系统检测:高强度扫描会尝试识别目标主机的操作系统,而基本扫描不会。
- NSE 脚本:高强度扫描可能会运行 NSE 脚本以收集更多信息,而基本扫描不会。
- 扫描的端口数量:基本扫描只扫描最常见的 1000 个端口,而高强度扫描可能会根据使用的选项扫描更多端口。
总之,与基本扫描相比,高强度扫描提供了对目标系统更详细和全面的视图。然而,它完成扫描所需的时间也更长,并且更有可能被入侵检测系统检测到。选择使用哪种类型的扫描取决于评估的具体目标和环境的限制。
总结
在本实验中,参与者学习了如何使用 Nmap 进行高强度扫描。他们执行了诸如 nmap -A 之类的命令,以进行综合扫描,这些扫描结合了操作系统检测、版本检测、脚本扫描和 Traceroute。他们还学习了使用 -p 扫描特定端口,使用 -v 增加详细程度,并使用 -oN 将扫描结果保存到文件中。此外,他们在 Xfce 终端中分析了详细的扫描输出,并将其与基本扫描进行了比较。



