枚举子域名
作者:CQITer小编 时间:2018-03-16 21:51
开始渗透一个网站前,需要知道网站的网络资产:域名、IP等,而IP和域名有着直接的解析关系,所以如何找到网站所有子域名是关键。
2. 实现思路在知道网站主域名的情况下,可以通过以下几种方式进行域名收集。
2.1. 搜索引擎使用百度、Google等搜索引擎,可通过 site 关键字查询所有收录该域名的记录,而子域名权重较高会排在前面。
以 feei.cn 为例,可以通过搜索 site:feei.cn 来获取 feei.cn 被收录的子域名。
百度: https://www.baidu.com/s?wd=site:feei.cn
Google: https://www.google.com.hk/search?q=site:feei.cn
Bing: https://www.bing.com/search?q=site:feei.cn
Yahoo: https://search.yahoo.com/search?p=site:feei.cn

缺点:接口性质的子域名不会被搜索引擎收录,存在遗漏
2.2. Google HTTPS证书透明度Google透明度报告中的证书透明度项目是用来解决HTTPS证书系统的结构性缺陷,它能够让所有人查询各个网站的HTTPS证书信息,从而能发现签发了证书的子域名。feei.cn的证书透明度结果

缺点:对于只签根域名证书的情况,存在遗漏
2.3. 自身泄露流量代理:通过WebProxy代理电脑所有流量,再分析流量中中出现的子域名
域名跳转记录中的子域名
Response中存在的子域名
网络请求资源中的子域名
> GitHub搜索:https://github.com/searcho=desc&q=%22feei.cn%22&s=indexed&type=Code&utf8=✓
> DNS域传递: dig @8.8.8.8 axfr
> crossdomain.xml:
> DNSPod: ?callback=feei

缺点:不全面,存在遗漏
2.4. DNS查询域名的存在是为了避免让大家记住IP而出现的,因此域名都是对应着IP的。所以可以通过收集常用域名字典,去DNS服务商查询是否有解析记录来枚举子域名。 比如 feei.cn,通过 dig 命令可以看到二级域名 papers.feei.cn 的DNS解析记录(ANSWER SECTION)。

缺点:速度,存在少量漏报
3. 最佳实践每种思路都存在漏报的可能,结合起来查询的结果才能最全面。着重说下第四种方式,通过DNS查询来枚举子域名。 通过DNS来枚举需要解决两个问题,字典和速度。
3.1. 字典DNS服务商:从子域名中来,到子域名中去
DNS服务商的字典是最准确有效的,先找到一份DNSPod公布的使用最多的子域名:dnspod-top2000-sub-domains.txt
通用字典
一些基础的组合的字典,在大小和命中做取舍。
单字母: f.feei.cn (大都喜欢短一点的域名,单字符的最为常见)
单字母+单数字: s1.feei.cn
双字母: sd.feei.cn (大都喜欢业务的首字母缩写)
双字母+单数字: ss1.feei.cn
双字母+双数字: ss01.feei.cn
三字母: (部分业务名称为三个字)
单数字:1.feei.cn
双数字:11.feei.cn
三数字:666.feei.cn
常用词组
一些最常见中英文的词组。
fanyi.feei.cn(中)tranlate.feei.cn(英)
huiyuan.feei.cn(中)member.feei.cn(英)
tupian.feei.cn(中)picture.feei.cn(英)
同类爆破工具的字典
同类工具各自都收集整理了独有的字典,全部结合起来。
subbrute: names_small.txt
subDomainsBrute: subnames_full.txt
dnsbrute: 53683.txt
3.2. 速度使用常见的多进程、多线程及gevent等都无法发挥出最大的作用。 使用Python中的 asyncio+ aioDNS来获取最大速度。 一个简单的例子:



