渗透测试之子域名枚举(子域名枚举的艺术)
优采云 发布时间: 2020-08-11 14:48本文并没有参考任何的译文,文中大多数的脚本和工具以及枚举方法都验证,效果还算不错,文中直接参考原文
的部份内容因为网路缘由难以验证,有兴趣的可以自行挖掘,不再做过多的调整,翻译此文的诱因就是为了给子域枚举提供一个系统化的学习方法,此外子域名=子域名,但子域不一定只有子域名,注意分辨,文章开头提及的子域名枚举的艺术已经完成了翻译,可以直接点击链接进行学习下载;
子域名枚举的艺术:
文中谈到了好多工具和方法,但要注意兵贵在精不在多,适合的才是最好的,注意文中的链接,有助于扩充你对子域枚举的了解
最后,感谢
0x01.什么是子域名枚举?
子域名枚举是查找一个或多个域的子域的过程。这是侦察阶段的重要组成部份。
0x02.为什么子域名枚举?
着名的雅虎之声风波!由于在子域上布署了易受功击的应用程序,从而被入侵。
0x03子域枚举技术1.搜索引擎
Google和Bing等搜索引擎支持各类中级搜索运算符来优化搜索查询。这些中级运算符一般被称为“谷歌Dorking”。
2.DNS数据聚合
有许多第三方服务聚合大量DNS数据集并可以查看这种数据集检索给定域的子域。
3.证书透明度Certificate Transparency
证书透明度(CT)是证书颁授机构(CA)必须将其发布的每位SSL / TLS证书发布到公共日志。SSL / TLS证书一般收录域名,子域名和电子邮件地址。这让她们成为攻击者的宝库。我在证书透明度上写了一系列技术博客文章,我深入介绍了这个技术,你可以在这里阅读这个系列。
查找为域颁授的证书的最简单方式是使用搜集CT日志的搜索引擎,任何人可以搜索它们。下面列举了太受欢迎的CT搜索地址:
除了Web界面之外,crt.sh还可以使用postgres界面访问其CT日志数据。这促使运行一些中级查询显得简单而灵活。如果您安装了PostgreSQL客户端软件,则可以按如下形式登陆:
$ psql -h crt.sh -p 5432 -U guest certwatch
我们编撰了一些脚本来简化使用CT日志搜索引擎查找子域的过程。这些脚本可以在我们的github中找到
使用CT进行子域枚举的缺点是CT日志中找到的域名可能不再存在,因此未能解析为IP地址。您可以将massdns等工具与CT日志结合使用,以快速辨识可解析的域名。
# ct.py - extracts domain names from CT Logs(shipped with massdns)
# massdns - will find resolvable domains & adds them to a file
./ct.py icann.org | ./bin/massdns -r resolvers.txt -t A -q -a -o -w icann_resolvable_domains.txt -
4.暴力枚举
基于字典的枚举找到通用名称子域是另一种技术。DNSRecon是一个功能强悍的DNS枚举工具,它的一个功能是使用预定义的字典进行子域枚方式侦查子域
# 使用DNSRecon的基于字典的枚举
$ python dnsrecon.py -n ns1.insecuredns.com -d insecuredns.com -D subdomains-top1mil-5000.txt -t brt
5.置换扫描
置换扫描是另一个有趣的技术来辨识子域。在该技术中,我们使用已知域/子域的排列,改变和突变来辨识新的子域。
$ python altdns.py -i icann.domains -o data_output -w icann.words -r -s results_output.txt
使用AltDNS查找与个别排列/更改匹配的子域
6.自治系统(AS)
查找自治系统(AS)号码将帮助我们辨识属于组织的网络块,而该组块又可能具有有效域。
首先使用dig查找ASN
其次,使用AS编号查找网络块 - NSE脚本
$ nmap --script targets-asn --script-args targets-asn.asn=9808 > netblocks.txt
7.区域传送
区域传输是一种DNS事务,DNS服务器将其全部或部份区域文件的副本传递给另一个DNS服务器。如果未安全地配置区域传送,则任何人都可以针对名称服务器启动区域传输并获取区域文件的副本。根据设计,区域文件收录有关区域和留驻在区域中的主机的大量信息。
$ dig + multi AXFR @ ns1 .insecuredns.com insecuredns.com
使用DIG工具针对域的名称服务器成功进行区域传送
8.DNSSEC记录.
由于在DNSSEC中处理不存在的域的方法,可以“遍历”DNSSEC区域并枚举该区域中的所有域。也可以从这儿了解有关此技术的更多信息。
$ ldns-walk @ ns1.insecuredns.com insecuredns.com
区域遍历DNSSEC区域与NSEC记录
# Collect NSEC3 hashes of a domain
$ ./collect icann.org > icann.org.collect
# Undo the hashing, expose the sub-domain information.
$ ./unhash < icann.org.collect > icann.org.unhash
# Listing only the sub-domain part from the unhashed data
$ cat icann.org.unhash | grep "icann" | awk '{print $2;}'
del.icann.org.
access.icann.org.
charts.icann.org.
communications.icann.org.
fellowship.icann.org.
files.icann.org.
forms.icann.org.
mail.icann.org.
maintenance.icann.org.
new.icann.org.
public.icann.org.
research.icann.org.
9.DNS数据集聚合
有些项目搜集了互联网范围的扫描数据,并将其提供给研究人员和安全社区。该项目发布的数据集是子域信息的宝库。虽然在这个庞大的数据集中找到子域如同在大海捞针中找到针,但值得付出努力。
#用于解析和提取给定域的子域的命令
$ curl -silent https://scans.io/data/rapid7/sonar.fdns_v2/20170417-fdns.json.gz | pigz -dc | grep“.icann.org”| JQ
使用FDNS数据集枚举域/子域
0x04子域枚举技术 - 比较
我们针对运行了一些讨论过的技术并对结果进行了比较。下面的条形图显示了每种技术为找到的奇特,可解析的子域的数目。请随时与我们联系,了解我们用于搜集此信息的方式。
每种技术为找到的奇特,可解析的子域的数目
1.子域枚举 - 参考
我们为子域枚举技术,工具和源创建了一个简单的参考。这个引用是使用Github gist创建的,随意分叉,自定义它 -
# 子域枚举 - 参考
## 搜索引擎
- [Google](https://google.com) - **site:** operator
- [Bing](https://bing.com) - **site:** operator
## DNS信息聚合
- [VirusTotal](https://www.virustotal.com/)
- [ViewDNS](https://viewdns.info)
- [DNSdumpster](https://dnsdumpster.com/)
- [Threatcrowd](https://www.threatcrowd.org/)
## 证书透明度日志
- https://crt.sh/
- https://censys.io/
- https://developers.facebook.com/tools/ct/
- https://google.com/transparencyreport/https/ct/
## 工具
- [Sublister](https://github.com/aboul3la/Sublist3r)
- [Altdns](https://github.com/infosec-au/altdns)
- [massdns](https://github.com/blechschmidt/massdns)
- [enumall](https://github.com/jhaddix/domain)
- [DNSRecon](https://github.com/darkoperator/dnsrecon)
- [Domain analyzer](https://github.com/eldraco/domain_analyzer)
- [XRay](https://github.com/evilsocket/xray)
- [Aquatone](https://github.com/michenriksen/aquatone)
- [ldns-walk](https://www.nlnetlabs.nl/projects/ldns/)
- [NSEC3 walker](https://dnscurve.org/nsec3walker.html)
## 数据源
- [Project Sonar](https://sonar.labs.rapid7.com/)
- [Certificate Transparency logs](https://www.certificate-transparency.org/known-logs)
0x05参考