如何使用 Nmap 进行漏洞扫描?

Nmap,又称网络映射器,是一款功能强大的工具套件,专为网络功能和渗透测试而设计,其功能涵盖端口扫描和漏洞检测等多个方面。

Nmap脚本引擎(NSE)是Nmap最受欢迎和最强大的功能之一。 这些Nmap漏洞扫描脚本被广泛应用于渗透测试人员和黑客,用于检查常见的已知漏洞。

“常见漏洞和披露”(CVE)是一个公开的数据安全问题数据库。它充当检测与信息系统安全相关的漏洞和威胁的参考模型。

在本文中,我们将深入探讨如何利用Nmap进行漏洞扫描。

让我们开始吧!

Nmap的安装

Nmap几乎预装在所有的Linux发行版本中。如果您的系统中没有预装,您需要手动安装。以下命令可以帮助您轻松完成安装:

apt-get install nmap

此外,您还可以通过克隆官方的git仓库来安装:

git clone https://github.com/nmap/nmap.git

接下来,导航到该目录并使用以下命令安装所需依赖:

./configure
make
make install

该软件的最新版本以及适用于Windows、macOS和Linux(RPM)的二进制安装程序可以在这里找到。

使用Nmap进行漏洞扫描

Nmap-vulners、vulscan和vuln是Nmap搜索引擎中最常用和流行的CVE检测脚本。 这些脚本使您能够发现有关系统安全漏洞的关键信息。

Nmap漏洞扫描器

其中一个最著名的漏洞扫描器是Nmap Vulners。接下来,我们将探讨如何设置这个工具以及如何运行基本的CVE扫描。Nmap脚本引擎会搜索HTTP响应,以识别给定脚本的CPE。

安装步骤

要安装Nmap-vulners脚本,请使用以下命令导航到Nmap脚本目录:

cd /usr/share/nmap/scripts/

下一步是克隆git存储库:

git clone https://github.com/vulnersCom/nmap-vulners.git

克隆git存储库后,您不需要进行任何额外的配置。该工具将自动安装。

如果您想查看Nmap-vulners数据库中存在的NSE脚本,请使用ls命令。它将在终端上显示所有.nse扩展脚本。

使用方法

使用NSE脚本非常简单。只需将-script参数传递给我们的Nmap命令,以指定要使用的NSE脚本即可:

nmap -sV --script vulners [--script-args mincvss=<arg_val>] <target>

使用NSE脚本时,请不要忘记传递“-sV”参数。如果没有从Nmap接收到任何版本信息,Nmap-vulners将无法访问Vulners漏洞利用数据库。因此,始终需要-sV参数。

示例命令

语法非常简单。只需使用“–script”选项调用脚本,并指定漏洞引擎和目标即可开始扫描:

nmap -sV --script nmap-vulners/ <target>

如果您想扫描任何特定端口,只需在命令末尾添加“-p”选项,并传递您想要扫描的端口号即可:

nmap -sV --script nmap-vulners/ <target> -p80,223

Nmap – 漏洞脚本

NSE脚本会根据每个脚本所属的一组预定类别进行分类。其中包括身份验证、广播、暴力破解、侵入性、恶意软件、安全、版本和漏洞等类别。您可以在这里找到NSE脚本的所有类别类型及其阶段。

属于“vuln”类别的脚本会查找特定的已知漏洞,并且仅在目标系统中发现任何漏洞时才会报告:

nmap -sV --script vuln <target>

Nmap-vulscan

Vulscan是一个NSE脚本,它可以帮助Nmap根据服务和版本检测来检测目标上的漏洞。Vulscan就像Nmap的一个模块,将其转换为漏洞扫描程序。Nmap的-sV选项允许每个服务的版本检测,这对于识别系统中检测到的漏洞的潜在利用至关重要。

目前,可以使用以下预安装的数据库:

  • 漏洞利用数据库.csv
  • osvdb.csv
  • 安全跟踪器.csv
  • 开放瓦斯.csv
  • scipvuldb.csv
  • xforce.csv
  • 安全焦点.csv
  • cve.csv

安装步骤

要安装Vulscan,首先,使用以下命令进入Nmap脚本目录:

cd /usr/share/nmap/scripts/

下一步是克隆git存储库并安装所有必要的需求:

git clone https://github.com/scipag/vulscan.git

ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan 

Vulscan使用我们机器上本地保存的预配置数据库。要更新数据库,请转到更新程序目录。在终端中输入以下命令以导航到更新程序目录:

cd vulscan/utilities/updater/

接下来,更改要在系统中运行的文件的权限:

chmod +x updateFiles.sh

最后,使用以下命令更新漏洞利用数据库:

 ./updateFiles.sh

使用方法

让我们使用Vulscan来执行一次Nmap漏洞扫描。vulscan NSE脚本的使用方式与nmap-vulners相同:

nmap -sV --script vulscan <target>

默认情况下,Vulscan会同时搜索所有数据库。使用所有数据库查询信息可能需要大量时间。使用vulscandb参数,一次只能传递一个CVE数据库:

--script-args vulscandb=database_name

示例命令

nmap -sV --script vulscan --script-args vulscandb=exploit.csv <target> -p 80,233

单独漏洞扫描

也可以使用每个类别中的特定脚本执行单独的漏洞扫描。这里提供了所有600多个NSE脚本和139个NSE库的列表。

例子

  • http-csrf:此脚本检测跨站点请求伪造(CSRF)漏洞。
nmap -sV --script http-csrf <target>
  • http-sherlock:旨在利用Web应用程序中的“shellshock”漏洞。
nmap -sV --script http-sherlock <target>
  • http-slowloris-attack:在不发起DoS攻击的情况下,此脚本会检查Web服务器或目标系统是否容易受到Slowloris DoS攻击。
nmap -sV --script http-slowloris-check <target>
  • http-vmware-path-vuln:VMWare ESX、ESXi和Server都经过了路径遍历漏洞测试。
nmap -sV --script http-vmware-path-vuln <target>
  • http-passwd:尝试检索/etc/passwd或boot.ini以查看Web服务器是否容易受到目录遍历的影响。
nmap -sV --script http-passwd <target>
  • http-internal-ip-disclosure:当发送一个没有Host头的HTTP/1.0请求时,这个检查会判断Web服务器是否泄露了它的内部IP地址。
nmap -sV --script http-internal-ip-disclosure <target>
  • http-vuln-cve2013-0156:检测容易受到DoS攻击和命令注入攻击的Ruby on Rails服务器。
nmap -sV --script http-vuln-cve2013-0156 <target-address>

最后,这里提供了所有属于“漏洞”类别的NSE脚本的列表。

您的系统是否能够检测到Nmap扫描?

侦察是道德黑客攻击和渗透测试的第一阶段。黑客使用侦察阶段来定位系统中的缺陷和漏洞以进行攻击。因此,防御系统应该能够检测到它们。

如果您使用SIEM(安全信息和事件管理)工具、防火墙和其他防御措施,您将收到警报。以下是一些可以帮助您保护企业和组织免受网络攻击的最佳SIEM工具列表。这些工具甚至有助于记录Nmap扫描。漏洞扫描是值得的,因为早期识别可以避免将来对系统造成损害。

结论

我希望您发现这篇文章对学习如何使用Nmap进行漏洞扫描非常有帮助。

您可能也会有兴趣了解开源Web安全扫描器列表,以查找漏洞。