使用 Nmap 和 DNS 进行 Kali 侦察

Kali LinuxKali LinuxBeginner
立即练习

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

介绍

在这个实验中,你将学习使用 Kali Linux 进行侦察的基本知识,重点是网络扫描和 DNS 查询技术。这个实践经验将指导你使用 nmap(一个强大的网络扫描工具)识别目标系统上的开放端口和服务,并使用 dnsrecon 收集 DNS 信息。这个实验专为初学者设计,在运行于独立云主机上的安全 LabEx VM 环境中提供逐步指导。你将使用 nmap 执行端口扫描,使用脚本枚举服务,查询 DNS 记录,并保存你的发现以供分析。当你打开终端时,你将自动连接到 Kali Linux 容器的 shell(命令行解释器),无需手动启动或进入容器即可开始练习。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kali(("Kali")) -.-> kali/KaliGroup(["Kali"]) kali/KaliGroup -.-> kali/term_ops("Kali Terminal") kali/KaliGroup -.-> kali/file_ctrl("File Management") kali/KaliGroup -.-> kali/pkg_ops("Package Management") kali/KaliGroup -.-> kali/nmap_ops("Nmap Tool") kali/KaliGroup -.-> kali/bash_code("Bash Scripting") subgraph Lab Skills kali/term_ops -.-> lab-552298{{"使用 Nmap 和 DNS 进行 Kali 侦察"}} kali/file_ctrl -.-> lab-552298{{"使用 Nmap 和 DNS 进行 Kali 侦察"}} kali/pkg_ops -.-> lab-552298{{"使用 Nmap 和 DNS 进行 Kali 侦察"}} kali/nmap_ops -.-> lab-552298{{"使用 Nmap 和 DNS 进行 Kali 侦察"}} kali/bash_code -.-> lab-552298{{"使用 Nmap 和 DNS 进行 Kali 侦察"}} end

安装并运行基本的 Nmap 扫描

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

当你在 LabEx VM 环境中打开终端时,你将自动连接到 Kali Linux 容器的 shell(命令行解释器)。无需手动启动容器或进入 shell;环境已经为你设置好了。

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

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

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

    apt update

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

  2. 接下来,通过键入以下命令并按 Enter 键来安装 nmap

    apt install -y nmap

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

  3. 安装 nmap 后,让我们在 localhost(你自己的容器,IP 地址 127.0.0.1)上运行基本扫描,这是一个安全的练习目标。键入以下命令,然后按 Enter 键:

    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 的文件。在终端中键入以下命令,然后按 Enter 键:

    nmap localhost > /root/nmap_scan.txt

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

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

    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,Nmap 脚本引擎) 的脚本引擎,其中包括预构建的脚本,用于检测服务详细信息和潜在问题。在本步骤中,我们将使用 -sV 标志进行版本检测。

让我们按照以下说明枚举 localhost 上的服务:

  1. localhost 上运行带有版本检测的 nmap 扫描。在终端中键入以下命令,然后按 Enter 键:

    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 的文件中。在终端中键入以下命令,然后按 Enter 键:

    nmap -sV localhost > /root/service_scan.txt

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

  3. 通过查看文件内容来确认输出已保存。键入以下命令,然后按 Enter 键:

    cat /root/service_scan.txt

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

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

使用 dnsrecon 安装和查询 DNS

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

DNS(Domain Name System,域名系统)将域名(如 example.com)转换为计算机用于通信的 IP 地址。DNS 记录包括主机(A 记录)、邮件服务器(MX 记录)等的 IP 地址等信息。dnsrecon 是一种查询这些记录以发现有关域设置详细信息的工具。在本实验中,我们将使用 example.com 作为安全的练习目标。

请按照以下说明安装和使用 dnsrecon

  1. 更新软件包列表,以确保你可以安装最新版本的 dnsrecon。在终端中键入以下命令,然后按 Enter 键:

    apt update

    这将刷新软件包列表。等待该过程完成;你将看到指示更新进度的输出。

  2. 通过键入以下命令并按 Enter 键来安装 dnsrecon

    apt install -y dnsrecon

    -y 标志会自动确认安装。等待安装完成;它应该只需要几秒钟。你将看到显示安装进度的输出。

  3. 安装完成后,在 example.com 上运行基本的 DNS 枚举。键入以下命令,然后按 Enter 键:

    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 (Sender Policy Framework,发件人策略框架),此处显示为 (v=spf1 -all)。
  4. 将 DNS 枚举结果保存到 /root 目录中名为 dns_results.txt 的文件中。键入以下命令,然后按 Enter 键:

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

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

  5. 通过查看文件内容来确认输出已保存。键入以下命令,然后按 Enter 键:

    cat /root/dns_results.txt

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

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

总结

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