jercatallo/lab-subdomain-enumeration

GitHub: jercatallo/lab-subdomain-enumeration

一个系统比较被动OSINT与主动枚举技术的子域名发现实验室,覆盖搜索引擎、证书透明度、DNS暴力破解和虚拟主机模糊测试等多种方法。

Stars: 0 | Forks: 0

# 子域名枚举实验室 ## 目录 - [概述](#overview) - [实验目标](#lab-goals) - [道德考量](#ethical-considerations) - [演示](#demonstration) - [HackTheBox 的搜索引擎 OSINT](#search-engine-osint-for-hackthebox) - [TryHackMe 的搜索引擎 OSINT](#search-engine-osint-for-tryhackme) - [tryhackme.com 的证书透明度](#certificate-transparency-on-tryhackmecom) - [hackthebox.com 的证书透明度](#certificate-transparency-on-hacktheboxcom) - [使用 Sublist3r 进行被动枚举](#passive-enumeration-with-sublist3r) - [使用 ffuf 进行虚拟主机发现](#virtual-host-discovery-with-ffuf) - [使用 Gobuster 进行主动 DNS 暴力破解](#active-dns-brute-force-with-gobuster) - [关键发现](#key-findings) - [总结](#summary) ## 概述 本实验室涵盖了被动和主动的子域名枚举技术。我比较了每种方法在外部攻击面中所展示的信息。 ## 实验目标 - 从搜索引擎和证书日志等公共数据源中查找子域名。 - 检查证书数据如何通过 crt.sh 显示额外的基础设施。 - 比较使用 Sublist3r 的被动枚举与使用 Gobuster 的主动 DNS 暴力破解。 - 使用 ffuf 运行虚拟主机模糊测试,以发现在 DNS 记录中不可见的主机名。 ## 道德考量 子域名枚举是一项侦察活动。它具有法律和操作上的影响。我在每次项目中都遵循以下规则: - 授权是强制性的。 未经书面许可进行主动 DNS 暴力破解或主机头模糊测试可能会违反 CFAA 等法律及地方法规。 - 被动并不总是意味着无害。 被动 OSINT 仍然可能暴露敏感信息。我会谨慎处理。 - 速率限制很重要。 我使用较低的线程数(例如 `-t 1`)并在请求之间设置等待时间,以避免服务中断。 - 范围验证是必需的。 发现的主机不会自动纳入范围内。我会根据批准的范围清单检查每个资产。 - 负责任的披露适用。 我通过适当的授权渠道报告无意中暴露的基础设施。 本实验室中的所有活动均针对以下目标运行: - 个人域名,由我拥有。 - TryHackMe 实验室环境,经过授权的训练基础设施。 ## 演示 ### HackTheBox 的搜索引擎 OSINT 我运行了一个搜索查询来查找 HackTheBox 已索引的子域名。这是一种与目标无直接接触的被动方法。 命令: ``` site:*.hackthebox.com -site:www.hackthebox.com ``` 图像/输出构件: ![显示 HackTheBox 已索引子域名(如 roadmap、jobs、ctf、status 和 trust)的 Google dork 结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e3b36f5801120703.png) 屏幕截图显示了列出由 Google 索引的子域名的搜索结果。 结果和分析: - 公开索引的子域名包括 roadmap、jobs、ctf、status 和 trust。 - 这提供了快速的初始资产映射,且交互风险低。 ### TryHackMe 的搜索引擎 OSINT 我对 TryHackMe 应用了相同的搜索查询模式,以检查已索引的子域名。 命令: ``` site:*.tryhackme.com -site:www.tryhackme.com ``` 图像/输出构件: ![显示 TryHackMe 已索引子域名(如 careers、help 和 store)的 Google dork 结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/241ffba55a120710.png) 屏幕截图显示了列出由 Google 索引的 TryHackMe 子域名的搜索结果。 结果和分析: - 索引结果包括 careers、help 和 store 等子域名。 - 这证实了基于索引的可见性,并帮助我优先进行更深入的检查。 ### tryhackme.com 的证书透明度 我使用 crt.sh 检查了 tryhackme.com 的证书颁发历史。这是一种读取公共证书日志的被动方法。 命令: ``` crt.sh lookup for tryhackme.com ``` 图像/输出构件: ![tryhackme.com 的 crt.sh 结果,显示了带有通配符和特定服务名称的证书条目](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b1783158df120717.png) 屏幕截图显示了 crt.sh 中列出的为 tryhackme.com 颁发的主机名的证书条目。 结果和分析: - 证书条目显示了通配符和特定服务的名称。 - CT 日志可以包含当前未被搜索引擎索引的历史名称。 ### hackthebox.com 的证书透明度 我根据搜索得出的结果交叉检查了 hackthebox.com 的证书覆盖范围。 命令: ``` crt.sh lookup for hackthebox.com ``` 图像/输出构件: ![hackthebox.com 的 crt.sh 结果,显示了来自已颁发证书的额外主机名](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/4cdf3653fc120728.png) 屏幕截图显示了 crt.sh 中列出的为 hackthebox.com 颁发的主机名的证书条目。 结果和分析: - 从颁发的证书中出现了额外的主机名。 - 这提高了我在主动验证之前对资产覆盖范围的信心。 ### 使用 Sublist3r 进行被动枚举 我运行了 Sublist3r,以从多个外部来源收集我个人域名的被动数据。 命令: ``` sublist3r -d jercarlocatallo.com ``` 图像/输出构件: ![jercarlocatallo.com 的 Sublist3r 结果,显示了 3 个发现的子域名](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/702405258c120737.png) 屏幕截图显示了 Sublist3r 的输出,包含发现的子域名和来源信息。 结果和分析: - 发现了 3 个唯一的子域名: - www.jercarlocatallo.com - m.jercarlocatallo.com - jercarlocatallo.com - 有一个来源 阻止了收集期间的请求,但仍然返回了输出。 - 被动输出的质量取决于来源的可用性和速率限制。 ### 使用 ffuf 进行虚拟主机发现 我使用 ffuf 进行主动主机头模糊测试,以在 TryHackMe 实验室环境中发现目标 IP 背后的主机名。 命令: ``` ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt \ -H "Host: FUZZ.acmeitsupport.thm" \ -u http://10.48.142.81 \ -fs 2395 ``` 图像/输出构件: ![ffuf 虚拟主机模糊测试结果,显示了 delta 和 yellow 虚拟主机](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/69058d1b52120746.png) 屏幕截图显示了 ffuf 的输出,包含两个发现的虚拟主机及其响应大小。 结果和分析: - 发现了两个虚拟主机:delta 和 yellow。 - 这证实了 HTTP 层的发现可以暴露在公共 OSINT 数据集中不可见的主机。 ### 使用 Gobuster 进行主动 DNS 暴力破解 我运行了 Gobuster 进行直接 DNS 暴力破解,以发现被动源未捕获到的子域名。 命令: ``` gobuster dns \ -d jercarlocatallo.com \ -w subdomains-top1million-5000.txt \ -t 1 \ --resolver 8.8.8.8 \ --protocol tcp ``` 命令解释: 标准 DNS 通常使用 UDP,在负载下可能会丢弃数据包。TCP 减少了超时噪音,并提高了基于字典的枚举的一致性。 图像/输出构件: ![Gobuster DNS 暴力破解结果,显示了 jercarlocatallo.com 的 8 个已解析子域名](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/4f516ccb0c120754.png) 屏幕截图显示了 Gobuster 输出的已解析子域名及其 IP 地址。 结果和分析: - 解析了 8 个子域名: | 子域名 | 解析的 IP | |---|---| | www.jercarlocatallo.com | 64.29.17.X (公网 IP) | | mail.jercarlocatallo.com | 127.0.0.1 | | dev.jercarlocatallo.com | 127.0.0.1 | | admin.jercarlocatallo.com | 127.0.0.1 | | vpn.jercarlocatallo.com | 127.0.0.1 | | api.jercarlocatallo.com | 127.0.0.1 | | staging.jercarlocatallo.com | 127.0.0.1 | | uat.jercarlocatallo.com | 127.0.0.1 | - 某些词产生了 I/O 超时,这是预期的解析器噪音。 - 扫描完成了 4,989 个词。 - 环回结果指示了本地配置的 DNS 条目,这些条目可能映射到非公共基础设施。 ## 关键发现 - 没有任何单一方法本身是完整的。 - 搜索引擎速度快,但仅限于已索引的资产。 - crt.sh 通过证书历史记录提供了更深层次的主机名可见性。 - Sublist3r 发现了 3 个公开已知的子域名。 - Gobuster 发现了 8 个子域名,包括被动结果中不可见的基础设施名称。 - 使用带有 `-t 1` 的 `--protocol tcp` 提高了可靠性并降低了遗漏风险。 - ffuf 识别出了可能不会出现在 DNS 记录中的 HTTP 虚拟主机。 关键观察: Sublist3r 从第三方数据中发现了 m.jercarlocatallo.com,但它遗漏了 Gobuster 通过直接 DNS 解析发现的基础设施子域名。 ## 总结 本实验室证实了外部侦察的核心原则。被动技术展示了公共数据源所知道的信息。主动技术展示了 DNS 和应用程序行为所暴露的信息。我结合这两种方法来提高攻击面的可见性并减少盲点。
标签:ESC4, ffuf, HackTheBox, OSINT, Sublist3r, TryHackMe, 主动枚举, 侦察技术, 外部攻击面, 子域名枚举, 安全实验, 安全工具库, 实时处理, 密码管理, 搜索引擎挖掘, 攻击面评估, 白帽黑客, 目录模糊测试, 系统安全, 网络安全, 网络安全实验室, 虚拟主机发现, 被动侦察, 证书透明度, 进程管理, 隐私保护, 靶场演练, 黑客教程