使用Nmap进行漏洞扫描
Nmap,即网络映射器,是一种常用的网络扫描工具。作为渗透测试人员,Nmap是我们日常使用的工具,对于验证配置和识别潜在漏洞至关重要。凭借其众多选项和功能,Nmap的应用场景非常广泛,包括常规TCP和UDP端口扫描、验证服务软件运行版本、暴力破解常用凭据以及验证其他工具发现的漏洞。
在本博客中,我们将介绍使用内置Nmap NSE脚本进行基本漏洞扫描的方法。本文假设您对Nmap的核心功能和NSE脚本有一定了解。如果您不熟悉Nmap,建议先阅读Serena DiPenti的博客《像专业人士一样使用Nmap》(https://www.blackhillsinfosec.com/shenetworks-recommends-using-nmap-like-a-pro/),快速了解基本Nmap功能和常用脚本。
NSE脚本类别
首先,简要介绍NSE脚本类别。Nmap脚本引擎(NSE)定义了类别,将具有相似属性的脚本分组。脚本可以根据其功能属于多个类别,分为以下十四个类别:
- auth
- broadcast
- brute
- default
- discovery
- dos
- exploit
- external
- fuzzer
- intrusive
- malware
- safe
- version
- vuln
本文将主要关注default和vuln类别。default类别中的脚本是根据速度、实用性、详细程度、可靠性和侵入性等因素选择的。如果您想了解特定类别中包含的脚本,可以使用以下命令查看每个类别中的脚本,例如查看vuln类别的脚本:
|
|
输出包括该类别中所有脚本的详细信息,如以下截图所示。每个条目还包括每个脚本的类别成员资格。例如,afp-path-vuln脚本包含在exploit、intrusive和vuln类别中。
Nmap默认脚本
使用Nmap查找环境中的一些低悬果实可以通过以下命令完成。我们将使用子网192.168.56.0/24扫描实验室网络,该网络由易受攻击的虚拟机组成,用于演示目的。
|
|
让我们分解这个命令,然后讨论结果。该命令运行Nmap,使用-sC、-sV、-p-和-oA选项。以下是每个选项的用途分解:
- -sC:执行NSE的“default”类别脚本。这些脚本提供安全且有用的检查,包括基本漏洞、服务元数据、SSL详细信息和默认配置。
- -sV:启用服务版本检测。这有助于确定开放端口上运行的服务的具体版本,对于识别与这些版本相关的漏洞非常有用。它还提供其他脚本在扫描期间可以利用的数据。
- -p-:扫描所有65,535个TCP端口。这是一个全面的端口扫描,可以用-p 1-65535替换,效果相同;区别仅在于风格。
- -oA:同时生成三种类型的输出(普通、XML和可grep格式),使用指定的文件名基础。这对于以多种格式保存扫描结果的全面记录非常有用。
- -A:激活激进扫描功能,包括操作系统检测(-O)、服务版本检测(-sV)、默认脚本扫描(-sC)和路由跟踪(–traceroute)。这个选项是进行全面枚举的强大工具,但更具侵入性且更容易被检测。
此命令的输出如下截图所示。第一张图像显示了Windows主机上两个不同服务的输出,并标注了默认脚本生成的附加信息。
下一张图像显示了终端服务(RDP)的信息,其中rdp-ntlm-info、ssl-cert和ssl-date脚本提供了附加信息,包括域名和系统时间。
Nmap Vuln脚本
默认脚本可以提供大量主机信息,但并未真正提供直接的漏洞信息,例如主机是否易受特定CVE影响。这就是vuln类别派上用场的地方。这是一个内置的NSE脚本类别,用于漏洞检查,称为vuln。要调用这组脚本,可以使用以下命令语法。注意-sC选项未启用,但可以根据扫描需求包含。
|
|
以下截图显示了一些针对之前扫描的同一Windows主机运行的附加vuln脚本。该主机运行SMB服务,您会注意到漏洞检查脚本专注于SMB或SAMBA漏洞。该主机缺少MS17-010修补的著名SMB漏洞的补丁,Nmap脚本提供了CVE编号信息以及获取更多信息的附加链接。
Vulners NSE脚本
如果您想获取更多关于影响特定系统的CVE信息,请查看vulners NSE脚本。该脚本为目标系统上每个服务提供大量可能适用的CVE信息。需要注意的是,包含CVE的数据库不是本地的,该脚本会将流量发送到Vulners API。如果您的扫描主机没有互联网访问权限,这一点非常重要。要调用此脚本,可以使用以下语法。注意-sV选项对此脚本是必需的。
|
|
该脚本的输出非常庞大。以下截图中的示例输出显示了从Vulners数据库为OpenSSH 9.2p1提取的一些漏洞和CVE,以及指向Vulners网站的链接,提供每个项目的更多信息。版本信息由-sV选项提供。
正如我们所看到的,Nmap NSE脚本除了端口和服务版本外,还可以提供大量额外的漏洞数据。Nmap还有更多选项,建议查阅Nmap文档(https://nmap.org/docs.html)及其GitHub页面(https://github.com/nmap/nmap)。