众所周知,在对目标发起渗透之前,我们需要先进行信息收集。
信息收集是否详细很大程度上决定了我们渗透测试的成功率。
如果我们拿到的是一个域名,那么第一步就是对该域名进行解析。
今天就来看看利用kali,如何来收集DNS信息吧。
Part.1
域名解析流程
DNS解析过程
首先我们来看一下DNS的一些基础知识。
(1)域名
域名是设计成层次型,分别是根域、顶级域、二级层域、子域和主机。
一个完整的域名能够代表主机在网络中的具体位置,如下:
//ruijie.com.cn为域名的主体
//www.ruijie.com.cn是URL统一资源定位符,而不是域名,www为主机名,上面运行着服务器。
访问IP和域名都可以访问到对应的服务器,但域名便于记忆。
(2)域名解析
当我们访问一个域名的时候,会先将域名解析成ip地址。客户端会按以下步骤进行域名解析:
- 浏览器先检查缓存中有没有域名对应的ip地址。
- 浏览器没有缓存,就检查操作系统中的hosts文件,windows在 C:windowsSystem32driversetchosts文件,linux在/etc/hosts文件中配置。
- hosts没有配置就会向本地DNS域名服务器发起查询请求。
- 本地DNS服务器没有缓存的话,就会继续向另外一台DNS服务器查询,直到解析出需访问主机的IP地址,回复给PC,并缓存到本地。
//DNS查询请求分为迭代查询和递归查询两种,基于TCP/UDP的53端口。
(3)迭代查询
客户机发出查询请求后,若该DNS服务器中不包含所需数据,它会告诉客户机另外一台DNS服务器的IP地址,使客户机自动转向另外一台DNS服务器查询,依次类推,直到查到数据,否则由最后一台DNS服务器通知客户机查询失败。
(4)递归查询
客户机发出查询请求后,DNS服务器必须告诉客户机正确的数据(IP地址)或通知客户机找不到其所需数据。如果DNS服务器内没有所需要的数据,则DNS服务器会代替客户机向其他的DNS服务器查询。
客户机只需接触一次DNS服务器系统,就可得到所需的节点地址。
Part.2
nslookup
nslookup
Nslookup是一款kali自带的DNS解析测试工具,主要借助DNS服务器的递归查询,解析的过程对测试用户不可见。
输入nslookup进入,如下:
(1)查询a记录
a记录:指定主机名(或域名)与其对应的IP地址的记录。
解析www.baidu.com:
首先解析成了www.a.shifen.com,是一个cname记录。
//cname记录:别名记录,允许将多个域名映射到同一个IP地址。
再解析cname,最终得到真实地址61.135.169.121和61.135.169.125
上面的dns服务器是192.168.211.2,还可以指定任意server进行查询:
(2)查询其他类型记录
mx记录:邮件交换记录,它指向一个邮件服务器。
ns记录:用来明确当前你的域名是由哪个DNS服务器来进行解析的。
例如查询一下mx记录:
//当有多个邮件服务器时,权重越低越优先(此处10最底)
再解析上面得到的邮件服务器地址:
查询ns记录:
根据IP反查域名:
set type=any,会查出所有信息:
nslookup还可以不进入交互界面查询:
//-type也可以写成-q;指定server为114.114.114.114进行解析
Part.3
dig工具
dig工具
除了nslookup以外,还有一款DNS信息收集软件dig。
不同于nslookup,dig查询主要进行DNS迭代查询,其具体的解析过程对测试用户是可见的。
(1)基本功能
//指定DNS服务器114.114.114.114进行解析
解析mx记录:
反向解析获取域名:
(2)结果筛选功能
dig还可以对查询到的结果进行筛选:
noall 过滤掉所有参数
noall answer 只显示最后的查询结果
(3)bind版本查询
查询DNS服务器bind版本信息,如果该版本有漏洞,可以把DNS记录都获取下来。
比如我们先获取某高校的ns记录:
查询相应DNS服务器的bind版本信息:
//txt chaos VERSION.BIND代表bind版本记录
当然有时候什么都查不到,因为被使用者过滤了:
(4)DNS追踪功能
从根域服务器开始,逐级进行迭代查询。
例如追踪www.baidu.com,首先查询根域服务器:
从根域服务器拿到com.域地址:
再挑选一个com.域服务器查询baidu.com:
最后选取ns3.baidu.com查询www.baidu.com:
(5)DNS区域传输
首先查询百度的ns记录:
选取一个域名服务器,请求baidu.com的区域传输记录:
这里失败了,因为有访问控制,我们没有权限。
如果因为管理员的疏忽,没有设置权限管理,就可以拿到DNS服务器里面的主机记录。
Part.4
whois
whois
通过whois命令,我们可以收集DNS的注册信息。
利用收集到的信息可以做一些社会工程学相关的东西。
以某域名为例:
Part.5
DNS字典爆破
DNS字典爆破
kali自带很多DNS爆破工具,以fierce为例。
使用hosts.txt字典爆破baidu.com:
可以看到,工具先查询了ns记录:
然后再通过这些DNS服务器进行爆破,得出域名:
其他工具的原理类似。
这里推荐一个李姐姐的神器:
https://github.com/lijiejie/subDomainsBrute
通过高并发DNS暴力枚举,可以发现其他工具无法探测到的域名。
Part.6
结语
以上就是kali中我们可以用来进行DNS信息收集的一些工具了。大家都明白了吗?