执行 Nmap 扫描并以不同格式保存结果

CybersecurityCybersecurityBeginner
立即练习

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

简介

在这个实验中,你将学习如何使用 Nmap(一款强大的网络扫描工具)进行基本的网络侦察。Nmap 是安全专业人员的关键工具,有助于发现网络上的主机、服务和潜在漏洞。

了解如何以不同格式保存 Nmap 扫描结果对于安全评估和报告至关重要。通过掌握这项技能,你可以记录发现的问题、与团队成员共享结果、将数据导入其他工具,并创建全面的安全报告。这个适合初学者的实验将指导你完成基本的 Nmap 扫描,并以各种格式保存结果,让你掌握必要的网络安全评估技能。

执行首次 Nmap 扫描并保存输出

在这一步中,你将学习如何执行基本的 Nmap 扫描,并将结果保存到文本文件中。记录网络侦察活动至关重要,因为它能帮助你跟踪发现的信息,还可用于未来参考或报告。因此,掌握这项技能对于任何对网络安全感兴趣的人来说都是必不可少的。

了解 Nmap 基础

Nmap 是 Network Mapper 的缩写,它是一款功能强大且广泛使用的免费开源工具。其主要用途是进行网络发现和安全审计。它通过向目标网络或主机发送原始 IP 数据包来工作。根据收到的响应,Nmap 可以获取大量信息。它能告诉你网络上哪些主机可用、这些主机提供哪些服务(如 Web 服务器、电子邮件服务器等)、它们运行的操作系统是什么,以及许多其他重要特征。当你试图了解网络的安全状况时,这些信息非常有价值。

创建扫描结果目录

首先,打开一个终端窗口。默认情况下,终端应该已经位于 /home/labex/project 目录中。你需要一个专门的地方来存储所有 Nmap 扫描的结果,这样可以更方便地组织和管理数据。因此,使用以下命令创建一个目录:

mkdir -p /home/labex/project/scans

mkdir 命令中的 -p 标志非常有用,它能确保即使父目录不存在,也能创建指定的目录。在这个例子中,父目录已经存在,但使用这个标志是个好习惯,以防你将来需要创建更复杂的目录结构。如果命令执行成功,你不会看到任何输出,这是正常的,意味着目录已经创建成功。

运行基本的 Nmap 扫描

为了演示,我们将扫描本地主机(即你自己的机器)的 9999 端口。在现实场景中,你需要获得适当的授权才能扫描实际的网络主机。未经授权的扫描是不道德的,甚至可能是违法的。

现在,运行一个基本的 Nmap 扫描,并将输出保存到文本文件中。执行以下命令:

nmap -p 9999 localhost -oN /home/labex/project/scans/initial_scan.txt

下面来分解这个命令,了解每个部分的作用:

  • nmap:这是启动 Nmap 工具的命令,它告诉系统你要使用 Nmap 进行网络扫描。
  • -p 9999-p 选项用于指定要扫描的端口。在这个例子中,你要扫描 9999 端口。
  • localhost:这是扫描的目标。由于使用的是 localhost,你正在扫描自己的机器。
  • -oN /home/labex/project/scans/initial_scan.txt-oN 选项用于以“正常”格式保存输出。路径 /home/labex/project/scans/initial_scan.txt 指定了输出文件的保存位置。

运行命令后,你应该会看到类似以下的输出:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-30 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE  SERVICE
9999/tcp closed unknown

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

查看保存的扫描结果

现在你已经运行了扫描并将结果保存到文件中,接下来检查结果是否正确记录。可以使用 cat 命令查看保存文件的内容:

cat /home/labex/project/scans/initial_scan.txt

你看到的输出应该与运行扫描时终端中显示的内容相似。这个文件现在是你网络侦察活动的记录,你可以在需要查看信息时随时参考它。

理解扫描结果

扫描结果包含几个重要信息:

  • 扫描执行的时间:这有助于你跟踪网络侦察的时间线。
  • 扫描的目标:在这个例子中,是 localhost
  • 主机的状态:它会告诉你主机是在线(可访问)还是离线(不可访问)。
  • 指定端口的状态:端口状态可以是开放、关闭或被过滤。开放端口意味着有服务在该端口上监听,关闭端口意味着没有服务监听,被过滤端口意味着该端口被防火墙或其他安全设备阻止。
  • 通常与该端口关联的服务:例如,80 端口通常与 HTTP 服务关联。
  • 扫描持续时间的统计信息:这能让你了解扫描花费了多长时间。

现在你已经成功执行了第一次 Nmap 扫描,并将结果保存到文件中以便记录。下一步,你将探索 Nmap 支持的不同输出格式。

以 XML 格式保存 Nmap 扫描结果

在这一步中,你将学习如何以 XML 格式保存 Nmap 扫描的结果。XML(可扩展标记语言)是一种结构化的数据格式,就像一个组织有序的文件柜,每个信息都有自己的标签抽屉。这种结构使得其他安全工具和脚本能够轻松处理这些数据。在网络安全领域,自动化是关键,拥有能够轻松集成到自动化工作流程中的数据格式非常有价值。

了解不同的输出格式

Nmap 是一款强大的网络扫描工具,支持多种输出格式。每种格式都有其独特的特点和使用场景。

  1. 普通输出 (-oN):这是一种人类可读的格式。在上一步中,你使用这种格式以易于理解的方式查看扫描结果。它以简单的文本形式呈现信息。
  2. XML 输出 (-oX):如前所述,XML 是一种结构化格式。它使用标签和元素以层次结构的方式排列数据,这使得其他程序能够轻松解析和提取特定信息。
  3. 可 grep 输出 (-oG):这种格式设计用于便于像 grep 这样的命令行工具处理。如果你想在扫描结果中快速搜索特定模式,可 grep 输出非常有用。
  4. 脚本小子输出 (-oS):这是一种更适合“脚本小子”的格式,但在专业的安全评估中很少使用。

在专业的安全评估中,XML 格式经常被使用。原因是它可以导入到其他安全工具中进行进一步分析。例如,你可以将 Nmap 扫描的 XML 输出用于漏洞管理系统,以更深入地了解网络的安全状况。

运行输出为 XML 格式的 Nmap 扫描

现在,再次对本地主机的 9999 端口进行扫描,但这次将输出保存为 XML 格式。以下是命令:

nmap -p 9999 localhost -oX /home/labex/project/scans/advanced_scan.xml

下面来分解这个命令,了解每个部分的作用:

  • nmap:这是运行 Nmap 工具的命令,是所有网络扫描操作的起点。
  • -p 9999-p 选项用于指定要扫描的端口。在这个例子中,你要扫描 9999 端口。
  • localhost:这是扫描的目标。localhost 指的是你的本地机器,所以你正在扫描自己机器的 9999 端口。
  • -oX /home/labex/project/scans/advanced_scan.xml-oX 选项告诉 Nmap 以 XML 格式保存输出。路径 /home/labex/project/scans/advanced_scan.xml 指定了 XML 文件的保存位置。

运行此命令时,你应该会看到与第一步类似的输出。但现在,结果也以 XML 格式保存在指定的文件中。

查看 XML 输出

让我们看看刚刚创建的 XML 文件的内容。可以使用 cat 命令显示文件内容:

cat /home/labex/project/scans/advanced_scan.xml

输出将是 XML 格式,看起来与普通输出有很大不同。XML 使用标签和元素来组织数据,这种结构使计算机能够轻松解析信息。以下是一个简化的示例,展示你可能看到的内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<nmaprun scanner="nmap" args="nmap -p 9999 localhost -oX /home/labex/project/scans/advanced_scan.xml" start="1635598800" startstr="Sat Oct 30 12:00:00 2023" version="7.80" xmloutputversion="1.04">
<scaninfo type="syn" protocol="tcp" numservices="1" services="9999"/>
<verbose level="0"/>
<debugging level="0"/>
<host starttime="1635598800" endtime="1635598800">
<status state="up" reason="localhost-response" reason_ttl="0"/>
<address addr="127.0.0.1" addrtype="ipv4"/>
<hostnames>
<hostname name="localhost" type="user"/>
<hostname name="localhost" type="PTR"/>
</hostnames>
<ports>
<port protocol="tcp" portid="9999">
<state state="closed" reason="conn-refused" reason_ttl="0"/>
<service name="unknown" method="table" conf="3"/>
</port>
</ports>
<times srtt="97" rttvar="5000" to="100000"/>
</host>
<runstats>
<finished time="1635598800" timestr="Sat Oct 30 12:00:00 2023" elapsed="0.07" summary="Nmap done at Sat Oct 30 12:00:00 2023; 1 IP address (1 host up) scanned in 0.07 seconds" exit="success"/>
<hosts up="1" down="0" total="1"/>
</runstats>
</nmaprun>

XML 输出的优势

XML 格式具有以下几个优点:

  1. 结构化数据:XML 中的信息以层次结构组织,每个元素与其他元素都有明确的关系,便于理解数据的组织方式。
  2. 机器可读:其他程序和脚本可以轻松解析 XML 数据,这使得它能够与安全工作流程中的不同工具无缝集成。
  3. 集成性:XML 输出可以导入到其他安全工具中,如 Metasploit、OpenVAS 或自定义安全仪表盘,从而将 Nmap 扫描结果与其他安全分析工具结合使用。
  4. 数据转换:你可以将 XML 数据转换为其他格式,如 HTML 或 PDF,这对于创建易于共享和展示的报告非常有用。
  5. 数据提取:使用 XML 解析工具,你可以从 XML 文件中提取特定信息,例如所有开放端口或特定主机的详细信息。

实际应用

在实际的安全评估中,以 XML 格式保存扫描结果非常有用。以下是一些实际应用场景:

  • 导入到漏洞管理系统:你可以将 XML 输出导入到漏洞管理系统中,以全面了解网络的安全漏洞。
  • 使用 XSLT 转换创建自定义报告:XSLT(可扩展样式表语言转换)可用于将 XML 数据转换为自定义报告,使你能够以最符合需求的方式呈现信息。
  • 使用自动化脚本处理以提取特定信息:你可以编写自动化脚本来解析 XML 文件并提取特定信息,例如特定服务上所有开放端口的主机。
  • 与团队成员或客户共享结构化数据:XML 数据可以轻松与他人共享,团队成员或客户可以使用这些结构化数据进行自己的分析。
  • 维护网络侦察数据库:你可以将 XML 文件存储在数据库中,以记录一段时间内的网络侦察活动。

通过学习以不同格式保存 Nmap 输出,你在提升网络安全技能方面迈出了重要一步。这些格式使你能够有效地记录发现的信息,并与工作流程中的其他安全工具集成。

总结

在本次实验中,你学习了使用 Nmap 进行网络侦察记录的重要技能。你成功地对本地主机的特定端口执行了基本的 Nmap 扫描,并将扫描结果以普通文本和 XML 格式保存。文本格式便于人类阅读,而 XML 格式则便于与其他安全工具集成和进行自动化处理。

这些技能对于安全专业人员记录发现、生成报告和共享结果至关重要。以不同格式保存扫描结果可以有效管理网络侦察数据,并无缝集成到安全工作流程中。随着你在网络安全领域的不断发展,对安全测试进行妥善记录将与测试本身一样重要。能够以各种格式保存 Nmap 输出,使你可以根据不同场景选择最合适的格式。