搜索
查看: 351|回复: 0

子域名的艺术

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2017-4-28 11:47:47 | 显示全部楼层 |阅读模式
前言

子域枚举是找到一个或多个子域的有效(解析的域名)过程。除非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.com example=.com AXFR

区域传输用于我主DNS服务器和辅助DNS服务器之间复制区域内容。最佳做法是建议管理员仅允许来自授权的DNS服务器发送AXFR请求。但如果成功,你就发现了金矿。

Google Dorking

使用Google~!你可以使用各种运算符来优化搜索查询(我们也将这些查询称为“Google dorks”)。如前所述,可以使用抓取目标找到许多子域。GoogleBing这样的其他搜索引擎。

site:example.com
Rapid7 DNS数据集

Rapid7公开提供了正向DNS研究数据。DNS数据集指在发现Interner上发现的所有域。虽然他们做的很好,但这份清单绝对不完整。你可以在这里阅读更多关于如果编译这些数据集。下载最新的快照,我们可以运行jq来查询子域:

zcat snapshop.json.gz |
jq -r 'if (.name | test("\\.example\\.com$")) then .name else empty end'

jq测试以“ .example.com结尾”的正则表达式,以查找数据集中的所有子域。

DNSDumpster是一种免费的在线服务,正在使用这种技术。

主题备用名称

主题备用名称(SAN)是X.509证书中的扩展,以在一个证书中提供主题不同的名称。公司经常为多个子域生成一个证书以节省资金。我们可以查看证书以使用两种不同的来源寻找SAN中的子域。

Censys.io

Censys.io是scan.io发布的数据子集的接口。它允许在证书中搜索关键字,从而可能揭示新的子域:

https://censys.io/certificates?q=.example.comCrt.sh

Crt.sh是由COMODO提供的证书在线搜索服务。它使用与Censys不同的数据集,但原则是一样的:在证书中找到子域。

https://crt.sh/?q=%25.example.com

值得注意的是,尽管一些域名对NXDOMAIN做出了回应,但它们仍然可能存在于内部网络上。管理员有时会在内部网服务器上重用公用服务器的证书...

Sublist3r

用于子域枚举的最受欢迎的开源工具之一就是Sublist3r。它汇总了许多不同来源的输出,包括:

  • 谷歌
  • Bing
  • virustotal
  • crt.sh
  • ...

数据在大多数情况下是正确的,但你可能会遇到不可解析的子域(使用NXDOMAIN响应的域)。这是因为Sublist3r很大程度上依赖于被动数据,并且不能验证发现的子域是否真的存在。Sublist3r还使用一个名为subbrute的独立项目。Subbrute正在使用通用子域名的字典,以便找到可解析的子域的子集。

python sublist3r.py -d example.com

并将example.com的子域名列表提交给你。

theHarvester

另一个开放源代码的智能搜集工具,被称为Harsves,并在目标域以及子域和虚拟主机上找到电子邮件地址。但是,与Sublist3r相比,它提供了更少的子域结果。你可以使用以下命令运行Harvester

python theHarvester.py -d example.com -b allSDBF

子域枚举工具通常尝试常见子域列表。这种方法可以通过使用马尔科夫链来扩展,以便发现子域名结构(例如,您有www1www2可能存在等等)。Cynthia Wagner等人的研究论文更详细地解释了这一技术。SDBF产生的结果远远优于子域名的关键字枚举。

结论

定期检查是发现子域的最好做法。对目标进行频繁侦察将为你提供更大的可见性。被遗忘的子域名可以使你的环境和公司面临各种各样的威胁,如子域接管甚至完全妥协,如本博客开始时的示例所示。

下表显示了我们最近的一个基准(24-04-2017的数据),并包含Swaveratic和域上的各种其他工具的子域枚举结果:





子域枚举为组织中的漏洞评估团队和其他攻击团队提供了一个很好的源。了解公司的所有足迹,才会有安全感。

参考:

https://blog.sweepatic.com/art-of-subdomain-enumeration/



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表