聊聊:子域名枚举
前言
子域枚举是找到一个或多个子域的有效(解析的域名)过程。除非DNS服务器公开完整的DNS域列表(域传送漏洞),否则很难获取现有的子域列表。通常的做法是使用字典,尝试暴力破解发现。虽然这种方法在某些情况下很有效,但它不包括具有奇怪名称的子域名(如:thornsshitianxiadiyishuai.baidu.com)。另一种方法是抓取二级域以便查找子域的链接(更快的方法是直接使用搜索引擎)。
子网枚举使网络信息收集阶段最重要的部分。攻击者收集完整的列表,在其找到弱点,例如访问内部网络。
实例:
完成子域名枚举后,攻击者将查找blog.example.com。并发现该博客正在使用Wordpress作为管理系统。攻击者运行wpscan以找到Wordpress漏洞。幸运的是,目标Wordpress实例使用了一个易受攻击的插件,攻击者可以利用它,获取对环境的访问权,进一步到内部网络离。这个例子可能有点夸张,但是,这是真实发生的事情。(https://www.wordfence.com/blog/2016/04/panama-papers-wordpress-email-connect)
现在我们来介绍最流行的开源工具和技术,用来执行子域枚举。开始了:
区域转移
最简单和最基本技术是直接在DNS服务器上尝试AXFR请求:
dig@ns.example.comexample=.comAXFR
区域传输用于我主DNS服务器和辅助DNS服务器之间复制区域内容。最佳做法是建议管理员仅允许来自授权的DNS服务器发送AXFR请求。但如果成功,你就发现了金矿。
GoogleDorking
使用Google~!你可以使用各种运算符来优化搜索查询(我们也将这些查询称为“Googledorks”)。如前所述,可以使用抓取目标找到许多子域。Google或Bing这样的其他搜索引擎。
site:example.com
Rapid7DNS数据集
Rapid7公开提供了正向DNS研究数据。DNS数据集指在发现Interner上发现的所有域。虽然他们做的很好,但这份清单绝对不完整。你可以在这里阅读更多关于如果编译这些数据集。下载最新的快照,我们可以运行jq来查询子域:
zcatsnapshop.json.gz|
jq-r'if(.name|test("\\.example\\.com$"))then.nameelseemptyend'
jq测试以“.example.com结尾”的正则表达式,以查找数据集中的所有子域。
DNSDumpster是一种免费的在线服务,正在使用这种技术。
主题备用名称
主题备用名称(SAN)是X.509证书中的扩展,以在一个证书中提供主题不同的名称。公司经常为多个子域生成一个证书以节省资金。
我们可以查看证书以使用两种不同的来源寻找SAN中的子域。
Censys.io
Censys.io是scan.io发布的数据子集的接口。它允许在证书中搜索关键字,从而可能揭示新的子域:
https://censys.io/certificates?q=.example.com
Crt.sh
Crt.sh是由COMODO提供的证书在线搜索服务。它使用与Censys不同的数据集,但原则是一样的:在证书中找到子域。
https://crt.sh/?q=%25.example.com
值得注意的是,尽管一些域名对NXDOMAIN做出了回应,但它们仍然可能存在于内部网络上。管理员有时会在内部网服务器上重用公用服务器的证书...
Sublist3r
用于子域枚举的最受欢迎的开源工具之一就是Sublist3r。它汇总了许多不同来源的输出,包括:
谷歌
Bing
virustotal
crt.sh
...
数据在大多数情况下是正确的,但你可能会遇到不可解析的子域(使用NXDOMAIN响应的域)。这是因为Sublist3r很大程度上依赖于被动数据,并且不能验证发现的子域是否真的存在。
Sublist3r还使用一个名为subbrute的独立项目。Subbrute正在使用通用子域名的字典,以便找到可解析的子域的子集。
pythonsublist3r.py-dexample.com
并将example.com的子域名列表提交给你。
theHarvester
另一个开放源代码的智能搜集工具,被称为Harsves,并在目标域以及子域和虚拟主机上找到电子邮件地址。但是,与Sublist3r相比,它提供了更少的子域结果。你可以使用以下命令运行Harvester:
pythontheHarvester.py-dexample.com-ball
SDBF
子域枚举工具通常尝试常见子域列表。这种方法可以通过使用马尔科夫链来扩展,以便发现子域名结构(例如,您有www1,www2可能存在等等)。CynthiaWagner等人的研究论文更详细地解释了这一技术。SDBF产生的结果远远优于子域名的关键字枚举。
结论
定期检查是发现子域的最好做法。对目标进行频繁侦察将为你提供更大的可见性。
被遗忘的子域名可以使你的环境和公司面临各种各样的威胁,如子域接管甚至完全妥协,如本博客开始时的示例所示。