可能是因为安全的原因DNS协议不支持直接查询域名及子域名的所有A记录,本文通过网上整理收集为您介绍扫描一个域名的子域名的一些可行手段:
1、穷举/使用字典扫描;
2、爬取网站内容提取子域名;
3、利用搜索引擎收录提取子域名;
4、DNS查找各类DNS记录提取子域名;
5、通过查询HTTPS/SSL的证书数据提取子域名。
下面将详细为您介绍详细实现方案:
一、穷举/使用字典扫描:
通过穷举N位数的子域,在可接受范转,例表小于三位,例如从0到z、从00到zz、从000到zzz,找到部分子域。
通过常用子域字典,例如www、admin、mail、wap、img、m...,找到部分子域。
不管是穷举还是跑字典,都需要一条条的向DNS服务器请求来获得解析情况。
>nslookup -type=A img.htool.com 返回: 服务器: UnKnown Address: 172.26.141.27 非权威应答: 名称: img.htool.com Address: 8.140.19.87 >nslookup -type=A abc.htool.com 返回: 服务器: UnKnown Address: 172.26.141.27 *** UnKnown 找不到 abc.htool.com: Non-existent domain
这个方法的缺点是:如果子域字数多或不在字典里就没法查到了。
二、爬取网站内容提取子域名:
通过爬取主域名网站的页面,从页面内容html、js、css当中通过正则表达式等手段提取子域名,这是一种比较快捷有效的方法。爬取的过程中由于某些网站页面特别多不可能无限制爬取,在爬取的过程中我们可以通过设定爬取的页面深度来控制爬取结束,例如设定爬取的页面深度为10,超过10之后的不爬取。爬虫爬取页面分析的例子太多,这里就不详细展开了。此方法也有缺点是:如果子域名在主域名中没有链接指向则提取不到。
三、利用搜索引擎收录提取子域名:
使用搜索引擎如百度、Google、Bing等,通过特定的搜索语法查找目标域名的子域名。例如使用 site:img.htool.com或 inurl:img.htool.com 等搜索,通过分析返回结果判断子域名是否有效。当然理论上也可以将搜索引擎收录的网址爬下来,通过网址来提取子域名,但是搜索引擎应该都有反爬的机制,收录太多的网站很难把所有的收录页面的网址都爬下来分析。此方法也有缺点是:如果子域名未被搜索引擎收录则提取不到。
四、DNS查找各类DNS记录提取子域名:
查找主域名的条类DNS记录发现子域名。如A记录、CNAME记录、MX记录、TXT记录、NS记录等。
例如:
>nslookup -type=ns baidu.com 服务器: UnKnown Address: 172.26.141.27 非权威应答: baidu.com nameserver = dns.baidu.com baidu.com nameserver = ns3.baidu.com baidu.com nameserver = ns2.baidu.com baidu.com nameserver = ns7.baidu.com baidu.com nameserver = ns4.baidu.com dns.baidu.com internet address = 110.242.68.134 ns3.baidu.com internet address = 153.3.238.93 ns3.baidu.com internet address = 36.155.132.78 ns2.baidu.com internet address = 220.181.33.31 ns7.baidu.com internet address = 180.76.76.92 ns7.baidu.com AAAA IPv6 address = 240e:940:603:4:0:ff:b01b:589a ns7.baidu.com AAAA IPv6 address = 240e:bf:b801:1002:0:ff:b024:26de ns4.baidu.com internet address = 111.45.3.226 ns4.baidu.com internet address = 14.215.178.80 >nslookup -type=mx baidu.com 服务器: UnKnown Address: 172.26.141.27 非权威应答: baidu.com MX preference = 10, mail exchanger = mx.maillb.baidu.com baidu.com MX preference = 15, mail exchanger = mx.n.shifen.com baidu.com MX preference = 20, mail exchanger = mx1.baidu.com baidu.com MX preference = 20, mail exchanger = jpmx.baidu.com baidu.com MX preference = 20, mail exchanger = usmx01.baidu.com baidu.com MX preference = 20, mail exchanger = mx50.baidu.com mx.maillb.baidu.com internet address = 220.181.50.185 mx.n.shifen.com internet address = 111.206.215.185 mx.n.shifen.com internet address = 111.202.115.85 mx1.baidu.com internet address = 220.181.3.85 mx1.baidu.com internet address = 111.202.115.85 jpmx.baidu.com internet address = 119.63.196.201 usmx01.baidu.com internet address = 12.0.243.41 mx50.baidu.com internet address = 12.0.243.41
五、通过查询HTTPS/SSL的证书数据提取子域名
证书授权机构有一个叫证书透明度(Certificate Transparency)的项目,会把每个SSL/TLS证书发布到公共日志中。
通过一些在线工具,即可查出域名子域。
例如这个网站:crt.sh | Certificate Search
缺点:如果子域名没有申请SSL证书,就没法查到了。
输入域名查询:
查询结果:
点赞(0)