子域名深度挖掘
[TOC]
前言:
企业可能有多个、几十个甚至很多的子域名应用,因为子域名数量多,企业在人员和防护的投入可能会没有主站及时。攻击者在主域名找不到突破口时,就可以进行子域名的信息收集,然后通过子域名的漏洞进行迂回。
例如:www.qfnu.edu.cn主域不存在漏洞,并且防护措施严密,而二级域名 jsj.qfnu.edu.cn存在漏洞,防护措施松散,可以采用迂回战术拿下子域名,然后逐步靠近主域。
目的:核心目标久攻不下,从侧面展开攻击并逐步获取核心目标权限
一、前置知识
1.1 域名类别

子域名是在域名系统等级中属于更高一层域的域。比如:jsj.qfnu.edu.cn和da.qfnu.edu.cn是qfnu.edu.cn的两个子域。

为了保证网络的稳定网站服务商会在网络的不同位置设置节点服务器,通过 CDN技术,将网络请求分发到最优的节点服务器上面。
1.3 CDN判断与绕过
当CDN技术成熟时,不只是正常用户部署有CDN,比如服务器部署正国外的不法网站往往会采用国内的CDN,使国内用户访问。
站长工具:http://ping.chinaz.com/
爱站网:https://ping.aizhan.com/
国外 ping 探测:https://asm.ca.com/en/ping.php
利用站长工具对www.baidu.com多地探测返回的结果,发现有多达15个不同的IP,www.baidu.com同时有显示CDN提供商为百度云加速,这个应该算理所当然,百度没CDN才属于离谱。
nslookup域名解析
通过系统自带的【nslookup】命令对域名解析, 发现有【39.156.66.18】和【39.156.66.14】两个 不同的IP,说明【www.baidu.com】可能使用了CDN。
有CDN例子
# www.abc.com
# 服务器:public1.114dns.com
# Address: 114.114.114.114
非权威应答:
# 名称:abc.xdwscache.ourglb0.com
# Addresses: 58.223.164.86 125.75.32.252
# Aliases: www.abc.com
# www.abc.com.lxdns.com
无CDN例子
abc.com
服务器:public1.114dns.com
Address: 114.114.114.114
非权威应答:
名称:abc.com
Address: 192.12.168.172
1.4 绕过CDN获取真实IP
查询子域名
子域名可能跟主站在同一个服务 器或者同一个C段网络中,可以通过子 域名探测的方式,收集目标的子域名 信息,通过查询子域名的IP信息来辅助 判断主站的真实IP信息。
作用:IP/域名->同网段下的IP
通过IP或域名可以查询同网段的不同IP ,查询手段:webscan或其他工具 https://www.webscan.cc/
使用国外主机解析域名
探测的方式也有两种,一种是利用 自己已有的境外的主机直接进行探测, 另一种如果没有国外主机可以利用公开的多地ping服务,多地ping服务有国外的探测节点,可以利用国外节点的返回信息来判断真实的IP信息。
网站漏洞
利用网站存在的漏洞,信息泄露的敏感信息、文件,如phpinfo文件、网站源码文件、Github泄露的信息等都可能会将真实的IP信息泄露。
邮件的信息中会记录邮件服务器的IP信息,有些站点有类似于RSS邮件订阅可以发送邮件的功能,可以利用其发送的邮件,通过查看源码的方式查看真实服务器的IP信息。

1-3 获取子域名的方式
2.1子域名挖掘手段
- DNS域传送漏洞发现子域名(这个漏洞比较早现在已经有很少应用)
- 搜索引擎发现子域名
- 证书透明性信息发现子域名
- 第三方聚合服务发现子域名
- 子域名枚举发现子域名
2.2 DNS域传送
作为重要的互联网基础设施,难免成为黑客的重点攻击目标,服务的稳定性尤为重要。DNS服务器分为:主服务器、备份服务器和缓存服务器。在主备服务器之间同步数据库,需要使用“DNS域传送”。域传送是指后备服务器从主服务器拷贝数据,并用得到的数据更新自身数据库
若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录。造成整个网络的拓扑结构泄露给潜在的攻击者,包括一些安全性较低的内部主机,如测试服务器。凭借这份网络蓝图,攻击者可以节省很少的扫描时间。
大的互联网厂商通常将内部网络与外部互联网隔离开,一个重要的手段是使用Private DNS。如果内部DNS泄露,将造成极大的安全风险。风险控制不当甚至造成整个内部1网络沦陷。
当然这个漏洞非常鸡肋,只有大公司会用Private DNS服务器,但是一个古老漏洞,会出现问题的可能性不大。
2.3 搜索引擎发现子域名
搜索语法:site:baidu.com
site语法设定的初衷是为了实现精准搜索。索引结果数不是一个网站在搜索引擎中的站点评级指标。搜索结果中URL后面的时间戳不必太过关注。site语法查询的检索结果只能说明网页被收录。
site:后面带不带www结果可能是不一样的,因为有些域名还包括二级域名,如:site:www。某某。com和site:某某。com,搜索结果就不一样,site:和站点名之间,不要带空格。
搜索引擎发现子域名(拓展)
url前不能带http:// , 现在Google搜索可以带http:// Google会自动忽略,百度依然不能忽略带”http://“的搜索。
搜索引擎 site:http://www.sina.com.cn
Google结果:所有网站 www.sina. com.cn 上约有1660项符合 搜索引擎的查询结果,以下是第 1 - 10 项。Baidu结果:抱歉,没有找到与“site:ht tp://finance.sina.com.cn” 相关的网页。
> 搜索引擎:site:www.sina.com.cnGoogle结果:所有网站 www.sina.com.cn 上约有1660项符合 搜索引擎的查询结果,以下是第 1 - 10 项。
Baidu结果:百度一下,找到相关网页约3,210篇,用时0.057秒。B、在过去url后边不能带斜杠“/”,现在Google和Baidu都可以带”/“。
比如说:https: //crt.sh/ 与 https ://censys.io/
因为证书透明性只能查到有证书的网站,所以这里获取的域名一般没问题,而且数量较少。证书透明性获取的子域名数量其实远小于通过搜索引擎获取,一般是作为一些补充。
#### 2.4 枚举工具one for all
下载地址:https://github.com/shmilylty/OneForAll
一款集百家之长,功能强大的全面快速子域收集终极神器,收集子域名快速且全面,但要注意一定要配置API,否 则收集的子域名会不够全。
注意:这个建议在虚拟机运行,直接用kali linux开个docker把环境加载进去就行。
Layer子域名挖掘机
下载地址:https://github.com/euphrat1ca/LayerDomainFinder
这个地址下载到的其实是说这个攻击的源代码,如我在课下会把这个工具的正常使用版本放在群里。
JSFinder
下载地址:https://github.com/Threezh1/JSFinder ,一款用作快速在网站的js文件中提取URL,子域名的工具。
Knock Subdomain Scan v5.3.0
下载地址:https://github.com/guelfoweb/knock ,通过字典攻击快速枚举目标域上的子域
one for all
下载地址:https://github.com/shmilylty/OneForAll
OneForAll基于Python 3.6.0开发和测试,OneForAll需要高于Python 3.6.0的版本才能运行。 安装Python环境可以参考Python 3 安装指南。运行以下命令检查Python和pip3版本:
首先下载并编辑配置文件,添加自己的api和个性化设置,并保留原始文件结构
config ├ ── api.py ├ ── log.py └── setting.py
拉取镜像并执行,其中~/.config替换为你自己配置文件所在文件夹的路径
docker pull shmilylty/oneforall
docker run -it --rm -v ~/results:/OneForAll/results -v ~/.config:/OneForAll/config shmilylty/oneforall --target example.com run
参数直接加在指令末尾,结果会输出在本地目录~/results,如需保存到其他位置,可以自行修改。
如果你是通过pip3安装的依赖则使用以下命令运行示例:
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./example.txt run
三、实战演练
四、总结答疑
本课程及所讲述的所有技术仅能在取得足够合法授权的企业安全建设中使用,在使用学习本课程的过程中,您应确保自己所有行为符合当地的法律法规。 如您在学习本课程后中存在任何非法行为,您将自行承担所有后果,本课程所有开发者和所有贡献者不承担任何法律及连带责任。 除非您已充分阅读、完全理解并接受本协议所有条款,否则,请您不要阅读本课程。 您的阅读行为或者您以其他任何明示或者默示方式表示接受本协议的,即视为您已阅读并同意本协议的约束。