管理 Nmap 中的输出格式

NmapNmapBeginner
立即练习

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

简介

在本实验中,目标是学习如何在 Nmap 中管理输出格式。你将首先对 IP 地址 192.168.1.1 执行基本扫描,以收集有关开放端口和服务的信息。然后,你将以不同格式保存扫描结果,包括普通文本、XML 和可用于 grep 的输出,还将学习如何将输出追加到现有文件中。最后,你将在 Xfce 文本编辑器中打开结果。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/basic_syntax("Basic Command Syntax") nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") subgraph Lab Skills nmap/basic_syntax -.-> lab-530182{{"管理 Nmap 中的输出格式"}} nmap/output_formats -.-> lab-530182{{"管理 Nmap 中的输出格式"}} nmap/save_output -.-> lab-530182{{"管理 Nmap 中的输出格式"}} nmap/host_discovery -.-> lab-530182{{"管理 Nmap 中的输出格式"}} nmap/service_detection -.-> lab-530182{{"管理 Nmap 中的输出格式"}} end

使用 nmap 对 192.168.1.1 进行基本扫描

在这一步中,我们将使用 Nmap 对 IP 地址 192.168.1.1 进行基本扫描。Nmap 是一个强大的网络扫描工具,用于通过发送数据包并分析响应来发现计算机网络上的主机和服务。基本扫描会提供有关目标的信息,例如开放端口和操作系统详细信息。

首先,让我们了解一下 nmap 命令的基本语法:

nmap [目标]

其中 [目标] 是你要扫描的 IP 地址或主机名。

现在,让我们对 192.168.1.1 进行基本扫描。打开你的终端并执行以下命令:

nmap 192.168.1.1

此命令将启动对目标 IP 地址的扫描。Nmap 将尝试确定哪些端口是开放的、正在运行哪些服务以及目标的操作系统可能是什么。

输出将类似于以下内容(确切输出将根据目标系统而有所不同):

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.00020s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh

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

此输出表明主机 192.168.1.1 处于活动状态,并且端口 22(SSH)是开放的。“Not shown: 999 closed ports”这一行表示 Nmap 为了使输出简洁而未显示 999 个关闭的端口。

使用 nmap -oN scan.txt 127.0.0.1 保存到普通文件

在这一步中,我们将使用 -oN 选项把 Nmap 扫描的输出保存到一个普通文本文件中。这对于存储扫描结果以便后续分析或报告很有用。

-oN 选项告诉 Nmap 将输出以人类可读的格式保存到指定文件。语法如下:

nmap -oN <文件名> <目标>

其中 <文件名> 是你想要保存输出的文件名,<目标> 是你想要扫描的 IP 地址或主机名。

在这种情况下,我们将扫描 127.0.0.1(localhost)并将输出保存到你 ~/project 目录下一个名为 scan.txt 的文件中。

打开你的终端并执行以下命令:

nmap -oN scan.txt 127.0.0.1

扫描完成后,你可以使用文本编辑器或 cat 命令查看 scan.txt 文件的内容。例如:

cat scan.txt

输出将类似于以下内容(确切输出会有所不同):

## Nmap 7.80 scan initiated Tue Oct 27 10:00:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http

## Nmap done at Tue Oct 27 10:00:02 2023 -- 1 IP address (1 host up) scanned in 2.00 seconds

此输出与你在终端上看到的信息相同,但现在它被保存在 scan.txt 文件中以供将来参考。

使用 nmap -oX scan.xml 192.168.1.1 生成 XML 文件

在这一步中,我们将生成一个包含 Nmap 扫描结果的 XML 文件。XML 格式对于以编程方式解析扫描结果很有用,这使得将 Nmap 与其他工具或脚本集成变得更加容易。

-oX 选项告诉 Nmap 将输出以 XML 格式保存到指定文件。语法如下:

nmap -oX <文件名> <目标>

其中 <文件名> 是你要创建的 XML 文件的名称,<目标> 是你要扫描的 IP 地址或主机名。

在这种情况下,我们将扫描 192.168.1.1 并将输出保存到你 ~/project 目录下一个名为 scan.xml 的文件中。

打开你的终端并执行以下命令:

nmap -oX scan.xml 192.168.1.1

扫描完成后,你可以使用文本编辑器或 cat 命令查看 scan.xml 文件的内容。然而,由于它是一个 XML 文件,它将包含大量标记,在纯文本编辑器中可能不太容易阅读。

cat scan.xml

输出将是一个大型 XML 文档,包含有关扫描的详细信息,包括主机详细信息、开放端口、服务版本等等。你可以使用像 xmllint 这样的工具来格式化和验证 XML 文件,或者使用像 Python 这样的编程语言以及 xml.etree.ElementTree 这样的库来解析数据。

此 XML 输出是为自动化处理而设计的,并非供人阅读。

使用 nmap -oG scan.grep 127.0.0.1 创建可通过 grep 搜索的输出

在这一步中,我们将从 Nmap 扫描生成一个可通过 grep 搜索的输出文件。这种格式专门设计用于便于被 grepawksed 等命令行工具解析,这使得它在脚本编写和自动化分析中很方便。

-oG 选项告诉 Nmap 将输出以可通过 grep 搜索的格式保存到指定文件。语法如下:

nmap -oG <文件名> <目标>

其中 <文件名> 是你要将可通过 grep 搜索的输出保存到的文件名,<目标> 是你要扫描的 IP 地址或主机名。

在这种情况下,我们将扫描 127.0.0.1(localhost)并将输出保存到你 ~/project 目录下一个名为 scan.grep 的文件中。

打开你的终端并执行以下命令:

nmap -oG scan.grep 127.0.0.1

扫描完成后,你可以使用文本编辑器或 cat 命令查看 scan.grep 文件的内容。

cat scan.grep

输出将采用一种易于用 grep 解析的格式。例如:

## Nmap 7.80 scan initiated Tue Oct 27 10:00:00 2023
## Nmap scan report for localhost (127.0.0.1)
Host: 127.0.0.1 (localhost)	Status: Up
Host: 127.0.0.1 (localhost)	Ports: 22/open/tcp//ssh///, 80/open/tcp//http///
## Nmap done at Tue Oct 27 10:00:02 2023 -- 1 IP address (1 host up) scanned in 2.00 seconds

现在,你可以使用 grep 在文件中搜索特定信息。例如,要查找所有开放端口,你可以使用以下命令:

grep "Ports:" scan.grep

这将输出包含开放端口的行:

Host: 127.0.0.1 (localhost)	Ports: 22/open/tcp//ssh///, 80/open/tcp//http///

可通过 grep 搜索的输出格式提供了一种简单而高效的方法,用于从 Nmap 扫描结果中提取特定数据以进行进一步处理。

使用 nmap -oN scan.txt --append-output 192.168.1.1 追加输出

在这一步中,我们将把 Nmap 扫描的输出追加到一个现有文件中。当你想要将多次扫描的结果合并到一个文件中,而不覆盖之前的结果时,这会很有用。

我们将使用 -oN 选项以正常格式保存输出,并使用 --append-output 选项将输出追加到指定文件。

首先,回顾一下,在之前的步骤中,我们创建了一个名为 scan.txt 的文件,其中包含对 127.0.0.1 的扫描结果。现在,我们将把对 192.168.1.1 的扫描结果追加到同一个文件中。

打开你的终端并执行以下命令:

nmap -oN scan.txt --append-output 192.168.1.1

扫描完成后,输出将被追加到 scan.txt 文件中。你可以使用文本编辑器或 cat 命令查看 scan.txt 文件的内容。

cat scan.txt

你应该会在文件中看到两次扫描的结果。第一部分将是对 127.0.0.1 的扫描,第二部分将是对 192.168.1.1 的扫描。

--append-output 选项确保新的扫描结果被添加到文件末尾,保留之前的内容。这与不使用 --append-output 而使用 -oN scan.txt 192.168.1.1 不同,后者会覆盖现有的 scan.txt 文件。

在 Xfce 文本编辑器中打开结果

在这一步中,我们将在 Xfce 文本编辑器中打开 Nmap 扫描结果。这使你能够在图形环境中查看和分析扫描输出。

Xfce 文本编辑器名为 mousepad。我们可以使用它来打开我们在前面步骤中创建的文件,例如 scan.txtscan.xmlscan.grep

要从终端在 mousepad 中打开文件,请使用以下命令:

mousepad <文件名>

其中 <文件名> 是你要打开的文件的名称。

首先,让我们打开 scan.txt 文件。在你的终端中,执行以下命令:

mousepad scan.txt

这将在 mousepad 文本编辑器中打开 scan.txt 文件。现在你可以滚动浏览该文件并检查 Nmap 扫描结果。

接下来,让我们打开 scan.xml 文件。在你的终端中,执行以下命令:

mousepad scan.xml

这将在 mousepad 中打开 scan.xml 文件。此文件包含 XML 格式的扫描结果,这对于使用脚本和其他工具进行解析很有用。

最后,让我们打开 scan.grep 文件。在你的终端中,执行以下命令:

mousepad scan.grep

这将在 mousepad 中打开 scan.grep 文件。此文件包含可通过 grep 搜索的格式的扫描结果,这对于使用 grep 等命令行工具搜索和过滤结果很有用。

使用像 mousepad 这样的文本编辑器提供了一种在图形环境中查看和分析 Nmap 扫描结果的便捷方式。

总结

在本实验中,参与者学习了如何管理 Nmap 中的输出格式。他们首先对 IP 地址 192.168.1.1 进行了基本扫描,以收集有关开放端口和服务的信息。然后,他们将扫描结果保存为不同的格式:使用 -oN 保存为普通文本,使用 -oX 保存为 XML,使用 -oG 保存为可通过 grep 搜索的输出。他们还学习了使用 --append-output 选项将输出追加到现有文件中。最后,他们在 Xfce 文本编辑器中打开结果进行查看。