前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >子域名枚举的艺术深度剖析

子域名枚举的艺术深度剖析

作者头像
FB客服
发布2019-11-29 15:26:25
1.6K0
发布2019-11-29 15:26:25
举报
文章被收录于专栏:FreeBufFreeBuf

子域名枚举是信息收集中关键的一步,细节很大程度决定战果。本文参考The Art of Subdomain Enumeration,加上实践运用进行总结。

被动枚举

一、证书透明度

证书

当通过HTTPS访问web时,网站向浏览器提供数字证书,此证书用于识别网站的主机名,由证书颁发机构(CA,Certificate Authority)颁发。

证书透明度

证书透明度(Certificate Transparency)简称CT,主要用于将证书记录到公开的CT log中,日志可以被任何人浏览。

通过CT log搜索

代码语言:javascript
复制
https://crt.sh/
https://censys.io/
https://developers.facebook.com/tools/ct/
https://google.com/transparencyreport/https/ct/

利用crt.sh,一行代码收集子域名,代码是从国外漏洞赏金猎人那里拷贝的,更多one line,后面持续更新。

代码语言:javascript
复制
curl -fsSL -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "https://crt.sh/?CN=%25.github.com" | sort -n | uniq -c | grep -o -P '(?<=\<TD\>).*(?=\<\/TD\>)' | sed -e '/white-space:normal/d'

二、搜索引擎

推荐DuckDuckGo,just enjoy it。

谷歌 必应 DuckDuckGo 百度

抛砖引玉:),百度子域名枚举效果如下,其实sublist3r也集成了百度、谷歌、必应,接下来会在DNS数据聚合中介绍。

三、DNS数据聚合

利用第三方服务进行DNS枚举,它们聚集大量DNS数据集,可以通过它们查找子域。常见第三方服务例如DNSdumpster和Netcraft。

推荐Sublist3r神器,Sublist3r神器集成了Netcraft、Virustotal、ThreatCrowd、DNSdumpster和ReverseDNS等等,你值得拥有。

四、ASN

ASN(Autonomous System Numbers)自治系统编号。互联网可以认为由自治系统组成,例如一个全球公司,各国都有分公司,每个分公司都是一个自治系统,为了便于管理,需要给每个系统进行编号,对应的编号称为ASN。

通过域名,可以查询ASN

通过ASN,可以查询属于ASN的所有IP范围

代码语言:javascript
复制
whois -h whois.radb.net  -- '-i origin AS36459' | grep -Eo "([0-9.]+){4}/[0-9]+" | uniq

五、SAN

SAN(Subject Alternate Name)主题备用名称,主题备用名称证书简单来说,在需要多个域名,将其用于各项服务时,可使用SAN证书。允许在安全证书中使用subjectAltName字段将多种值与证书关联,这些值被称为主题备用名称。名称可包括:IP地址、DNS名称等。

appsecco提供的脚本

代码语言:javascript
复制
sed -ne 's/^\( *\)Subject:/\1/p;/X509v3 Subject Alternative Name/{
  N;s/^.*\n//;:a;s/^\( *\)\(.*\), /\1\2\n\1/;ta;p;q; }' < <(
  openssl x509 -noout -text -in <(
      openssl s_client -ign_eof 2>/dev/null <<<$'HEAD / HTTP/1.0\r\n\r' \
          -connect xx.com:443 ) )

主动枚举

一、字典枚举

除了知名度很高layer,推荐一款快速基于浏览器的枚举子域名的神器。

传送门

二、DNS区域传送

这个就不用多说了,很经典的一个漏洞。

代码语言:javascript
复制
dig @ns.example.com example=.com AXFR

三、DNSSEC区域漫步

DNSSEC(Domain Name System Security Extensions),DNS安全扩展,主要用于验证DNS数据来源和数据是否被篡改。

DNSSEC通过向现有DNS记录添加签名来增强安全性,这些签名与常见记录类型一起存储。由于加密签名,DNSSEC处理不存在域时存在问题,可以区域遍历。

对使用NSEC记录的DNSSEC区域,使用ldns-walk测试区域遍历

代码语言:javascript
复制
ldns-walk @8.8.8.8 iana.org

利用nsec3walker收集NSEC3哈希值并破解哈希值

代码语言:javascript
复制
# Collect NSEC3 hashes of a domain
$ ./collect insecuredns.com > insecuredns.com.collect
# Undo the hashing, expose the sub-domain information.
$ ./unhash < insecuredns.com.collect > insecuredns.com.unhash
代码语言:javascript
复制
# 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.
... snipped ...
redis.icann.org.
svn.icann.org.
admin.icann.org.
orbis.icann.org.
jira.icann.org.
omblog.icann.org.
pptr.icann.org.
splunk.icann.org.
nomcom.icann.org.
rssac.icann.org.
sftp.icann.org.
netscan.icann.org.

四、DNS记录

代码语言:javascript
复制
CNAME   别名记录,把一个域名解析到另一个域名 
SPF     SPF是通过域名的TXT记录来进行设置的,SPF记录列出了所有被授权代表域名发送电子邮件的主机

CNAME

SPF

利用脚本

五、HTTP headers

代码语言:javascript
复制
Content-Security-Policy     简而言之就是白名单,主要用于防范XSS

利用脚本

自动化工具

Amass Layer

参考

https://appsecco.com/books/subdomain-enumeration/

*本文原创作者:markzh,本文属于FreeBuf原创奖励计划,未经许可禁止转载

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 被动枚举
    • 一、证书透明度
      • 二、搜索引擎
        • 三、DNS数据聚合
          • 四、ASN
            • 五、SAN
            • 主动枚举
              • 一、字典枚举
                • 二、DNS区域传送
                  • 三、DNSSEC区域漫步
                    • 四、DNS记录
                      • 五、HTTP headers
                      • 自动化工具
                      • 参考
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档