深入了解子域名挖掘tricks
2019-10-28 10:05:23 Author: xz.aliyun.com(查看原文) 阅读量:197 收藏

细化总结,包括DNS、证书和枚举工具的具体原理,泛解析问题的解决和对抗策略,优秀的收集和监控子域名工具推荐等。


DNS:

DNS域传送漏洞

Windows下的漏洞利用如上图所示,图源网络。

深入了解DNS域传送漏洞

DNS区域传送(DNS transfer)指后备DNS服务器从主服务器获取数据,以更新自己的zone数据库。这可以防止因主DNS服务器故障造成的业务中断,为DNS服务提供了冗余备份。但是许多DNS服务器却被错误配置成只要收到AXFR请求,就向对方进行域传送。

当存在这种错误配置时,攻击者就可以获取整个域的所有记录,造成整个网络架构泄露。正确的配置包括

allow-transfer {ipaddress;}; 通过ip限制可进行域传送的服务器

allow-transfer { key transfer; }; 通过key限制可进行域传送的服务器

Windows下对漏洞的利用归纳起来就是:

  1. nslookup命令进入交互式shell
  2. server命令 参数设定查询将要使用的DNS服务器
  3. ls命令列出某个域中的所有域名

Linux下只需要一条dig命令,对DNS服务器尝试AXFR请求:

dig @1.1.1.1 0sec.com.cn axfr

Kali下可以使用dnswalk获取对象全部的DNS 解析记录信息,注意域名后有一个点:

除此之外nmap也有扫描的脚本:

nmap --script dns-zone-transfer --script-args dns-zone-trans
fer.domain=0sec.com.cn -p 53 -Pn dns30.hichina.com

最后来看两个以前乌云上的案例(镜像站):

顺丰某处DNS域传送漏洞

雷锋网DNS域传送漏洞一枚

枚举子域名并从DNS服务商查询:

从DNS获取子域名,当然也有这一种方法。就是枚举子域名,并从DNS服务器查找是否存在解析记录:

dig tools.0sec.com.cn

有人可能会想到,为什么不直接枚举后做http request,然后查看响应码呢?我认为也可以,但是子域名可能存在未上线/拒绝访问/服务宕机/状态码无法判断/泛解析等一系列问题,所以相比之下还是查询解析记录更加直观。

枚举子域名的方法会在下文提到

HTTPS证书

证书透明度

证书信息

根据我的理解,我们无法直接从浏览器证书中查看到子域名信息,从证书信息获取子域名有这两种方法:

自身泄露

  • robots.txt
  • crossdomain.xml(跨域策略文件cdx)
  • 从流量中分析提取
  • Github泄露

网络资产/网页 搜索引擎

  • ZoomEye/Shodan/Censys/Fofa/

像Censys这样的网络空间资产搜索引擎,它的接口允许在证书中搜索关键字:

https://censys.io/certificates?q=0sec.com.cn
  • 云悉资产

  • Something like Google Hack: site:0sec.com.cn

枚举

其中Sublist3r作为常用的子域名枚举工具,它的子域名枚举来源也包括搜索引擎、crt.sh(类似Censys的证书关键字搜索)等。同时Sublist3r也使用了Subbrute,后者是通过字典进行枚举的。

域名泛解析问题

泛解析是对抗子域名挖掘的思路。

类似扫描器开发时,对404页面的处理方法,通过绝对不存在的子域名的页面返回,计算相似度。来看p0desta的文章:

扫描器开发笔记-404页面识别

使用绝对不存在的页面时,需要判断多个DNS解析的IP,防止因为出口线路不同造成的泛解析误判。

优秀子域名收集(监控)工具推荐

Python开发,通过证书/DNS/爬虫/威胁情报/搜索引擎 收集,支持子域名爆破(判断泛解析)和多线程调用等。

监控证书,在VPS上搭建服务端后,可将新监控到的子域名推送到Slack工作区,实现发现新上线业务的功能,方便Bug bounty。

参考链接:

https://feei.cn/esd

https://larry.ngrep.me/2015/09/02/DNS-zone-transfer-studying/

http://www.lijiejie.com/dns-zone-transfer-1/


文章来源: http://xz.aliyun.com/t/6617
如有侵权请联系:admin#unsafe.sh