本节书摘来自异步社区《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。
相关资源:敏捷开发V1.0.pptx