我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

1. 背景

在开始渗透一个网站之前,你需要知道这个网站的网络资产:域名、IP等。IP和域名有直接的解析关系,所以如何找到该网站的所有子域名是关键。

2.实现思路

如果你知道网站主域名,可以按照以下方式收集域名。

2.1. 搜索引擎

使用百度等搜索引擎,可以用site关键字查询所有包含该域名的记录,权重高的子域名会排在前面。

举例来说,您可以通过搜索 site: 来获取包含的子域名。

百度::

::

冰::

雅虎::

缺点:界面性质的子域名不会被搜索引擎收录,而且可能会有遗漏

HTTPS 证书透明度

透明度报告中的证书透明度项目是为了解决HTTPS证书体系的结构性缺陷,它可以让大家查询各个网站的HTTPS证书信息,从而找到该证书颁发给哪些子域名。

缺点:仅签署根域名证书存在疏漏

2.3. 自我披露

流量代理:代理来自您计算机的所有流量,并分析流量中出现的子域

域名重定向记录中的子域名

存在于

网络请求资源中的子域名

缺点:不完整,有遗漏

2.4. DNS 查询

域名的存在是为了避免人们去记住 IP 地址,所以域名和 IP 地址是一一对应的。所以可以收集常用域名的字典,去 DNS 服务商那里查看是否有解析记录,枚举子域名。比如可以用 dig 命令查看二级域名的 DNS 解析记录()。

缺点:速度慢,假阴性量少

3.最佳实践

每种方式都有漏报的可能,结合多种方式查询结果才能最全面。我们重点讲第四种方式,通过DNS查询枚举子域名。通过DNS枚举需要解决两个问题:字典和速度。

3.1. 词典

DNS服务提供商:从子域名到子域名

DNS 服务提供商的词典是最准确和有效的。首先找到最常用的子域名的已发布列表:--sub-.txt

通用词典

一些基本的组合词典在大小和命中率之间做出权衡。

单个字母:(大多数人喜欢较短的域名,单字母域名最为常见)

单个字母+单个数字:

两个字母的缩写:(大多喜欢商业缩写)

双字母+单个数字:

双字母+双数字:

三个字母:(有些企业名称是三个字母)

个位数:

两位数:

三个数字:

常用短语

一些最常见的中文和英文短语。

(中文)(英文)

(中文)(英文)

(中文)(英文)

类似爆破工具词典

类似的工具各自收集和组织自己独特的词典,并将它们全部组合在一起。

: 。TXT

: 。TXT

:53683.txt

3.2. 速度

使用常见的多进程、多线程等并不能发挥出最大效果,使用 + 可以达到最大速度,举个简单的例子:

实施过程

> 判断是否为通配符域名

查询绝对不存在的域名的 A 记录,例如

根据是否返回IP判断是否是通配符解析(如果返回IP则为通配符解析域名)

> 加载词典

阅读固定文本词典

根据固定文本词典中的变量词典动态生成新词典

合并并删除重复项

> 协程批量查询

创建 170,000 个任务

一次最多运行 10,000 个任务,以避免较长的任务加载时间

记录每次查询结果

> 结果

录制时间

写入结果文件

字典生成

最多可并行运行 10,000 个协程

通过扫描,一共查到规则,1913个域名,耗时大概100-160秒,平均每秒1000-1500条规则。后期引入了多个进程,充分利用带宽。

4. 问题

域名通用解析问题

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

比如你在域名服务商上将*.的A记录配置为103.21.141.30,那么无论你访问//,都会被解析为103.21.141.30,而这台服务器上的NGINX会区分出域名和对应的后端应用。

因此在使用字典对一个泛解析域名的子域名进行爆破时,无论该域名是否真实存在,都会有解析结果。

目前最好的方案是先获取绝对不存在的域名的响应内容,再遍历获取各个字典对应的子域名的响应内容,通过与不存在域名内容的相似度对比来枚举子域名,但这种实现方式是以牺牲速度为代价的,后续计划会将其作为可选方案。

5. 应对措施

虽然子域名本身是公共网络资产,但是作为甲方,我们必须思考如何具体增加收集子域名的难度。

使用 pan-parse

爆破泛解析的难点在于枚举子域名,而泛解析的出现则是为了方便业务快速管理子域名。在这种情况下,企业使用泛解析的优点大于缺点。例如,在上线新子域名时,无需等待域名同步时间,部分不存在的域名可以显示404页面,内部子域名统计也更加方便。

人类和机器识别

使用pan-parse方法只是增加了时间成本,如果是针对性攻击,攻击者不在乎时间成本或者采用分布式方法,那么甲方就需要为机器程序解决人机识别和页面相似度混淆问题。

6. 最后的想法

作为渗透测试中最基础的预测试点,枚举子域时要做的太多了,只有覆盖所有点,才能得到最接近真实全量的子域。项目名为ESD,最终实现已开源,欢迎大家参与维护。

@Feei 博客链接:枚举子域名

二维码
扫一扫在手机端查看

本文链接:https://by928.com/4257.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线