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

Kali LinuxBeginner
立即练习

介绍

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

安装并运行基础 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 Scripting Engine)的脚本引擎,其中包含用于检测服务详情和潜在问题的预置脚本。在本步骤中,我们将使用 -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 信息收集,这是一个用于收集域名 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 Address,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 2>&1
    

    > 符号将输出重定向到指定文件,而 2>&1 将标准错误也捕获到同一个文件中。dnsrecon 可能会将扫描详情打印到标准错误流,因此保存两个输出流可确保 /root/dns_results.txt 包含完整结果,而不是空文件。

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

    cat /root/dns_results.txt
    

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

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

总结

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