顶级域名、子域名收集
近日针对项目甲方的网站资产使用项目研发的逻辑漏洞扫描器进行扫描,需要收集一下甲方的网站子域名列表用于测试,因此记录一下收集的过程。域名是很重要的资产,一个目标暴露在互联网的资产大多以域名的方式访问
顶级域名收集
查找目标顶级域名
如果你不知道目标公司的主域名,可以利用搜索引擎去检索,找到该公司的官网,例如百度的官网就是https://www.baidu.com,那么我们就知道对应的其中一个顶级域名为baidu.com。
查找目标关联顶级域名
由于一个目标企业可能会有多个顶级域名,例如百度的顶级域名不止 baidu.com, 还有 hao123.com 等,只有尽可能找到所有关联域名,才能把资产收集得更全面。
备案查询
首先在ICP备案查询中可以查询我们上一步找到的顶级域名,就可以找到主办单位名称:
主办单位名称为:中国太平洋保险(集团)股份有限公司
接下来搜索主办单位名称:
便可以得到该企业的备案的顶级域名。
企业关系查询
目标企业可能会有很多子公司,特别是全资子公司,子公司的名称和母公司的名称不一样,注册的域名也不一样,子公司有时是一个很好的突破口。可以在天眼查、爱企查、企查查等平台进行关系查询。
可以通过查看股权穿透图来找子公司,然后查看子公司的域名,不断重复,直到获取所有子公司的域名
whois 反查关联域名
可以通过 whois 的信息进行反查域名,如同一公司的域名可能通过同一个邮箱进行注册
whois反查结果:
子域名收集
获取目标公司所有关联域名之后,我们可以开始收集它们的子域名。
利用证书透明度收集子域名
证书透明度是一个开放体系,专门记录、审核并监控在互联网公开受信任的 TLS 证书。由于很多企业的域名都用了 https 协议,TLS证书里面一般包含域名信息,公司组织名称等,子域名中的证书信息一般情况也是一样的,可以通过证书透明度查询所有子域名。
常用查询网站:
使用搜索引擎
我们也可以利用搜索引擎的检索能力去收集子域名。
比如谷歌上用语法 site:cpic.com.cn
使用开源的自动化工具
OneForAll
OneForAll是一款功能强大的子域收集工具,使用python编写。
收集能力:
- 利用证书透明度收集子域(目前有6个模块:
censys_api
,certspotter
,crtsh
,entrust
,google
,spyse_api
) - 常规检查收集子域(目前有4个模块:域传送漏洞利用
axfr
,检查跨域策略文件cdx
,检查HTTPS证书cert
,检查内容安全策略csp
,检查robots文件robots
,检查sitemap文件sitemap
,利用NSEC记录遍历DNS域dnssec
,后续会添加NSEC3记录等模块) - 利用网上爬虫档案收集子域(目前有2个模块:
archivecrawl
,commoncrawl
) - 利用DNS数据集收集子域(目前有24个模块:
bevigil_api
,binaryedge_api
,bufferover
,cebaidu
,chinaz
,chinaz_api
,circl_api
,cloudflare
,dnsdb_api
,dnsdumpster
,hackertarget
,ip138
,ipv4info_api
,netcraft
,passivedns_api
,ptrarchive
,qianxun
,rapiddns
,riddler
,robtex
,securitytrails_api
,sitedossier
,threatcrowd
,wzpc
,ximcx
) - 利用DNS查询收集子域(目前有5个模块:通过枚举常见的SRV记录并做查询来收集子域
srv
,以及通过查询域名的DNS记录中的MX,NS,SOA,TXT记录来收集子域) - 利用威胁情报平台数据收集子域(目前有6个模块:
alienvault
,riskiq_api
,threatbook_api
,threatminer
,virustotal
,virustotal_api
) - 利用搜索引擎发现子域(目前有18个模块:
ask
,baidu
,bing
,bing_api
,duckduckgo
,exalead
,fofa_api
,gitee
,github
,github_api
,google
,google_api
,shodan_api
,so
,sogou
,yahoo
,yandex
,zoomeye_api
),在搜索模块中除特殊搜索引擎,通用的搜索引擎都支持自动排除搜索,全量搜索,递归搜索。 - 字典和自定义fuzz爆破,爆破时使用massdns
subfinder
subfinder是一种子域发现工具,它通过使用被动在线资源发现网站的有效子域。它具有简单的模块化架构,并针对速度进行了优化。Subfinder 仅用于做一件事 - 被动子域枚举,它做得很好。需要Go语言环境运行。
泛解析问题
泛域名解析是一种特殊的域名解析方式。它使用通配符形式,设置域名解析。它可以将没有明确设置的子域名一律解析到一个IP地址上。这样,即使用户输入错误的子域名,也可以访问到域名持有者指定的IP地址。但是信息收集中,这会造成请求的所有子域名都能访问的假象,从而收集到一堆无效的子域名。
1 |
|
可以判断百度未使用泛解析,而淘宝域名使用了泛解析
目前子域名爆破最常见的解决泛解析问题是使用IP黑名单的方式,首先解析一个不可能存在的域名,如果可以解析证明存在泛解析,然后不断随机产生随机的域名,收集返回的IP地址和TTL,直到大部分IP地址出现两次以上,该列表即为泛解析黑名单,后面子域名爆破时根据黑名单进行过滤。