在信息安全领域中,子域名查询是一项非常重要的技术,能够帮助安全研究人员发现网站的未知漏洞并保证网站的安全性。这篇文章将着重探讨如何利用子域名查询发现未知漏洞。
什么是子域名?
子域名通常是指在顶级域名下的一个二级域名。比如,企业的主域名是example.com,则其子域名可以是services.example.com、 dev.example.com、mail.example.com等等,也可以自定义其他的子域名。
为什么需要子域名查询?
子域名查询在实际渗透测试中经常被使用,主要有以下几个原因:
1.帮助确定web应用程序的目标
子域名查询能够帮助渗透测试人员确定web应用程序的真正目标,使击中的目标更加让人满意和有迹可循,从而增加渗透测试的效果。
2.发现未知的攻击面
在多数情况下,渗透测试的目标并不会告诉你所有的域名,这个时候子域名查询就能够枚举出一些非标准的子域名。例如,您可以在主站上找不到的东西,但从服务的概述中可以对子域名进行推测。
3.发现web应用程序的漏洞
子域名查询可以让渗透测试人员发现web应用程序的未知漏洞,比如使用子域名查询工具扫描网站时会发现很多有漏洞的子域名。
4.帮助建立信任
子域名同样能够建立安全信任,防止攻击者站在安全的角度向企业诈骗企业的机密信息和资金。
子域名查询的技术原理
子域名查询工具的常见原理是字典爆破,这些字典将常见的、不常见的和模糊的域名组成的词典。子域名查询工具会按照预设的字典来挨个试错,并根据不同的返回信息记录下子域名,一般返回信息包含了DNS服务器的IP地址,这样就能通过ip地址得到暴露在外面的系统。
有哪些常用的子域名查询工具?
现在市面上有很多子域名查询工具,这里介绍几个常用的工具:
1. Amass :一个用于DNS信息收集、处理、枚举的开源工具,由OWASP版权所有。
2. Sublist3r :一个用Python写的子域名枚举工具,允许您从多个源(搜索引擎、DNS枚举、hackertarget等)中自动地寻找子域名。
3. Recon-ng :一个高级的渗透测试进行信息收集的开源框架。
4. SubBrute :一个用Python编写的域名枚举工具,支持自定义字典和指定DNS服务器进行枚举。
5. Fierce :一个开源的DNS枚举脚本,支持自定义字典和指定DNS服务器进行枚举。
如何使用子域名查询工具?
使用子域名查询工具是非常简单的,下面以Sublist3r为例进行介绍:
步骤1:在Terminal里安装Python3,先验证一下Python3是否已经安装:
$ python3 -V
步骤2:克隆Sublist3r的GitHub存储库:
$ git clone https://github.com/aboul3la/Sublist3r.git
步骤3:进入Sublist3r文件夹,并安装必要的模块:
$ cd Sublist3r/
$ pip3 install -r requirements.txt
步骤4:运行Sublist3r:
$ python3 sublist3r.py -d example.com
输出结果如下:
[*] Enumerating subdomains now for example.com
[*] 采用用从搜索引擎枚举
[*] 有效的应用 ID: 179624
[*] ... snip, snip ...
[*] 处理后列出完整的子域 :
beta.example.com
post.example.com
dev.example.com
services.example.com
mail.example.com
总共发现了5个子域。
通过使用Sublist3r,我们发现了5个子域名,其中没有网络上名人任何文件。
总结
在信息安全领域,子域名查询是一个非常重要的技术。通过子域名查询工具,我们可以探测Web应用程序的目标和漏洞,并保障网络的安全性。
当然,也有很多通过DNS转发实现的攻击手段,利用DNS支持的各种安全机制分割域名,采用干扰机制或其他方式,这些手段都需要注意,有效的方法是防止从认证、日志审计、检测中心等方面构建有效的防御机制。