预备知识
1. dnsrecon
dnsrecon是一款DNS记录的工具,其中一个特色是通过Google查出站点的子域名与IP信息。与dnsmap暴力破解子域名是不一样的,因此速度比dnsmap快,缺点是返回结果不如dnsmap全面。不仅如此,它还是一款针对DNS的安全探测工具,包含多项枚举探测功能,包括DNS域传送、DNS递归等。
很遗憾,由于参数多较复杂以及实验环境的限制,实验不能对全部参数进行详解,尽量对常用的几个参数进行实验。
下面是常用的几个参数和用法:
Usage: dnsrecon.py <options>
-d, --domain <domain> Domain to Target for enumeration.
这个参数用的最多,指定目标域名
-r, --range <range> IP Range for reverse look-up brute force in formats (first-last) or in (range/bitmask).
这个参数是用来进行反向解析的。下面会有具体实例演示
-D, --dictionary <file> Dictionary file of sub-domain and hostnames to use for brute force.
指定字典文件,对目标进行枚举。
-t, --type <types> Specify the type of enumeration to perform:
std To Enumerate general record types, enumerates.SOA, NS, A, AAAA, MX and SRV if AXRF on the NS Servers fail.
rvl To Reverse Look Up a given CIDR IP range.
brt To Brute force Domains and Hosts using a given dictionary.
srv To Enumerate common SRV Records for a given domain.
axfr Test all NS Servers in a domain for misconfigured zone transfers.
goo Perform Google search for sub-domains and hosts.
snoop To Perform a Cache Snooping against all NS servers for a given domain, testing all with file containing the domains, file given with -D option.
tld Will remove the TLD of given domain and test against all TLD's registered in IANA zonewalk Will perform a DNSSEC Zone Walk using NSEC Records.
T参数后面有好几种类型,具体使用那个选项取决与使用者。
--threads <number> Number of threads to use in Range Reverse Look-up, Forward Look-up Brute force and SRV Record Enumeration.
指定线程
--xml <file> XML File to save found records.
保存结果文件
2. fierce
fierce是使用多种技术来扫描目标主机IP地址和主机名的一个DNS服务器枚举工具。运用递归的方式来工作。它的工作原理是先通过查询本地DNS服务器来查找目标DNS服务器,然后使用目标DNS服务器来查找子域名。fierce的主要特点就是可以用来定位独立IP空间对应域名和主机名。
语法:perl fierce.pl [-dns example.com] [OPTIONS]
由于这个工具参数众多,而且有些参数在实验环境中不能很好的演示,在下面的任务中分别演示讲解几个常用的参数。
3. Dnsmap
Dnsmap也是一款搜集信息的工具,它和Dnsenum一样是用于获得子域名的强有力的工具。
Dnsmap参数比较简单,任务三有实例演示。
usage: dnsmap <target-domain> [options]
dnsmap target-domain.com -w yourwordlist.txt -r /tmp/domainbf_results.txt
实验目的
通过该实验了解dnsrecon、fierce、dnsmap这三个工具的使用方法,并使用该工具对DNS服务器进行信息收集整理,了解并熟悉他们的常用参数意义。
实验环境
服务器:CentOS release 6.5 ,IP地址:10.1.1.101 域名:dns.dnstest.com
客户端:kali linux,IP地址:10.1.1.100
实验步骤一
任务描述:这个工具参数较多,先熟悉理解部分常用参数意义才能顺利完成下面实验,学会初步使用dnsrecon
首先设置客户端(client)的DNS服务器指向10.1.1.101,在/etc/resolv.conf中加入nameserver 10.1.1.101
这是原来的内容
修改为下面这样
Dnsrecon用法介绍:
语法: dnsrecon.pl [Options] <domain>
1. -d参数。后面直接加目标域名
可以看到DNS服务器和IP。自己可以在真实环境中测试,查询到的信息会更多,比如以合天为例:
2. -r参数。指定一个ip范围进行反向解析。
参数后面直接跟一个ip范围可以是掩码也可以是范围形式。自己可以到真实环境中测试,这里不再给出截图,有可能涉及到某些敏感信息。
3. -threads参数。指定线程
具体线程根据你的实际配置更改。
4. -c参数把查询结果保存到本地文件
现在查看结果
是以CSV格式输出的。自己可在实验环境中测试。
5. -a参数。就是以标准枚举执行axfr请求
这里传输失败,说明不存在漏洞。现在来看看服务器的安全配置。路径/etc/named.conf
注释掉这一行,重启服务:service named restart
成功查询到服务器所有子域名。-a参数并非唯一一个可用来检测漏洞的参数,下面还会介绍一个另一个非常有用的参数-t。
实验步骤二
任务描述:了解dnsrecon工具的-t参数和其各个子参的意义,并了解其他几个不太常用的参数。另外,使用dnsmap工具进行查询,熟悉参数的意义和使用方法。
1. -t参数,后面跟执行枚举的类型,类型如下: STD、RVL、BRT、SRV、AXFR、GOO、SNOOP、TLD、ZONEWALK。这个参数比较多,不能一一介绍,下面演示几个常用的参数,其他的可自行尝试。
-t axfr也可以检测域传送漏洞,也可以仔细和-a比较一下
2. -D参数,带字典爆破子域名
新建文件do.txt
-D+字典 –t brt进行子域名枚举。命中了字典的一个记录
这个工具还有很多其他参数,因为实验环境或其他问题不再一一赘述,可自行尝试。有些参数可能不太常用,但有时候会有意想不到的效果
Dnsmap options:
-w <wordlist-file>
-r <regular-results-file>
-c <csv-results-file>
-d <delay-millisecs>
-i <ips-to-ignore> (useful if you're obtaining false positives)
常用参数:
-w 指定字典文件
-r 指定保存结果文件
实例:
# dnsmap dnstest.com -w do.txt -r map.txt
查看结果
实验步骤三
任务描述:利用fierce工具尽可能获取DNS服务器的基本信息,使用指定的外部字典,获取服务器信息并保存到本地文件。
Fierce这个工具最简单的用法是后面直接跟上-dns
它会自动去检测是否存在域传送漏洞。如果不存在然后使用自带字典枚举域名。工具自带的字典路径/usr/share/fierce/,有个hosts.txt文件
这里是预置好了,可能效果不会那么好。
现在登录到服务器上,查看安全配置。路径是/etc/named.conf
注释掉这一行就会产生传送漏洞。重启服务再来测试
可获取所有子域名。
新建一个字典文件
执行命令
首先自动去检测是否存在域传送漏洞。如果没有,然后根据字典进行域名枚举。这个工具是运用递归的方式来工作。它的工作原理是先通过查询本地DNS服务器来查找目标DNS服务器,然后使用目标DNS服务器来查找子域名。执行命令时可能需要等待几分钟…..
把获取结果保存到本地文件中
# fierce -dns dnstest.com -wordlist do.txt -file ffile.txt
具体实验截图:
cat hosts.txt 工具自带的字典