腾讯蓝队实习生
jax、yhy、A1oe
前言
在以往的所有硬件战、红蓝对抗、渗透测试项目中,外网信息收集都是至关重要的一个环节,如果能全面收集外网信息,可能会起到事半功倍的效果,直接突破外网边界进入内网。
最近我们三人加入了腾讯蓝队学习渗透技术,导师要求我们全面学习域名资产收集方法,子域名是域名信息收集的重要一环,如果在严密防守的情况下无法直接拿下主域名,可以采用迂回战术拿下子域名,然后无限接近主域名。
方法原理介绍
1. 使用证书透明度收集子域名
原则
引用谷歌的项目描述:“为了向用户提供加密流量,网站必须首先从受信任的证书颁发机构 (CA) 申请证书。然后,当用户尝试访问网站时,此证书将提供给浏览器以验证网站。近年来,HTTPS 证书系统中的结构性缺陷使证书和颁发证书的 CA 容易受到黑客攻击和操纵。证书透明度项目 (CTP) 旨在通过提供用于监控和审计 HTTPS 证书的开放框架来确保证书颁发过程的安全。”
那么通过这样的证书透明项目,我们可以获得一些有价值的域名。
执行:
访问以下链接搜索需要查询的域名,如:
(1)crtsh:
(2):
(3):
(4):
(5)间谍:
(6):
(7):
2.定期检查收集子域名
2.1 域名转移
原则
区域转移操作是指备份服务器查询主服务器以刷新自己的区域数据库,以确保数据一致性。此操作的目的是防止主域名服务器因意外故障而无法使用时影响全局情况。在正常情况下,只有当网络中存在备份域名 DNS 服务器时,DNS 区域转移操作才是必要的。一旦 DNS 服务器被错误配置为向任何发出请求的人提供区域数据库的副本,就会被攻击者利用。
执行
1. dig 命令
作为 dig@axfr
是提供数据的服务器,是需要传输的关键字,axfr是区域传输选项。
2. 中国DNS数据库
xfr = dns.query.xfr(其中=,区域=自身,=5.0,=10.0)
区域 = dns.区域。(xfr)
问题
一般而言,如果DNS服务器配置正确、DNS传输关闭或者设置了白名单,漏洞利用成功的概率较低。
2.2 站点配置文件
原则
信息泄露的主要问题是某个域名下的一些文件会存储一些和它相关的域名,比如子域名等,这类文件包括跨域策略文件.xml,文件等。
执行
创建文件列表,连接域名后直接访问,判断文件是否存在,存在则提取数据,不存在则跳过。
1..xml文件
直接访问 .xml 路径
2. 文档
直接访问.xml、.txt、.html、.xml、.xml 路径
问题
该文件经常不存在,即使存在,域名信息也是不足且不完整的。
2.3 检查内容安全策略
原则
内容安全策略(CSP, )是一种声明式的安全机制,允许网站运营商控制遵循 CSP 的用户代理(通常是浏览器)的行为。通过控制启用哪些功能以及从哪里下载内容,可以减少网站的攻击面。CSP 的主要目的是防御跨站脚本(cross-ste,XSS)攻击。例如,CSP 可以完全禁止内联,并控制从哪里加载外部代码,还可以禁止动态代码执行。在禁用所有攻击源的情况下,XSS 攻击变得更加困难。CSP 中的关键字有 -src、img-src、-src 和 -src。其中,*-src 可能包含域名信息。
执行
1.手动抓包
HTTP--属性
2. 收购
res = .post(url=url, =, 数据=数据, =False)
如果不是 res。['--']:
print("其中没有--")
别的:
# 处理主要代码
2.4 使用 DNS 查询收集子域名
原则
通过枚举常见的SRV记录并查询来收集子域名srv,通过查询域名的DNS记录中的MX、NS、SOA、TXT记录来收集子域名。
SRV 记录
添加服务记录 当添加服务器服务记录时,此项会被添加。SRV记录哪台计算机提供哪项服务。格式为:服务名称.协议类型(例如:-.tcp)。
以下命令枚举给定域名的 SRV 记录:
nmap --dns-srv-enum.nse ---args “dns-srv-enum.=''”
MX 记录
要建立邮箱服务,需要设置MX记录指向邮件服务器地址,创建邮箱时一般会根据邮箱服务商提供的MX记录来填写此记录。
NS 记录
域名解析服务器记录,如果您需要指定一个域名服务器来解析子域名,则需要设置NS记录。
SOA 记录
SOA 称为起始授权记录(Start of ),NS 用于标识多个域名解析服务器,SOA 记录用于在众多 NS 记录中确定哪一个是主服务器。
TXT 记录
可以任意填写也可以不填,此项一般在做一些验证记录的时候会用到,比如:做SPF(反垃圾邮件)记录。
3. 使用 DNS 数据集收集子域名
使用 DNS 记录收集公共数据
*注:将{}替换为您要查询的域名,带标记的是我们认为比较有效的域名。
(1)ip138:
{}/.htm
(2)百度云观察:
{}
(3):
(4):
:{}
(5):
{}
(6)DNS数据库:
{}
(7):
(8):
(9):
(10):
(11):
(12):
(13):
4. 利用威胁情报平台数据收集子域
*注:将{}替换为你要查询的域名,以下平台均需要注册,注册后可免费试用
(1){}/{}
{} 表示其他命令操作。有关使用 API 的说明,请参阅文档。
(2){}/
(3){}
API:
(4)
{}
(5){}/
或者{}/
(6)
5. 使用搜索引擎发现子域名
5.1 搜索语法—网站
当使用site提交查询时,查询会被限制在某个网站/域名,此时如果结合其他指令会更加有效,比如使用减号“-”来排除不想收集的域名。
5.2 Site:xxx*(目标IP)
获取到子域名真实IP后,我们可以尝试搜索site:xxx*进行C段搜索,此方法还可以找到不少其他有价值的相关域名,经过笔者的尝试,此方法在搜狗和谷歌搜索引擎上均有效,且谷歌搜索引擎效果更佳。
如图所示:
6. 域名注册收集资产
原则
在对一些大目标进行信息采集时,还可以通过查找域名注册信息,找到其他已经注册的域名资产。例如在采集QQ的子域名时,最常用的方法就是采集子域名,这样就会遗漏其他顶级域名资产。
搜索网站:
如上图所示,通过查询网站注册/许可证号再反查,可以找到其他相同注册的顶级域名资产。
通过搜索同名域名注册的其他域名资产,可以更全面的收集目标资产信息,增加发现漏洞的概率。
7.Whois查询及关联查询
工具:网站管理员工具
这里我们将演示如何执行 whois 查询和反向查询
7.1 查询whois
7.2 反向 whois 查询
**&=1&=
获取关联域名信息。
8. 域名爆破
爆破的原理其实就是通过枚举来实现的,通过不断拼接字典中的内容来枚举该域名的A记录,但是这种方法一般需要解决泛解析的问题。
例如开源工具会先访问一个随机的不存在域名,通过返回结果来判断是否存在泛解析。确认存在泛解析之后,程序就会开始不断循环生成随机域名,查询服务器,并记录每次查询的 IP 和 TTL,直到大部分 IP 地址出现两次以上,则完成 IP 黑名单的收集。获取到 IP 黑名单之后,会将其自身字典中的每一项与需要查询的域名进行拼接,在爆破过程中根据 IP 黑名单进行过滤。
但如此宽泛的过滤很容易导致漏报,所以TTL也被纳入了黑名单规则的一部分。判断依据是:在权威DNS中,通配符记录的TTL必须相同,如果子域名记录相同但TTL不同,那么可以说这条记录肯定不是通配符记录。
优秀的开源工具
我们调研了市面上很多开源的子域名采集工具,列出了很多优秀工具的功能和优势,这里以子域名采集为例,简单对比一下各个工具的性能和效果。
工具名称:
项目地址:
工具描述:
它是近几年出现的比较好的子域名收集工具之一,并且还在不断的更新优化中。这款工具整合了各种收集域名信息的“姿势”,手段很全面。包括利用证书透明化、定期检查、利用在线爬虫(正在实现)、DNS数据集、DNS查询、威胁情报平台、搜索引擎等,但笔者发现其对域名泛解析的处理并不是特别理想,误收集较多,也存在使用时间长等缺点。
工具名称:
项目地址:
工具描述:
李洁洁的是一款业内知名的子域名收集工具,该工具利用协程加速爆破速度,使用百度DNS、阿里DNS等快速可靠的公共DNS进行查询,准确率较高,效果也比较好。但是对于泛解析的处理规则是:如果超过10个域名指向同一个IP,则其他指向该IP的域名将被丢弃。这种方法可能会有误删的情况,但不可否认的是,这个规则简单且在一定程度上是有效的。
工具名称:ESD
项目地址:
工具描述:
ESD 的爆破速度极快,仅用了约 4 分 30 秒就爆破了 62 万条数据。这款工具的缺点之一就是对性能要求高,1G 2 核的服务器 CPU 使用率就达到 100%。另外输出的结果也比较不稳定,在采集同一网络下的同一个域名时,结果数量相差好几次。
工具名称:
项目地址:
工具描述:
用于收集子域信息,输出结果数量多,基数大,速度快,输出格式多种,方便后续处理(也有同样的优点)。
唯一的缺点是这个工具没有爆破功能,并且被动源比其他工具少。
各种工具效果对比
各工具的优缺点及功能比较如下:
*注:由于各工具提供的默认词典不同,词典往往需要自己定义才能发挥更大作用,因此各工具下载后不做修改,均以默认词典进行爆破,使用单一域名进行测试不具有通用性,爆破结果仅供参考。
根据上图,单从数据层面来看,四款工具的表现都比较突出,李洁洁的表现也十分优秀,可访问子域名数量占比和时间都很不错,唯一不足就是暴露的子域名比较少。
子域名收集常见问题解答
1. DNS缓存问题
不同的DNS服务器可能缓存策略和缓存结果不同,导致查询域名时解析结果不及时,通常需要多次DNS查询才能迫使DNS服务器刷新缓存,才能得到正确的结果,这无疑增加了泛解析判断和子域名爆破的难度。
事实上,在 中这个问题一直没有得到很好的解决,在判断是否存在泛解析问题时,采用函数 (, ),该函数中利用不存在的子域进行查询,判断是否存在泛解析问题,但只进行一次判定并不准确,容易导致误判。
2.“僵化”词典
爆破是子域采集方法中的一个重要环节,对于大部分此类工具来说,词典的好坏决定了最终的爆破效果,但大部分词典只是遍历字符集,使用常见的高频词,并没有及时更新,当词典文件过大时,爆破速度就会变得很慢,效率低下的词典即使很大也无法达到预期的效果。
在实际进行域名爆破的时候,自动更新的词典无疑会比普通的词典更加有效,这里我们提出一种词典自动更新的解决方案。
动态词典
在本节中,我们更加详细地讲解词典自动更新方案,主要分为三个步骤:更新单词的权重➡️删除原词典中权重较低的单词➡️从数据集中提取高频词并加入到词典中,从而更新词典。
测试工具:
流程图如下:
1. 体重更新
首先使用该工具及其默认词典对子域名进行爆破,并使用下面的脚本对结果进行进一步批量测试,判断域名是否可以从互联网访问,并将从互联网可以正常访问的域名保存成.txt文件。
接下来将mydic中所有单词的权重初始化为0。然后对比.txt中的三级域名,将mydic中对应单词的权重增加1,其他单词的权重保持不变。另外还需要记录本次查询的域名,以便以后查询同一个域名时,mydic中单词的权重不会重复更新。
*注:mydic用于记录单词和其在词典中对应的权重,格式为www,0
2. 删除单词
使用词典爆破不同域名n次(例如20次)后,开始更新词典,也就是删除词典中的单词,具体步骤如下:
首先用一个txt文件记录词典的使用次数,如果txt文件不存在则生成,不同域名查询次数加1,同一域名重复查询只计一次。
每次程序运行完之后判断mydic是否需要重新设置,如果需要更新,则先删除.txt文件,然后对mydic中的数据按照权重进行排序,排序完成后删除排在后面30%的数据。
3. 词典更新
在删除原有字典中 30% 的值之后,我们需要向字典中添加新的值。我们解析公共 DNS 记录来更新我们的字典。由于下载的数据集大小通常为数十 GB,很难直接处理,因此我们首先对数据进行拆分,以降低处理难度。
首先,将数据集拆分成每个大约 100MB 的数据文件。然后随机提取这些数据文件中的一部分,提取其中的所有子域,并将其拼接到词典的“数据源”中。对提取出的子域数据进行词频分析,并按照出现频率从高到低对内容进行排序。选择出现频率最高的值并将其添加到词典中,直到新词典的大小与旧词典相同。最后,需要将新词典中所有值的权重重置为零。
总结
1. 除了使用爆破工具,收集子域名的方法还有很多。例如域名转移漏洞、DNS查询等常规方法,以及使用证书透明度、DNS数据集、威胁情报平台、搜索引擎、域名备案和whois查询等。总体来看,这些方法中,威胁情报平台是最有效的,其次是证书透明度和DNS数据集。
2、本文也对业界几款优秀的工具进行了研究和对比,在收集 、 和 子域名的测试中,表现都比较出色。
3、子域名采集主要存在域名泛解析、不同线路解析到不同IP、爆破子域名时字典效率低等问题。
4.针对词典问题,我们提出了词典自动更新的解决方案。
互联网上收集子域名的方法和工具有很多,但实际使用时效果并不理想、也不全面,需要结合不同的方法,合理使用工具进行收集,才能得到高效、有价值的子域名列表。
为了方便在实战环境中使用,我们将大部分常用的方法整理整合到本文中。作为学习的记录,本文难免有疏漏,如有错误,还请指正。希望大家和我们一起探索更高效的子域名采集方法,共同学习进步。
最后,我要衷心感谢我的导师Leon老师和小武老师对我的帮助和指导。
附录
证书透明度项目
枚举子域名
DNS 区域传输漏洞
史上最全子域名收集方法:
我们是台橡
网络安全的守护者
用户数据安全的捍卫者
我们发现漏洞、检测入侵并预防攻击
携手安全行业精英,共建互联网生态安全
期待你的正能量,期待你的加入!
扫一扫在手机端查看
-
Tags : 域名被删除之后重新注册_红蓝对抗之域名搜集方法总结
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。