诸神之眼:Nmap网络安全审计技术揭秘
上QQ阅读APP看书,第一时间看更新

4.4 为什么要进行服务发现

在对一个企业的一台服务器(例如192.168.153.131)进行安全审查的时候,发现一个网络管理人员仍然在使用不安全的telnet服务,对此建议使用更为安全的SSH服务来代替telnet,扫描过程如图4-4所示。

图4-4 在目标系统上发现了不安全的telnet服务

再次进行检查时,得到如图4-5所示的结果。

图4-5 目标系统已经替换为安全的SSH服务

看起来好像网络管理人员听从了建议,将不安全的应用telnet替换成了SSH。

不过,端口检查只是快速检查的一部分,在进一步检查时,发现该网络管理人员只是将telnet服务转移到21端口上,使它看起来就如同一个SSH服务一样,如图4-6所示。偷懒的网络管理人员这一次试图利用他自己的经验蒙混过关。

图4-6 经过服务识别之后检测到的目标服务

当再一次给出渗透测试报告的时候,报告中清楚地给出了改进意见。

可是为什么Nmap前后会给出两种完全不同的答案呢?

这主要是因为前两次扫描的时候实际上并没有真的对目标的服务进行扫描,而是根据一个对应关系直接给出了值。第三次才真正对目标服务进行了扫描。

为什么Nmap没有进行服务识别的相关操作也得到了服务类型呢?一般情况下,FTP服务是运行在21端口的,HTTP服务对应80端口,诸如这些端口都是公知端口。在进行Nmap端口扫描时,Nmap并没有进行服务识别,而是将端口号在自己的端口服务表数据库中进行查找,然后返回告诉你。一般情况下,这个端口开放的服务是这个,也就是说,这种返回的服务只是数据库中的,并非事实上端口所运行的服务,只是一般情况下大家都会使用固定的端口进行固定的服务。把Nmap指向一个远程机器,它可能告诉您端口25/tcp、80/tcp和53/udp是开放的。通过包含大约2200个著名服务的Nmap-services数据库,Nmap可以报告哪些端口可能对应于邮件服务器(SMTP)、Web服务器(HTTP)和域名服务器(DNS)。这种查询通常是正确的—事实上,绝大多数在TCP端口25监听的守护进程是邮件服务器。图4-7中给出了Nmap-services数据库中的详细信息。

图4-7 Nmap-services数据库中的详细信息

然而,决不能百分之一百地相信这些!一个网络使用人员完全可以在一些不相干的端口上运行服务。即使Nmap是对的,假设运行服务的确实是SMTP、HTTP和DNS,那也没有提供特别多的信息。为公司或者客户做安全评估(或者甚至简单的网络明细清单)时,你确实想知道正在运行什么邮件和域名服务器以及它们的版本。一个精确的版本号对了解服务器有什么漏洞提供了巨大帮助,而服务发现可以帮你获得该信息。