2.9 Nmap活跃主机发现中与DNS协议相关的选项
2.9.1 DNS协议解析
DNS是一个几乎每天都在使用的协议,但是绝大多数人并没有意识到它的存在。其实每次在浏览器中输入一个网址的时候,DNS协议其实就在起作用了。DNS协议会将如http://www. tstc.edu.cn这样的域名和如60.2.22.35这样的IP地址关联起来。这样做的好处就是在访问网站的时候,无须记忆那些毫无意义的数字,只需要记住一些有意义的名字就可以了。这一点就好像你可以轻而易举地记住你朋友的名字,但是很难记住他的身份证号码。当要访问一个网站却不知道它的IP地址时,可以使用这些域名来访问,如果使用的主机也不知道这个域名对应的IP地址的话,它就会向DNS服务器发出请求,而这个服务器中存储了IP地址与域名的映射记录,它在接到这个请求以后,会将请求中的域名对应的IP地址以应答的方式发回给你,这样就可以访问目标网站了。
2.9.2 Nmap中的DNS选项
Nmap在对目标主机进行扫描的时候,如果目标主机是一台对外提供Web服务的服务器,那么它除了有一个IP地址之外,还会有一个域名(例如本书中的例子,IP地址为60.2.22.35,它的域名就是http://www.tstc.edu.cn)。在对一台主机进行扫描的时候,如果它有域名的话,Nmap会向域名服务器提出请求,显示该IP所对应的域名。但是,在进行扫描时,可能扫描的是一个范围,在这个范围内主机可能有的处于活跃状态,而有的却处于非活跃状态,如果直接进行扫描,Nmap只会对处于活跃状态的主机进行DNS转换,而非活跃状态的主机则不予处理。
从这里起,有一部分的显示结果采用Nmap的图形化操作界面Zenmap来显示,关于Zenmap会在后面有详细的介绍,这里主要是为了直观显示结果。图2-8展示了Zenmap的工作界面。现在大家对于Zenmap的使用方法只需要了解两点:在图2-8中1处用于输入Nmap的命令,2处用于显示Nmap的扫描结果。
图2-8 Zenmap的工作界面
例如,如果希望将所有的目标IP无论是否是活跃主机所对应的域名都列出来的话,可以使用-R参数,如图2-9所示。
图2-9 使用参数-R的扫描结果
命令语法:Nmap -R [目标IP]
如果强制将每一个IP都转换为域名,将会耗费大量的时间,有时可能已经知道主机的域名,无须进行任何转换,此时就可以使用-n参数来取消对域名的转换,如图2-10所示。这一点在对大规模的网络进行扫描时效果极其明显。
图2-10 使用参数-n的扫描结果
命令语法:Nmap -n [目标IP]
这里的转换使用的都是Nmap内置的方法,如果想使用Nmap所在主机的DNS配置进行转换,就可以使用这个参数。不过这种方法很少用,因为会变慢。
如果不想在自己的DNS服务器留下这次查询的记录,可能需要使用指定的DNS服务器来查询目标,这时就可以使用--dns-servers参数。
命令语法:Nmap --dns-servers [server1, server2, etc] [目标IP]
下面我们以202.99.160.68作为DNS服务器来完成扫描。
Nmap --packet-trace -R --dns-servers 202.99.160.68211.81.200.8
从图2-11中可以看出,整个扫描过程中所使用的DNS服务器都是202.99.160.68。
图2-11 使用参数--dns-servers的扫描结果