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

4.5 如何使用Nmap进行服务发现

如何进行更精确的服务发现呢?Nmap提供了更精确的服务及版本检测选项,可通过添加选项-sV进行服务和版本检测。服务和版本检测还有更多的选项。

首先进行端口扫描,默认情况下使用SYN扫描。

其次进行服务识别,发送探针报文,得到返回确认值,确认服务。

最后进行版本识别,发送探针报文,得到返回的报文信息,分析得出服务的版本。

在发现开放的TCP端口或者UDP端口之后,服务发现程序将会对这些端口进行探测,以此确定该端口运行的具体服务。如果在扫描某个UDP端口后仍然无法确定该端口是open还是filtered,那么该端口状态就被标记为open|filtered。版本探测将试图从这些端口引发一个响应(就像它对开放端口做的一样),如果成功,就把状态改为open。open|filtered TCP端口用同样的方法对待。Nmap-service-probes数据库包含查询不同服务的探测报文和解析识别响应的匹配表达式。版本检测程序会将探测结果与Nmap-service-probes数据库中的内容进行比较,如果与其中的某一项匹配成功,就可以确认目标端口运行的具体服务。当Nmap从某个服务收到响应,但不能在数据库中找到匹配时,它就打印一个特殊的fingerprint和一个URL方便给你提交,如果确实知道端口运行什么服务,可以花两分钟提交自己的发现,让每个人受益。

可以使用以下选项打开和控制版本检测。

-sV(版本探测)

打开版本探测。也可以用-A同时打开操作系统探测和服务发现。

--allports(不为版本探测排除任何端口)

通常,Nmap在进行版本探测时不会对目标的全部端口进行扫描,而是会跳过一些端口,例如端口号为9100的TCP端口。如果对这个端口进行扫描,而目标又恰好是一台打印机的话,这台打印机就有可能会将所有的数据都打印出来。如果确实有必要的话,也可以使用--allports扫描所有的端口。

--version-intensity <intensity>(设置版本扫描强度)

当进行版本扫描(-sV)时,Nmap发送一系列探测报文,每个报文都被赋予一个1到9之间的值。这里的强度水平说明了应该使用哪些探测报文。数值越高,服务越有可能被正确识别。然而,高强度扫描花更多时间。强度值必须在0和9之间。默认是7。

--version-light(打开轻量级模式)

--version-light其实就相当于--version-intensity 2。这种轻量级模式使版本扫描速度快了许多,不过使用这种模式对服务进行扫描成功的几率也小一些。

--version-all(尝试每个探测)

--version-all其实就相当于version-intensity 9,保证对每个端口尝试所有探测报文。

--version-trace(跟踪版本扫描活动)

这将会使Nmap打印出关于正在进行的扫描的详细调试信息。它是你用--packet-trace所得到的信息的子集。

-sR(RPC扫描)

这种方法和许多端口扫描方法联合使用。它对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,试图确定它们是否RPC端口,如果是,可以确定是什么程序和版本号。

刘开该如何使用本章中学到的知识呢?上一章刘开已经找到了目标的IP,下一步是找出这个目标的服务,要知道很多软件上运行的服务都是存在漏洞的。

扫描的结果如下。

    Starting Nmap 7.30 ( https://nmap.org )
    Nmap scan report for bogon (192.168.153.131)
    Host is up (0.00018s latency).
    Not shown: 998 closed ports
    PORT       STATE   SERVICE        VERSION
    21/tcp     open    ftp            Microsoft ftpd 5.0
    80/tcp     open    http           PMSoftware Simple WebServer 2.2
    MAC Address: 00:0C:29:90:DF:C3 (VMware)Device type: general purposeRunning:
      Microsoft Windows 7
    Nmap done: 1 IP address (1 host up) scanned in 54.10 seconds

刘开经过扫描发现了目标主机上居然安装着PMSoftware Simple WebServer 2.2,要知道Windows 7并不像Windows XP和Windows 2003那样存在大量的漏洞,但是这一款PMSoftware Simple WebServer软件上存在着简单Web服务器连接缓冲区溢出漏洞。

现在刘开只需要向目标发送一个恶意的HTTP请求,从而引起目标应用程序的缓冲区溢出,就可以最终控制目标计算机。但是这一切又如何实现呢?

对版本扫描检测的讲解到此为止,更加深入的部分会在第12章进行介绍。