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
```
图像/输出构件:

屏幕截图显示了列出由 Google 索引的子域名的搜索结果。
结果和分析:
- 公开索引的子域名包括 roadmap、jobs、ctf、status 和 trust。
- 这提供了快速的初始资产映射,且交互风险低。
### TryHackMe 的搜索引擎 OSINT
我对 TryHackMe 应用了相同的搜索查询模式,以检查已索引的子域名。
命令:
```
site:*.tryhackme.com -site:www.tryhackme.com
```
图像/输出构件:

屏幕截图显示了列出由 Google 索引的 TryHackMe 子域名的搜索结果。
结果和分析:
- 索引结果包括 careers、help 和 store 等子域名。
- 这证实了基于索引的可见性,并帮助我优先进行更深入的检查。
### tryhackme.com 的证书透明度
我使用 crt.sh 检查了 tryhackme.com 的证书颁发历史。这是一种读取公共证书日志的被动方法。
命令:
```
crt.sh lookup for tryhackme.com
```
图像/输出构件:

屏幕截图显示了 crt.sh 中列出的为 tryhackme.com 颁发的主机名的证书条目。
结果和分析:
- 证书条目显示了通配符和特定服务的名称。
- CT 日志可以包含当前未被搜索引擎索引的历史名称。
### hackthebox.com 的证书透明度
我根据搜索得出的结果交叉检查了 hackthebox.com 的证书覆盖范围。
命令:
```
crt.sh lookup for hackthebox.com
```
图像/输出构件:

屏幕截图显示了 crt.sh 中列出的为 hackthebox.com 颁发的主机名的证书条目。
结果和分析:
- 从颁发的证书中出现了额外的主机名。
- 这提高了我在主动验证之前对资产覆盖范围的信心。
### 使用 Sublist3r 进行被动枚举
我运行了 Sublist3r,以从多个外部来源收集我个人域名的被动数据。
命令:
```
sublist3r -d jercarlocatallo.com
```
图像/输出构件:

屏幕截图显示了 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。
- 这证实了 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 输出的已解析子域名及其 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, 主动枚举, 侦察技术, 外部攻击面, 子域名枚举, 安全实验, 安全工具库, 实时处理, 密码管理, 搜索引擎挖掘, 攻击面评估, 白帽黑客, 目录模糊测试, 系统安全, 网络安全, 网络安全实验室, 虚拟主机发现, 被动侦察, 证书透明度, 进程管理, 隐私保护, 靶场演练, 黑客教程