【工具篇】通过kali进行DNS信息收集

2019-10-24 16:10:56 浏览数 (1)

众所周知,在对目标发起渗透之前,我们需要先进行信息收集。

信息收集是否详细很大程度上决定了我们渗透测试的成功率。

如果我们拿到的是一个域名,那么第一步就是对该域名进行解析。

今天就来看看利用kali,如何来收集DNS信息吧。

Part.1

域名解析流程

DNS解析过程

首先我们来看一下DNS的一些基础知识。

(1)域名

域名是设计成层次型,分别是根域、顶级域、二级层域、子域和主机。

一个完整的域名能够代表主机在网络中的具体位置,如下:

//ruijie.com.cn为域名的主体

//www.ruijie.com.cn是URL统一资源定位符,而不是域名,www为主机名,上面运行着服务器。

访问IP和域名都可以访问到对应的服务器,但域名便于记忆。

(2)域名解析

当我们访问一个域名的时候,会先将域名解析成ip地址。客户端会按以下步骤进行域名解析:

  1. 浏览器先检查缓存中有没有域名对应的ip地址。
  2. 浏览器没有缓存,就检查操作系统中的hosts文件,windows在 C:windowsSystem32driversetchosts文件,linux在/etc/hosts文件中配置。
  3. hosts没有配置就会向本地DNS域名服务器发起查询请求。
  4. 本地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信息收集的一些工具了。大家都明白了吗?

0 人点赞