公司动态

信息收集之子域名收集

2019-10-10



01
前言


子域名是域名系统(DNS)层次结构的一部分,令网站中的不同内容以一种更简单的方法被记住,业务较大的公司使用多个子域名也能够更便捷地管理网站的不同功能。

渗透测试的本质是信息搜集,在做渗透测过程中,子域名数量越多则发现漏洞的可能性越大。且当目标业务范围较大时,很难保证每个子域名的安全性,所以在知道网站主域名的情况下,可以通过以下几种方式进行域名收集。

子域名是相对于网站的主域名的。比如百度的主域名为:baidu.com,这是一个顶级域名,而在顶级域名前由”.”隔开加上不同的字符,比如zhidao.baidu.com,那么这就是一个二级域名,同理,依次类推。


02
搜索引擎

使用百度、Google、Bing、Yahoo等搜索引擎,可通过 site 关键字查询所有收录该域名的记录,此时配合其他指令效果更佳,如使用减号“-”来排除不想要搜集到的域名。

补充指令:

“intitle”:搜索关键词“intitle:admin”,只搜索网页标题含有关键词的页面。

“inurl”:搜索关键词“inurl:admin”,只搜索网页链接含有关键词的页面。

“intext”:搜索关键词“intext:admin”,只搜索网页“body”标签中文本含有关键词的页面。

“Index of/”:直接进入网站首页下的所有文件和文件夹。

“filetype”:搜索关键词“filetype:cfm”,只搜索指定后缀为“cfm”页面的内容。

“cache”:搜索Google里关于某些内容的缓存。

site:x.x.x.* (目标IP)

当已获取某些子域名真实IP时,可在搜索引擎中使用“Site:x.x.x.* (目标IP) ”进行横向搜索,会有一些意想不到的收获。

03

 证书透明度



Google证书透明度项目(CT)旨在通过提供一个用于监测和审核HTTPS证书的开放式框架,来保障证书签发流程的安全。根据要求,证书颁发机构(CA)必须将每个SSL/TLS证书发布到公共日志中,其中就包含子域名、邮件地址等信息。

通过证书透明度搜索引擎来搜集一些其他工具遗漏的子域名,尽可能覆盖目标所有存活的子域名,以下为几个比较常用的在线搜索引擎:

1.https://crt.sh/

2.https://censys.io/

3.https://transparencyreport.google.com/https/certificates


04

 
信息泄露


 

代理:代理电脑流量,再分析流量中出现的子域名或是f12查看浏览器网络信息,通过方法观察域名跳转记录中的子域名,Response中存在的子域名,网络请求资源中的子域名

github搜索:利用他人上传的代码来获取信息

爬虫:利用爬虫从页面源代码中提取子域名, burp 的爬虫为例:

crossdomain.xml 文件


 

查询DNS解析记录,如查询 MX、CNAME 记录等,比如用 nslookup 命令 

nslookup -qt=any baidu.com

 

05

 综合工具



我们可以使用集成了多种技术进行子域名搜集的工具来提高子域名的发现效率,网站上有至19年好用的各类工具


06

 subDomainsBrute教程

python环境:2.7.10

子域名爆破(subDomainsBrute)github下载

更新pip

1
python -m pip install --upgrade pip

安装依赖环境

1
pip install dnspython gevent

Usage

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Usage: subDomainsBrute.py [options] target.com
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-f FILE File contains new line delimited subs, default is
subnames.txt.
--full Full scan, NAMES FILE subnames_full.txt will be used
to brute
-i, --ignore-intranet
Ignore domains pointed to private IPs
-t THREADS, --threads=THREADS
Num of scan threads, 200 by default
-p PROCESS, --process=PROCESS
Num of scan Process, 6 by default
-o OUTPUT, --output=OUTPUT
Output file name. default is {target}.txt

kali下载直接用

1
python subDomainsBrute.py xxx.com

不要加www

 

07

  存在问题



子域名收集利用工具面临收集不全,时间长存在漏报等问题结合工具脚本可以尽量解决问题,其次还存在域名泛解析问题

通过DNS查询枚举子域名遇到的最大问题是域名泛解析问题,域名泛解析是厂商为方便维护解析记录,将域名所有情况都解析到同样服务器上。

比如在域名服务商配置 *.baidu.com 的 A记录 到103.21.141.30,则不管是访问 papers.baidu.ccom / email.baidu.com/ person.baidu.com 都将会解析到 103.21.141.30,再由这台服务器上的NGINX来区分域名及对应的后端应用。所以当拿着字典爆破泛解析域名的子域名时,不论域名是否真实存在,都将会存在解析结果。基于aioHTTP获取一个不存在子域名的响应内容,并将其和字典子域名响应进行相似度比对。超过阈值则说明是同个页面,否则则为可用子域名,并对最终子域名再次进行响应相似度对比。

 

08

  对抗思路




泛解析:爆破泛解析是枚举子域名的难点,而泛解析的出现就是为了方便业务快速管理子域名,既然这样那企业采用泛解析的方式利大于弊。比如在新上线子域名时不用等待域名同步时间、对于一些不存在的域名能够handle 404页面、内部对于子域名统计更加方便。

       人机识别:使用泛解析的方式仅仅是增大了时间成本,若面对的是定向攻击,攻击人员不在乎时间成本或是通过分布式的方式,则甲方需要解决人机识别,针对机器程序的页面相似度混淆。

 

09

  Reference


https://github.com/FeeiCN/ESD

https://shmilylty.github.io/OneForAll/

https://www.e-learn.cn/content/qita/2725283/


备注:部分案例及截图来自于互联网,如有侵权,请联系告知。