如何找到网站的子域?

信息安全 dns dns 域 子域 侦察
2021-08-26 16:15:44

例如,我需要不时做的一件事是查找站点的子域。

example.com开始

  • sub1.example.com
  • 其他.example.com
  • 另一个.example.com

我正在寻找对这些目标执行侦察的任何其他方法,并且我想获取域的所有子域的列表。

我目前正在做很多事情,包括

  • 使用 maltego 抓取信息
  • 使用搜索引擎搜索子域
  • 抓取网站链接
  • 检查 DNS 记录
  • 检查配置不正确的 SSL 证书
  • 猜测诸如“vpn.example.com”之类的东西

我认为到目前为止我发现的不止这些,但现在我没有想法了。

4个回答

作为能够找到站点子域的渗透测试者经常出现。所以我写了一个工具, SubBrute,如果我自己这么说的话,它做得很好。简而言之,这比其他工具 (fierce2) 更好,因为它更快、更准确且更易于使用该工具附带一个从网络爬取获得的真实子域列表。这个子域列表的大小是猛烈2 的 16 倍以上,subbrute 大约需要 15 分钟才能在家庭连接上耗尽这个列表。输出是一个干净的换行符分隔列表,很容易用作其他工具(如 nmap 或 Web 应用程序漏洞扫描器)的输入。

1. 区域转移

一些域名服务器允许将 DNS 区域传输给 Internet 上的任何人,通常是无意的。在这个问题中,进一步解释:DNS 区域传输攻击

区域转移工具

该问题的第二个答案提到了如何在 Windows 和 Linux 上测试它:

视窗:

nslookup
> server <DNS you are querying>
> set type=any
> ls -d <target>

Unix(在 Unix 上不推荐使用 nslookup):

dig -t axfr @<DNS you are querying> <target>

(我编辑了 Unix,因为-axfr它似乎不起作用。我需要指定-t axfr。)

2. DNSSEC 区域漫游

DNSSEC 签署 DNS 记录,因此您可以确保收到正确的答案(好吧,考虑到一些信任根和中介)。但是您如何证明某些东西不存在,例如在寻找时nonexistentsub.example.com,名称服务器如何example.com证明子域不存在?它上面没有签名密钥(签名是在管理员更新区域时完成的)。

在他们对DNSSec 如何工作的回答中?是否存在已知限制或问题?, /u/tylerl解释说:

显然,响应需要签名,但通常 DNS 服务器本身无法访问您的签名密钥,也无法即时签署响应;签名都是提前“离线”创建的。如果您的 DNS 服务器受到威胁,这可以防止您的密钥被泄露。

因此,您将子域按字母顺序排列,并说“对于 mail.example.com 和 pop.example.com 之间的每个名称,不存在其他子域”并签署该断言。然后,当有人询问 nachos.example.com 时,您可以只给他们回复(已经签名)并且客户知道因为 nachos.example.com 按字母顺序位于 mail.example.com 和 pop.example.com 之间,那么“这个域不存在”的响应被认为是正确签名的并且实际上来自你。

这成为问题的地方在于,通过一组明确指出“X 和 Y 之间不存在任何响应”的负面响应,您可以轻松地准确绘制出整个区域存在哪些域。您知道存在“X” ,并且你知道“Y”存在,并且你知道它们之间没有其他任何东西。只要再随机戳一下,你就可以快速编译出所有确实存在的记录的列表。

指定“直到 pop.example.com 什么都没有”的记录称为 NSEC(下一个 SECure 记录)。

为此设计了一个解决方法:NSEC3。它对名称进行哈希处理,因此mail变成b83a88...pop变成b21afc.... 想象一下,这是仅有的两个子域,然后签名的响应会说“b21afc...和之间不存在记录b83a88...”。它再次按字母顺序工作,您可以全部获取它们,但这次您需要先破解每个哈希,然后才能了解子域是什么。

根据我的经验,大多数都启用了 NSEC3 扩展。

区域行走工具

NSEC3Walker进行枚举和破解。我不能保证破解的效率如何,但它绝对只是基于 CPU 的。由于 NSEC3 使用 SHA1(至少最初是这样),因此可能有更好的破解程序。

dnsrecon似乎也能做到:dnsrecon -z -d example.com. 我不知道是否有官方网站提供信息,但在 Debian Stretch、Buster 和 Bullseye 中我可以apt install dnsrecon

3. 子网中的反向查找

通过猜测一些,您通常会发现相似范围内的响应。如果您知道www.存在和mail.存在,并且它们都解决为192.168.3.x,则可能还有更多。尝试对192.168.3.0-255范围 (the /24) 中的所有地址进行反向查找,您可能会找到更多的子域。您可能还想尝试对 IP 地址进行 WHOIS 查询以查找范围的边界(如果它们有自己的块)。

反向查找工具

dnsrecon 可以这样做:

dnsrecon -t rvl -r 192.168.1.0/24

其中-t rvl表示“类型反向查找”并-r以 CIDR 表示法传递 IP 范围。我不知道是否有官方网站提供信息,但在 Debian Stretch、Buster 和 Bullseye 中我可以apt install dnsrecon

4、DNS服务记录

可以为服务发现设置SRV(服务)记录,例如_sip._tcp.example.com可以指向sipserver.example.com端口 5060。由于服务名称(sip示例中的“”)通常是向 IANA 注册的标准名称,因此我们可以遍历它们。

查询srv记录的工具

dnsrecon 可以这样做:

dnsrecon -t srv -d example.com

它将采用由未知方法选择的现有服务名称的子集,如其手册页 ( man dnsrecon) 中所述。

5.其他方法

你已经提到了其中的一些。我不会详细介绍,因为它们是不言自明的,或者依赖于在目标上运行的应用程序(例如 FTP),依赖于第三方,或者关于它们真的没什么可说的.

  • 证书透明度日志可能会显示获得了哪些子域证书,例如参见https://crt.sh

  • 搜索结果可能会显示子域。同样,dnsrecon可以使用该-t goo选项执行此操作(专门使用 Google)。

  • 检查相同名称的其他 TLD 可能会发现一些其他变体或 IP 地址。例如,如果example.com存在,example.org也可能存在。dnsrecon也可以使用dnsrecon -t tld -d example.com.

  • 爬取网站或在其他地方查找参考资料可能会提供提示。(需要帮助:使用哪个工具?)

  • 查看 TLS 证书通常会产生结果。请务必检查 HTTPS、SMTP(S)、FTP(S) 等端口并使用 STARTTLS。

  • 有第三方工具可以列出域中的子域。他们的方法不太清楚,但爬网和历史记录(也许曾经有可能进行域名转移?)通常是其中的一部分。(需要帮助:有什么建议吗?我只记得看到它存在。)

6. 猜测。

最后一个选项只是猜测,无论是通过字典(我建议这样做)还是蛮力。通配符使这变得更加困难,尽管许多工具会尝试检测和解决这个问题。

猜测/暴力破解工具

Fierce 是为此而构建的:https
://github.com/mschwager/fierce 它默认安装在 Kali Linux 中。

正如/u/rook 在该线程的另一个答案中提到的那样,他们为此编写了 Subbrute:https ://github.com/TheRook/subbrute

dnsrecon可以做到这一点dnsrecon -t brt -d example.com用于-f“在保存记录时过滤出解析为通配符定义的 IP 地址的蛮力域查找记录”(引用其手册页)。您可以传递-D一个字典文件。

附录:词典

我仍在寻找好的词典(用于猜测/暴力破解),但这里有一些我知道的。请帮我完成这份清单!越大越好,只要它们按可能性排序。

Jason Haddix 编写了我最喜欢的子域/主机名发现工具,它依赖于最新版本的 recon-ng——可在此处获得——https: //github.com/jhaddix/domain

subbrute 很不错,fierce -dns <domain>效果很好,dnsmap <domain> -r file.txt也很有效,而且我看不出有任何不喜欢的理由knock -wc <domain>(尽管可能会怀疑 knock 的其他功能)。然而,所有这些工具都使用了显示其年龄的技术。其中一些攻击改进的技巧是提供一个自定义文件,其中包含专门针对目标的主机名。

但是,用于 DNS 发现的电锯是 dnsrecon。它无所不能。

您还可以考虑商业产品,例如 RiskIQ,它可以做的比所有这些工具要多得多。他们的技术包括很多你们大多数人都不会想到的调查。

[更新]另一个最喜欢的(对于主机名,主要不是子域——OP 对两者都感兴趣吗?)是——https://github.com/tomsteele/blacksheepwall

我会尝试敲门,但要小心:有被列入黑名单的风险。

不幸的是,如果区域传输不起作用,就没有办法绕过暴力破解。