在 Nmap 中执行全面扫描

NmapBeginner
立即练习

介绍

在本实验中,你将学习如何使用 Nmap 进行全面扫描。本实验重点在于结合不同的扫描类型,以收集有关目标的详细信息。

你将使用诸如 -sS(TCP SYN 扫描)、-sU(UDP 扫描)、-O(操作系统检测)和 -sV(服务版本检测)等选项执行全面扫描。你还将探索使用 -sC 添加脚本、使用 -T3 调整扫描时间、使用 -v 增加详细程度以及使用 -oN 将扫描结果保存到文件。最后,你将在 Xfce 终端中分析这些扫描生成的全面输出。

使用 nmap -sS -sU -O -sV 192.168.1.1 运行完整扫描

在本步骤中,我们将使用 Nmap 对目标 IP 地址进行全面扫描。全面扫描会结合多种扫描类型,以收集有关目标的全面信息。这包括 TCP SYN 扫描(-sS)、UDP 扫描(-sU)、操作系统检测(-O)和服务版本检测(-sV)。

在开始之前,让我们简要解释一下这些 Nmap 选项:

  • -sS:TCP SYN 扫描(也称为隐秘扫描或半开放扫描)。这是一种快速且隐秘的扫描,不会完成 TCP 连接。
  • -sU:UDP 扫描。它会向目标发送 UDP 数据包,并监听响应以确定哪些 UDP 端口是开放的。
  • -O:操作系统检测。它会通过分析目标主机的 TCP/IP 堆栈指纹来尝试识别其操作系统。
  • -sV:服务版本检测。它会确定在开放端口上运行的软件版本。

现在,让我们执行全面扫描命令。我们将扫描 IP 地址 192.168.1.1。请确保目标 IP 地址可从你的 LabEx VM 访问。如果你没有特定的目标,可以使用你自己机器的 IP 地址或本地网络中的测试 IP 地址。

打开你的 Xfce 终端并导航到 ~/project 目录。然后,执行以下命令:

nmap -sS -sU -O -sV 192.168.1.1

此命令将启动对目标 IP 地址 192.168.1.1 的全面扫描。Nmap 将执行 TCP SYN 扫描、UDP 扫描、操作系统检测和服务版本检测。

输出将显示开放端口、在这些端口上运行的服务、目标的操作系统以及其他相关信息。

示例输出(实际输出将因目标而异):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
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)
80/tcp   open  http    Apache httpd 2.4.29 ((Ubuntu))
139/tcp  open  netbios-ssn Samba netbios-ssn (workgroup: WORKGROUP)
445/tcp  open  microsoft-ds Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5353/udp open  mdns    Avahi mDNS/DNS-SD

OS details: Linux 3.2 - 4.9
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   1.20 ms 192.168.1.1

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

此输出显示了开放端口(例如 22、80、139、445)、在这些端口上运行的服务(例如 ssh、http、netbios-ssn、microsoft-ds)以及目标的操作系统(Linux)。UDP 扫描结果显示端口 5353 是开放的。

使用 nmap -sS -sU -sC -p 22,80 127.0.0.1 添加脚本

在本步骤中,我们将通过纳入 Nmap 脚本来增强我们的 Nmap 扫描。Nmap 脚本是强大的工具,可以自动执行各种任务,如漏洞检测、服务枚举等等。-sC 选项告诉 Nmap 使用默认的脚本集。我们还将使用 -p 选项指定要扫描的端口。

在我们继续之前,让我们明确一下 -sC-p 选项的用途:

  • -sC:此选项告诉 Nmap 针对目标运行默认的脚本集。这些脚本旨在提供有关目标上运行的服务的基本信息。
  • -p:此选项允许你指定要扫描的端口。在这种情况下,我们指定的是端口 22 和 80。

现在,让我们执行命令。我们将使用默认脚本扫描本地主机(127.0.0.1)的端口 22 和 80。

打开你的 Xfce 终端并导航到 ~/project 目录。然后,执行以下命令:

nmap -sS -sU -sC -p 22,80 127.0.0.1

此命令将对本地主机(127.0.0.1)的端口 22 和 80 执行 SYN 扫描(-sS)和 UDP 扫描(-sU),并且还会针对这些端口运行默认脚本(-sC)。

输出将显示开放端口、在这些端口上运行的服务以及所执行脚本的结果。

示例输出(实际输出将因本地主机上运行的服务而异):

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.000039s latency).

PORT   STATE SERVICE
22/tcp open  ssh
| ssh-hostkey:
|   2048 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
|_  256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
80/tcp closed http

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

在此示例中,端口 22(SSH)是开放的,并且 ssh-hostkey 脚本提供了有关 SSH 主机密钥的信息。端口 80(HTTP)是关闭的。UDP 扫描未发现任何开放端口。

使用 nmap -sS -sU -T3 192.168.1.1 调整扫描时间

在本步骤中,我们将学习如何使用 -T 选项来调整 Nmap 扫描的时间。-T 选项控制扫描的 aggressiveness(侵略性,这里可理解为扫描的激进程度),这会影响结果的速度和准确性。较高的时间模板可以使扫描更快,但也会增加被检测到或错过一些结果的可能性。

-T 选项接受从 0 到 5 的值,每个值代表不同的时间模板:

  • -T0:偏执模式(非常慢,用于入侵检测系统)
  • -T1:偷偷摸摸模式(慢,避免被检测到)
  • -T2:礼貌模式(减慢扫描速度以避免使目标不堪重负)
  • -T3:正常模式(默认,速度和准确性平衡)
  • -T4:激进模式(快,可能会增加被检测到或结果不准确的风险)
  • -T5:疯狂模式(非常快,被检测到和结果不准确的风险高)

在本步骤中,我们将使用 -T3 选项,它代表“正常”时间模板。这是默认设置,但为了演示目的我们将明确指定它。我们还将对目标 IP 地址 192.168.1.1 执行 SYN 扫描(-sS)和 UDP 扫描(-sU)。

打开你的 Xfce 终端并导航到 ~/project 目录。然后,执行以下命令:

nmap -sS -sU -T3 192.168.1.1

此命令将使用“正常”时间模板对目标 IP 地址 192.168.1.1 执行 SYN 扫描和 UDP 扫描。

输出将显示开放端口以及在这些端口上运行的服务,与之前的扫描类似。主要区别在于扫描将使用默认时间设置进行。

示例输出(实际输出将因目标而异):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0012s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2 (protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.29 ((Ubuntu))
139/tcp  open  netbios-ssn Samba netbios-ssn (workgroup: WORKGROUP)
445/tcp  open  microsoft-ds Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5353/udp open  mdns    Avahi mDNS/DNS-SD

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

此输出与第一步的输出类似,但它展示了如何使用 -T 选项明确设置时间模板。

使用 nmap -v -sS -sU -O 127.0.0.1 添加详细程度

在本步骤中,我们将使用 -v 选项为 Nmap 扫描添加详细输出。详细输出会增加扫描过程中显示的信息量,提供有关扫描过程和结果的更多细节。这对于故障排除或更深入地了解 Nmap 的操作很有帮助。

-v 选项会增加详细程度。你可以多次使用它(例如 -vv)来进一步增加详细程度。

在本步骤中,我们将对目标 IP 地址 127.0.0.1(本地主机)执行 SYN 扫描(-sS)、UDP 扫描(-sU)以及操作系统检测(-O),并使用 -v 选项添加详细输出。

打开你的 Xfce 终端并导航到 ~/project 目录。然后,执行以下命令:

nmap -v -sS -sU -O 127.0.0.1

此命令将以增加的详细程度执行指定的扫描。你将看到有关扫描过程的更详细输出,包括发送的探测、接收到的响应以及操作系统检测尝试。

示例输出(实际输出将因目标及其上运行的服务而异):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
NSE: Loaded 0 scripts for scanning.
Initiating SYN Stealth Scan
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Completed SYN Stealth Scan
Initiating UDP Scan
Scanning localhost (127.0.0.1) [1000 ports]
Completed UDP Scan
Initiating OS detection.
Scanning localhost (127.0.0.1)
Completed OS detection.
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000039s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
5353/udp open  mdns

Device type: General purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.0 - 5.15

Read data files from: /usr/bin/../share/nmap
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.24 seconds

请注意有关扫描过程显示的额外信息,例如“正在发起 SYN 隐蔽扫描”、“已完成 UDP 扫描”以及“正在发起操作系统检测”。这就是增加详细程度的结果。

使用 nmap -sS -sU -sV -oN full.txt 192.168.1.1 保存完整扫描结果

在本步骤中,我们将学习如何使用 -oN 选项将 Nmap 扫描的输出保存到文件中。这对于后续分析或记录扫描结果很有用。

-oN 选项指定输出应以“正常”格式保存到指定文件。“正常”格式是一种易于解析的人类可读格式。

在本步骤中,我们将对目标 IP 地址 192.168.1.1 执行 SYN 扫描(-sS)、UDP 扫描(-sU)以及服务版本检测(-sV),并将输出保存到 ~/project 目录下名为 full.txt 的文件中。

打开你的 Xfce 终端并导航到 ~/project 目录。然后,执行以下命令:

nmap -sS -sU -sV -oN full.txt 192.168.1.1

此命令将执行指定的扫描并将输出保存到 full.txt 文件中。

扫描完成后,你可以使用 cat 命令或像 nano 这样的文本编辑器查看 full.txt 文件的内容。

cat full.txt

nano full.txt

full.txt 文件将包含以人类可读格式呈现的 Nmap 扫描输出。

full.txt 的示例内容(实际内容将因目标而异):

## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023
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)
80/tcp   open  http    Apache httpd 2.4.29 ((Ubuntu))
139/tcp  open  netbios-ssn Samba netbios-ssn (workgroup: WORKGROUP)
445/tcp  open  microsoft-ds Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5353/udp open  mdns    Avahi mDNS/DNS-SD
Service Info: Host: MYSERVER; OS: Linux; CPE: cpe:/o:linux:linux_kernel

## Nmap done at Fri Oct 27 10:20:10 2023 -- 1 IP address (1 host up) scanned in 10.24 seconds

此输出与终端中显示的输出类似,但现在已保存到文件中以供后续使用。

在 Xfce 终端中分析完整输出

在本步骤中,我们将分析在前几步中执行的 Nmap 扫描生成的全面输出。理解输出对于识别潜在漏洞和收集有关目标系统的信息至关重要。我们将专注于在 Xfce 终端中解释 Nmap 输出的关键要素。

首先,让我们回顾一下我们执行的不同类型的扫描及其提供的信息:

  • SYN 扫描(-sS:这是一种隐蔽扫描,可快速识别开放端口,而无需完成 TCP 握手。它对于快速映射目标上的开放端口很有用。
  • UDP 扫描(-sU:此扫描可识别开放的 UDP 端口。UDP 是一种无连接协议,因此此扫描可能比 TCP 扫描可靠性更低且速度更慢。
  • 操作系统检测(-O:此操作尝试确定目标上运行的操作系统。
  • 服务版本检测(-sV:此操作尝试确定在开放端口上运行的服务的版本。
  • 脚本扫描(-sC:此操作执行一组 Nmap 脚本,以识别漏洞并收集有关目标的更多信息。

现在,让我们分析输出。你可以参考上一步中创建的 full.txt 文件,或者重新运行扫描并直接在终端中观察输出。例如,你可以使用 cat 命令查看 full.txt 的内容:

cat ~/project/full.txt

或者,你可以重新运行步骤 1 中的完整扫描命令:

nmap -sS -sU -O -sV 192.168.1.1

在输出中要查找的关键要素:

  • 开放端口:Nmap 将列出目标系统上的开放端口。这是识别正在运行的潜在服务的第一步。
  • 服务信息:Nmap 将尝试识别在每个开放端口上运行的服务。此信息可用于识别这些服务中已知的漏洞。
  • 操作系统:Nmap 将尝试识别目标上运行的操作系统。此信息可用于识别特定于操作系统的漏洞。
  • 扫描延迟:输出显示延迟,即 Nmap 与目标通信所需的时间。较高的延迟可能表示网络拥塞或连接缓慢。

示例输出(实际输出将因目标而异):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:25 UTC
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)
80/tcp   open  http    Apache httpd 2.4.29 ((Ubuntu))
139/tcp  open  netbios-ssn Samba netbios-ssn (workgroup: WORKGROUP)
445/tcp  open  microsoft-ds Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5353/udp open  mdns    Avahi mDNS/DNS-SD
Service Info: Host: MYSERVER; OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS CPE: cpe:/o:linux:linux_kernel
Aggressive OS guesses: Linux 3.10 - 4.11 (95%), Linux 3.16 (95%), Linux 4.4 (95%), Linux 4.6 - 4.7 (95%), Linux 4.8 (95%), Linux 4.9 (95%), Linux 4.12 (95%), Linux 4.13 (95%), Linux 4.14 (95%), Linux 4.15 (95%)
No exact OS matches for host.

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

在此示例输出中:

  • 端口 22 开放并运行 OpenSSH 7.6p0。
  • 端口 80 开放并运行 Apache httpd 2.4.29。
  • 端口 139 和 445 开放并运行 Samba。
  • 端口 5353 开放并运行 Avahi mDNS/DNS-SD。
  • Nmap 对操作系统进行了大胆猜测,表明它可能是 3.10 到 4.15 版本之间的 Linux 内核。

通过仔细分析 Nmap 输出,你可以深入了解目标系统的安全态势。

总结

在本实验中,我们在 Nmap 中执行了全面扫描,结合 TCP SYN 扫描(-sS)、UDP 扫描(-sU)、操作系统检测(-O)和服务版本检测(-sV),以收集有关目标 IP 地址的广泛信息。我们学习了如何使用命令 nmap -sS -sU -O -sV 192.168.1.1 执行完整扫描并解释输出,其中包括开放端口、运行的服务以及目标的操作系统。

此外,本实验还介绍了使用 -sC 添加脚本、使用 -T3 调整扫描时间、使用 -v 增加详细程度以及使用 -oN 将扫描结果保存到文件的方法。这些技术增强了 Nmap 进行详细网络分析和报告的能力。