渗透测试工程师子域名收集指南

Change 技术 2017年11月21日发布
Favorite收藏

导语:作为渗透测试工程师或者漏洞赏金猎人,当开始一项安全评估的时候,大多数被提供的都是一个简单的域名或者是一组域名。因此,我们不得不进行大量的侦查,以发现一些有用的资源,比如服务器、Web应用程序、目标组织的域名,这样就可以增加

作为渗透测试工程师或者漏洞赏金猎人,当开始一项安全评估的时候,大多数被提供的都是一个简单的域名或者是一组域名。因此,我们不得不进行大量的侦查,以发现一些有用的资源,比如服务器、Web应用程序、目标组织的域名,这样就可以增加找到漏洞的机会。

子域名枚举是侦察阶段的一个重要部分。本文以一种简明扼要的方式介绍了多种子域名枚举技术。

子域名枚举是什么?

子域名枚举是为一个或多个域查找子域的过程。它是侦察阶段的重要组成部分。

为什么要进行子域名枚举?

· 子域名枚举可以显示很多域名或者子域名,它们在安全评估的范围内,从而增加了发现漏洞的机会。

· 发现运行在隐藏的、被遗忘的子域名上的应用程序可以使我们发现关键的漏洞。

· 通常情况下,同一组织的不同域名或应用程序会出现相同的漏洞。

图片1.png

著名的Yahoo ! Voices黑客事件,正是由于雅虎网站子域名上安装了一个易受攻击的应用程序

子域名枚举技术

1.像Google和Bing这样的搜索引擎支持各种高级搜索引擎优化搜索查询。这些运营商通常被称为“Google dorks”。

· 我们可以在Google搜索中使用“site:”操作符来查找Google查找到的一个域名的所有子域名。Google还支持额外的减号运算符,以排除我们对“网站:wikimedia.org-www-store-jobs-uk”不感兴趣的子域名。

图片2.png

在Google搜索中使用“site:”操作符查找子域名

· Bing搜索引擎也支持一些高级搜索操作。和Google一样,Bing也支持“site:”操作符,以便于你可能想要查找除Google搜索之外的其他结果。

图片3.png

在Bing搜索中使用“site:”操作符查找子域名

2.有许多第三方服务聚合了大量的DNS数据集,并通过它们来检索给定域名的子域名。

· VirusTotal运行自己的被动DNS复制服务,它是通过存储用户在访问urls时提交的DNS决议执行构建的。如果检索域名的信息,你只需要在搜索栏中输入域名。

图片4.png

使用VirusTotal查找子域名

图片5.png

用VirusTotal找到的子域名

l DNSdumpster是另一个有趣的工具,它可以为给定的域名找到大量的子域名。

图片6.png

使用DNSdumpster查找子域名

Sublist3r是目前比较热门的工具,它使用各种资源枚举子域名。Sublist3r会列举出使用Google、Yahoo、Bing、Baidu和Ask等搜索引擎查找到的子域名。Sublist3r还会列举使用Netcraft、Virustotal、ThreatCrowd、DNSdumpster和ReverseDNS查找到的子域名。

图片7.png

使用Sublist3r进行子域名枚举

3. Certificate Transparency(CT)是一个项目,在这个项目中,证书颁发机构(CA)必须将他们发布的每个SSL/TLS证书发布到公共日志中。SSL/TLS证书通常包含域名、子域名和电子邮件地址。因此SSL/TLS证书成为了攻击者的切入点。

查找一个域名证书的最简单方法是使用搜索引擎来收集计算机的CT日志,并让任何搜索引擎搜索它们。下面仅列出了比较常用的几种:

1. https://crt.sh/

2. https://censys.io/

3. https://developers.facebook.com/tools/ct/

4. https://google.com/transparencyreport/https/ct/

图片8.png

使用crt.sh查找一个组织主域名的子域名

我们编写了几个脚本,以简化使用CT日志搜索引擎查找子域名的过程。脚本可在我们的github知识库中找到——https://github.com/appsecco/bugcrowd-levelup-subdomain-enumeration

图片9.png

从uber.com 的CT日志中获得的有趣子域名

在子域名枚举中使用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 -

图片10.png

使用massdns查找可解析域名

4.基于字典的枚举是另一种查找带有通用名称的子域名的技术。DNSRecon是一个功能强大的DNS枚举工具,它的功能之一是使用预定义的词表进行基于词典的子域名枚举。

$ python dnsrecon.py -n ns1.insecuredns.com –d insecuredns.com -D subdomains-top1mil-5000.txt -t brt

图片11.png

基于字典的DNSRecon枚举工具

5.置换扫描是另一种识别子域名的有趣技术。在这种技术中,我们使用已经已知的域名或子域名的排列、变更和突变来识别新的子域名。

l Altdns以一定的模式发现子域名
$ python altdns.py -i icann.domains -o data_output -w icann.words -r -s results_output.txt

 

图片19.png

使用AltDNS查找到与特定置换或修改匹配的子域名

6. 找到自治系统号将帮助我们识别属于一个组织的网段,这个组织中可能有有效的域名。

· 使用dig或host解析给定域名的IP地址。

· 提供IP地址就可以找到ASN的工具——https://asn.cymru.com/cgi-bin/whois.cgi

· 提供域名就可以找到ASN的工具——http://bgp.he.net/

图片13.png

使用IP地址查找ASN

· 发现的ASN编号可以用来查找域名的网段。有Nmap脚本可以实现——

https://nmap.org/nsedoc/scripts/targets-asn.html
$ nmap --script targets-asn --script-args targets-asn.asn=17012 > netblocks.txt

图片14.png

NSE脚本使用自治系统号查找网段

7. 区域传送是DNS事务的一种类型,DNS服务器将一个完整或部分的区域文件副本传递给另一个DNS服务器。如果区域传送没有被安全地配置,任何人都可以在服务器上启动区域传送,并获得该区域文件的副本。而区域文件包含了许多关于该区域和驻留在该区域的主机的信息。

$ dig +multi AXFR 
@ns1
.insecuredns.com insecuredns.com

图片15.png

使用DIG工具对一个服务器进行了成功的区域传送

8. 由于在DNSSEC中处理不存在的域名,所以可以遍历DNSSEC区域并枚举该区域中的所有域名。

对于使用NSEC记录的DNSSEC区域,可以使用像ldns-walk这样的工具来执行区域遍历。

$ ldns-walk @ns1.insecuredns.com insecuredns.com

图片16.png

对带NSEC记录的DNSSEC区域进行区域遍历

· 一些DNSSEC区域使用NSEC3记录,这些记录使用散列的域名来防止攻击者收集纯文本域名。攻击者可以收集所有的子域散列,并在离线状态下解密。

· nsec3walker、nsec3map等工具帮助我们自动收集NSEC3散列和破解散列。安装nsec3walker后,可以使用以下指令枚举NSEC3受保护区域的子域名。

# 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.有一些项目互联网范围内扫描以收集数据,并提供给研究人员和安全社区。这些项目发布的数据集是子域名信息的宝库。尽管在这个庞大的数据集中找到子域就像海底捞针,但这是值得的。

Forward DNS数据集作为Project Sonar的一部分发布。该数据是通过从多个数据源提取域名,并为每个域发送一个ANY查询来创建的。它的格式是一个压缩的JSON文件。我们可以解析数据集找到给定域名的子域名。数据集是巨大的(20+GB压缩,300+GB未压缩)。

# Command to parse & extract sub-domains for a given domain
$ curl -silent https://scans.io/data/rapid7/sonar.fdns_v2/20170417-fdns.json.gz | pigz -dc | grep “.icann.org” | jq

 

图片17.png

使用FDNS数据集枚举子域

子域名枚举技术的比较

我们用已讨论的几个技术对icann.org进行了子域名枚举,并比较了收集到的结果。下面的柱状图显示了用每种技术找到的icann.org不重复的、可解析的子域名的数量。

图片18.png

用每种技术找到的icann.org不重复的、可解析的子域名的数量

子域名枚举参考

我们为子域枚举技术、工具和数据集创建了一个简单的参考。这个参考是使用Github gist创建的,可以随意使用和修改

——https://gist.github.com/yamakira/2a36d3ae077558ac446e4a89143c69ab

子域名枚举的快速参考

搜索引擎:

· Google – site: operator

· Bing – site: operator

DNS 信息收集:

· VirusTotal

· ViewDNS

· DNSdumpster

· Threatcrowd

CT日志:

· https://crt.sh/

· https://censys.io/

· https://developers.facebook.com/tools/ct/

· https://google.com/transparencyreport/https/ct/

工具:

· Sublister

· Altdns

· massdns

· enumall

· DNSRecon

· Domain analyzer

· XRay

· Aquatone

· ldns-walk

· NSEC3 walker

数据集:

· Project Sonar

· Certificate Transparency logs

· https://github.com/appsecco/bugcrowd-levelup-subdomain-enumeration

参考

· https://blog.appsecco.com/open-source-intelligence-gathering-101-d2861d4429e3

· https://www.databreaches.net/hackers-post-450k-credentials-apparently-pilfered-from-yahoo/

· http://info.menandmice.com/blog/bid/73645/Take-your-DNSSEC-with-a-grain-of-salt

· https://www.peerlyst.com/posts/bsideslv-2017-breaking-ground-with-underflow-bsides-las-vegas

本文翻译自:https://blog.appsecco.com/a-penetration-testers-guide-to-sub-domain-enumeration-7d842d5570f6,如若转载,请注明原文地址: http://www.4hou.com/technology/8535.html
点赞 13
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

    tututu 2017-11-29 09:20

    你是Google translate出来的把,有的地方格式有点小出入。