使用 Nmap 和 DNS 进行 Kali 信息收集

Kali LinuxBeginner
立即练习

介绍

在本实验中,你将学习使用 Kali Linux 进行信息收集的基础知识,重点掌握网络扫描和 DNS 查询技术。通过本次实战体验,你将学习如何使用强大的网络扫描工具 nmap 识别目标系统上的开放端口和服务,并使用 dnsrecon 收集 DNS 信息。本实验专为初学者设计,在运行于独立云主机的安全 LabEx 虚拟机环境中为你提供分步指导。你将执行 nmap 端口扫描、使用脚本枚举服务、查询 DNS 记录,并保存发现的结果以供分析。当你打开终端时,系统会自动连接到 Kali Linux 容器的 Shell,无需手动启动或进入容器即可开始练习。

这是一个引导式实验,提供了分步指令来帮助你学习和练习。请仔细遵循说明完成每个步骤并获得实战经验。历史数据表明,这是一个初学者级别的实验,完成率为 87%。它获得了学习者 100% 的好评率。

安装并运行基础 Nmap 扫描

在第一步中,你将学习如何安装和使用 nmap。这是一个功能强大的网络扫描工具,用于识别目标系统上的开放端口。端口扫描是信息收集中的一项基本技能,能帮助你发现机器上正在运行哪些服务,并可能揭示潜在的漏洞。本步骤专为初学者设计,我们将引导你了解每一个细节。

当你打开 LabEx 虚拟机环境中的终端时,你将自动连接到 Kali Linux 容器的 Shell。无需手动启动容器或进入 Shell,环境已经为你准备就绪。

在开始之前,我们先了解一下 nmap 的作用。nmap 是网络映射器(Network Mapper)的缩写,是一款通过发送数据包并分析响应来发现网络上的主机和服务的工具。开放端口通常意味着正在运行的服务(如 Web 服务器或 SSH),这些服务可能是进一步分析的切入点。

现在,让我们安装 nmap 并执行基础扫描。请仔细按照以下指令操作:

  1. 首先,更新软件包列表以确保你可以安装最新版本的 nmap。在终端中输入以下命令并按回车:

    apt update

    此命令会刷新可用软件包的列表。可能需要几秒钟才能完成,你会看到显示更新过程的输出。

  2. 接下来,输入以下命令安装 nmap 并按回车:

    apt install -y nmap

    -y 参数会自动确认安装,无需提示。等待安装完成,这应该只需要很短的时间。你会看到指示安装进度的输出。

  3. 安装 nmap 后,让我们对 localhost(你自己的容器,IP 地址为 127.0.0.1)运行一次基础扫描,这是一个安全的练习目标。输入以下命令并按回车:

    nmap localhost

    此命令会扫描 localhost 上最常见的端口。几秒钟后,你会看到类似以下的输出(实际输出可能有所不同):

    Starting Nmap 7.91 ( https://nmap.org ) at ...
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00010s latency).
    Not shown: 997 closed ports
    PORT     STATE SERVICE
    80/tcp   open  http
    ...
    Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

    在输出中,Host is up 确认目标是可达的。表格列出了开放端口、它们的状态(open 表示可访问)以及关联的服务(例如端口 80 上的 http)。这些信息有助于你了解系统上正在运行哪些服务。

本步骤向你介绍了如何安装和使用 nmap 进行基础端口扫描。你已经迈出了信息收集的第一步:在安全目标上识别开放端口。在下一步中,我们将在此基础上学习如何保存扫描结果以便进一步分析。在继续之前,请确保你已经掌握了运行 nmap 命令的方法。

将 Nmap 扫描结果保存到文件

既然你已经使用 nmap 完成了基础扫描,现在让我们学习如何将扫描输出保存到文件中,以便日后参考。保存结果是信息收集中的一项重要技能,它允许你记录发现的内容并在以后进行分析,而无需重新运行扫描。本步骤直接建立在前一步的基础上,因此请确保在继续之前已完成基础 nmap 扫描。

Linux 中的输出重定向功能允许你将命令的结果保存到文件,而不是显示在终端中。这是通过使用 > 符号实现的,它会将输出写入指定的文件;如果文件已存在,则会覆盖它。我们将把结果保存在 Kali Linux 容器内的 /root 目录中,这是你的默认工作区域。

按照以下指令保存你的 nmap 扫描结果:

  1. localhost 再次执行 nmap 扫描,并将输出重定向到 /root 目录中名为 nmap_scan.txt 的文件。在终端中输入以下命令并按回车:

    nmap localhost > /root/nmap_scan.txt

    > 符号将 nmap localhost 命令的输出重定向到文件 /root/nmap_scan.txt。你不会在终端中看到扫描结果,因为它们正被保存到文件中。等待几秒钟让扫描完成。

  2. 要确认输出已成功保存,请通过输入以下命令并按回车来查看文件内容:

    cat /root/nmap_scan.txt

    你应该会看到类似以下的输出(实际输出可能有所不同):

    Starting Nmap 7.91 ( https://nmap.org ) at ...
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00010s latency).
    Not shown: 997 closed ports
    PORT     STATE SERVICE
    80/tcp   open  http
    ...
    Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

    这证实了扫描结果已成功保存到 /root/nmap_scan.txt。将输出保存到文件是在信息收集任务中跟踪发现结果的实用方法。

在本步骤中,你学习了如何将 nmap 输出重定向到文件以进行记录。随着我们在下一步中转向更高级的扫描技术,这项技能将非常有用。在继续之前,请确保你能在文件中看到保存的结果。

使用 Nmap 脚本枚举服务

在基础扫描技能的基础上,本步骤将介绍如何使用 nmap 脚本进行服务枚举,以收集有关开放端口上运行服务的详细信息。服务枚举是信息收集的关键部分,因为它有助于识别可能存在已知漏洞的特定服务版本。本步骤假设你已安装 nmap 并完成了之前的扫描。

服务枚举不仅仅是寻找开放端口,它的目标是识别在这些端口上运行的确切软件和版本。nmap 提供了一个名为 NSE(Nmap 脚本引擎)的脚本引擎,其中包含用于检测服务详情和潜在问题的预置脚本。在本步骤中,我们将使用 -sV 参数进行版本检测。

让我们按照以下指令在 localhost 上枚举服务:

  1. localhost 上运行带有版本检测功能的 nmap 扫描。在终端中输入以下命令并按回车:

    nmap -sV localhost

    -sV 参数告诉 nmap 探测开放端口以获取详细的服务和版本信息。等待扫描完成,这可能比基础扫描多花几秒钟。你应该会看到类似以下的输出(实际输出可能有所不同):

    Starting Nmap 7.91 ( https://nmap.org ) at ...
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00010s latency).
    Not shown: 997 closed ports
    PORT     STATE SERVICE VERSION
    80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
    ...
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

    在输出中,你可以看到端口 80 上运行的服务版本,例如 Apache httpd 2.4.41。这些信息非常有价值,因为特定版本可能存在已知漏洞,可以进一步研究。

  2. 将此版本检测扫描的结果保存到 /root 目录中名为 service_scan.txt 的文件。输入以下命令并按回车:

    nmap -sV localhost > /root/service_scan.txt

    与之前一样,> 符号将输出重定向到指定文件。你不会在终端看到结果,因为它们直接保存到了 /root/service_scan.txt

  3. 通过查看文件内容确认输出已保存。输入以下命令并按回车:

    cat /root/service_scan.txt

    你应该会看到与上述相同的详细输出,现在它已存储在文件中供以后参考。

本步骤展示了如何使用 nmap 进行服务枚举,从而更深入地了解目标上运行的服务。在下一步中,我们将使用另一个工具探索 DNS 信息收集。在继续之前,请确保你理解了如何运行版本检测扫描并保存输出。

安装并使用 dnsrecon 查询 DNS

在本步骤中,我们将重点转向使用 dnsrecon 进行 DNS 信息收集。dnsrecon 是一款用于收集域名 DNS 信息的工具。DNS 枚举有助于识别子域名、邮件服务器和其他基础设施细节,这对于了解目标的在线存在情况至关重要。本步骤专为初学者设计,并假设你在 Kali Linux 容器 Shell 中操作。

DNS(域名系统)将 example.com 等域名翻译成计算机通信所使用的 IP 地址。DNS 记录包含诸如主机 IP 地址(A 记录)、邮件服务器(MX 记录)等信息。dnsrecon 是一款通过查询这些记录来揭示域名配置细节的工具。在本实验中,我们将使用 example.com 作为安全的练习目标。

按照以下指令安装并使用 dnsrecon

  1. 更新软件包列表以确保你可以安装最新版本的 dnsrecon。在终端中输入以下命令并按回车:

    apt update

    这会刷新软件包列表。等待过程完成,你会看到显示更新进度的输出。

  2. 输入以下命令安装 dnsrecon 并按回车:

    apt install -y dnsrecon

    -y 参数会自动确认安装。等待安装完成,这应该只需要几秒钟。你会看到显示安装进度的输出。

  3. 安装完成后,对 example.com 运行基础 DNS 枚举。输入以下命令并按回车:

    dnsrecon -d example.com

    -d 选项指定要查询的域名。运行命令后,你会看到类似以下的输出(实际输出可能有所不同):

    [*] Performing General Enumeration of Domain: example.com
    [*] DNSSEC is not configured for example.com
    [*] SOA ns.icann.org 199.4.138.53
    [*] NS ns.icann.org 199.4.138.53
    [*] A example.com 93.184.216.34
    [*] AAAA example.com 2606:2800:220:1:248:1893:25c8:1946
    [*] MX example.com 0 .
    [*] TXT example.com "v=spf1 -all"
    [*] Enumeration Complete.

    此输出显示了 example.com 的各种 DNS 记录,提供了其配置信息:

    • SOA (Start of Authority,起始授权机构记录): 包含有关区域的管理信息。
    • NS (Name Server,名称服务器): 列出了对该域名具有权威性的服务器。
    • A (Address,地址记录): 将域名映射到 IPv4 地址。
    • AAAA (IPv6 地址记录): 将域名映射到 IPv6 地址。
    • MX (Mail Exchanger,邮件交换记录): 指定负责接收该域名电子邮件的邮件服务器。
    • TXT (Text,文本记录): 保存任意文本,通常用于 SPF(发件人策略框架)等验证用途,如此处所示的 (v=spf1 -all)。
  4. 将 DNS 枚举结果保存到 /root 目录中名为 dns_results.txt 的文件。输入以下命令并按回车:

    dnsrecon -d example.com > /root/dns_results.txt

    > 符号将输出重定向到指定文件。你不会在终端看到结果,因为它们直接保存到了 /root/dns_results.txt

  5. 通过查看文件内容确认输出已保存。输入以下命令并按回车:

    cat /root/dns_results.txt

    你应该会看到与上述相同的 DNS 枚举结果,现在已存储在文件中。

本步骤向你介绍了使用 dnsrecon 进行 DNS 信息收集,展示了如何获取关键的域名信息。在下一步中,我们将把你的所有发现整合到一个摘要文件中。在继续之前,请确保你能看到保存的 DNS 结果。

总结

在本实验中,你学习了使用 Kali Linux 工具收集目标系统信息的核心技术。你首先安装并使用了 nmap 对安全的本地目标(localhost)执行基础端口扫描,识别了开放端口及相关的服务(如我们安装的 Apache Web 服务器)。随后,你将这些结果保存到文件中进行记录。接着,你探索了使用 nmap 脚本进行服务枚举以获取详细的版本信息,最后使用 dnsrecon 进行 DNS 信息收集,查询了 example.com 的域名记录。这些在网络扫描和信息获取方面的基础技能对于渗透测试和网络安全审计至关重要。