本节书摘来自异步社区《Nmap渗透测试指南》一书中的第7章7.6节DNS信息搜集,作者 商广明,更多章节内容可以访问云栖社区“异步社区”公众号查看。
7.6 DNS信息搜集
表7.6所示为本章节所需Nmap命令表,
表中加粗命令为本小节所需命令——DNS信息搜集。
域名系统(Domain Name System,DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
DNS系统中,常见的资源记录类型包括以下几种。
① 主机记录(A记录):RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
② 别名记录(CNAME记录):RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
③ IPv6主机记录(AAAA记录):RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
④ 服务位置记录(SRV记录):RFC 2782定义,用于定义提供特定服务的服务器的位置,如主机(hostname)、端口(port number)等。
⑤ NAPTR记录:RFC 3403定义,它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。
DNS通过允许一个名称服务器把它的一部分名称服务(众所周知的zone)“委托”给子服务器,从而实现了一种层次结构的名称空间。此外,DNS还提供了一些额外的信息,例如系统别名、联系信息以及哪一个主机正在充当系统组或域的邮件枢纽。
任何一个使用IP的计算机网络可以使用DNS来实现自己的私有名称系统。尽管如此,当提到在公共的Internet DNS系统上实现的域名时,术语“域名”是最常使用的。
这是基于504个全球范围的“根域名服务器”(分成13组,分别编号为A至M)。从这504个根服务器开始,余下的Internet DNS命名空间被委托给其他的DNS服务器,这些服务器提供DNS名称空间中的特定部分。
操作步骤
使用命令“nmap --script dns-brute目标”进行DNS信息搜集。
root@Wing:~# nmap --script dns-brute www.xxxx.com
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-12 17:30 CST
Nmap scan report for nmap (221.192.153.46)
Host is up (0.00017s latency).
All 1000 scanned ports on nmap (221.192.153.46) are filtered
Host script results:
|_dns-brute: Can't guess domain of "nmap"; use dns-brute.domain script argument.
Nmap scan report for www.xxxx.com (xxx.237.1.160)
Host is up (0.024s latency).
Other addresses for www.xxxx.com (not scanned): xxx.10.91.49
rDNS record for xxx.237.1.160: hkhdc.laws.ms
Not shown: 994 filtered ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
5900/tcp open vnc
8080/tcp open http-proxy
10082/tcp closed amandaidx
Host script results:
| dns-brute:
| DNS Brute-force hostnames
| www.xxxx.com - xxx.237.1.160
| corp.xxxx.com - xxx.10.91.49
| corp.xxxx.com - xxx.237.1.160
| whois.xxxx.com - xxx.237.1.160
| whois.xxxx.com - xxx.10.91.49
| ldap.xxxx.com - xxx.10.91.49
| ldap.xxxx.com - xxx.237.1.160
| mx0.xxxx.com - xxx.237.1.160
| mx0.xxxx.com - xxx.10.91.49
| linux.xxxx.com - xxx.10.91.49
| linux.xxxx.com - xxx.237.1.160
| mx1.xxxx.com - xxx.10.91.49
| mx1.xxxx.com - xxx.237.1.160
| mail.xxxx.com - xxx.237.1.160
| mail.xxxx.com - xxx.10.91.49
| server.xxxx.com - xxx.10.91.49
| server.xxxx.com - xxx.237.1.160
| citrix.xxxx.com - xxx.237.1.160
| citrix.xxxx.com - xxx.10.91.49
| ftp0.xxxx.com - xxx.237.1.160
| ftp0.xxxx.com - xxx.10.91.49
| cms.xxxx.com - xxx.10.91.49
| cms.xxxx.com - xxx.237.1.160
| erp.xxxx.com - xxx.10.91.49
| erp.xxxx.com - xxx.237.1.160
| ops.xxxx.com - xxx.237.1.160
| ops.xxxx.com - xxx.10.91.49
| host.xxxx.com - xxx.237.1.160
| host.xxxx.com - xxx.10.91.49
| pbx.xxxx.com - xxx.10.91.49
| pbx.xxxx.com - xxx.237.1.160
| log.xxxx.com - xxx.10.91.49
| images.xxxx.com - xxx.10.91.49
| images.xxxx.com - xxx.237.1.160
| internal.xxxx.com - xxx.237.1.160
| internal.xxxx.com - xxx.10.91.49
| internet.xxxx.com - xxx.237.1.160
|_ internet.xxxx.com - xxx.10.91.49
Nmap done: 2 IP addresses (2 hosts up) scanned in 193.31 seconds
root@Wing:~#
分析
同过对脚本dns-brute的调用可以查询到目标域名所有地址,当然这是基于暴力破解的,并不是所有的域名都可以被暴力破解出来。
该脚本的默认线程是5,如果是扫描一个大型的网站,速度可能会较慢,可以设置一下扫描线程,nmap--script dns-brute dns-brute.threads=10 www.xxx.com,设置10个线程时相应的扫描速度会增加很多。如果需要查询多个域名我们也可以指定一个列表:nmap --script dns-brute dns-brute. threads=10,dns-brute.hostlist www.badu.com。