信息收集与辅助模块

网络安全Beginner
立即练习

简介

欢迎来到「信息收集与辅助模块」实验!

当大多数人想到 Metasploit 框架时,首先想到的是漏洞利用——即通过发送载荷(Payload)来攻陷易受攻击的系统。然而,Metasploit 也是渗透测试中侦察和信息收集阶段的强大工具。

Metasploit 拥有一类被称为 辅助模块(Auxiliary modules) 的组件。与漏洞利用模块不同,辅助模块不会在目标系统上执行载荷。相反,它们旨在执行诸如端口扫描、服务识别、模糊测试(Fuzzing)和漏洞扫描等任务。

这种区别非常重要,因为它强调了漏洞利用只是渗透测试的一个阶段。优秀的进攻性安全工作同样依赖于结构化的侦察、枚举和验证。

在本实验中,你将学习如何浏览 Metasploit 控制台、搜索特定的辅助模块、配置其参数、针对本地目标执行网络扫描,并查看自动存储在 Metasploit 数据库中的结果。

搜索辅助模块

在这一步中,你将启动 Metasploit 框架控制台,并学习如何搜索辅助模块。

Metasploit 包含数千个模块。要找到你需要的内容,可以使用内置的 search 命令。该命令允许你按模块类型、名称、平台等进行过滤。

首先,打开终端并启动 Metasploit 控制台。我们将使用 -q 参数以「静默」模式启动,这样可以跳过大型 ASCII 艺术横幅,从而更快地进入控制台。

高效搜索是 Metasploit 的一项实用技能。由于框架过于庞大,无法每次都手动浏览,因此学习如何缩小模块范围是有效使用它的关键。

在终端中输入以下命令:

msfconsole -q

你将看到 Metasploit 的提示符出现,类似于 msf6 >。这表明你现在已经进入了 Metasploit 的交互式 Shell。如果这是你在当前环境中第一次启动 Metasploit,它可能会询问你是否要设置新数据库。回答 yes 并等待初始化完成。

接下来,让我们搜索一个可以执行基本 TCP 端口扫描的模块。在 Metasploit 的不同版本中,简单的关键字搜索比使用多个搜索过滤器更可靠。

在 Metasploit 控制台中执行以下命令:

search portscan

你应该会看到类似以下的输出:

Matching Modules
================

   ##  Name                                              Disclosure Date  Rank    Check  Description
   -  ----                                              ---------------  ----    -----  -----------
   0  auxiliary/scanner/portscan/ack                                     normal  No     TCP ACK Firewall Scanner
   1  auxiliary/scanner/portscan/ftpbounce                               normal  No     FTP Bounce Port Scanner
   2  auxiliary/scanner/portscan/syn                                     normal  No     TCP SYN Port Scanner
   3  auxiliary/scanner/portscan/tcp                                     normal  No     TCP Port Scanner
   4  auxiliary/scanner/portscan/xmas                                    normal  No     TCP "XMas" Port Scanner

搜索结果显示了匹配模块的列表。每个模块都有特定的路径(例如 auxiliary/scanner/portscan/tcp)、等级和简短描述。在下一步中,我们将选择其中一个模块来使用。

配置目标参数 (RHOSTS)

在这一步中,你将选择一个特定的端口扫描模块并配置其设置。

要告诉 Metasploit 你想使用哪个模块,可以使用 use 命令后跟模块路径。我们将使用标准的 TCP 端口扫描器。

在 Metasploit 控制台中运行以下命令:

use auxiliary/scanner/portscan/tcp

注意提示符变为了 msf6 auxiliary(scanner/portscan/tcp) >。这表明该模块现已激活。

在运行模块之前,必须配置其参数。你可以使用 show options 命令查看当前模块的所有可用参数:

show options

输出将显示一个选项表。请注意 Required(是否必须)列。任何标记为 yes 的选项在模块运行前都必须设置值。

Module options (auxiliary/scanner/portscan/tcp):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   CONCURRENCY  10               yes       The number of concurrent ports to check per host
   DELAY        0                yes       The delay between connections, per thread, in milliseconds
   JITTER       0                yes       The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
   PORTS        1-10000          yes       Ports to scan (e.g. 22-25,80,110-900)
   RHOSTS                        yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
   THREADS      1                yes       The number of concurrent threads (max one per host)
   TIMEOUT      1000             yes       The socket connect timeout in milliseconds

最重要的设置是 RHOSTS(远程主机),它指定了目标 IP 地址或网段。在本实验中,我们将扫描我们自己的本地机器,它托管了多个服务。

使用 set 命令将目标 IP 地址设置为 127.0.0.1(本地回环地址):

set RHOSTS 127.0.0.1

默认情况下,此模块会扫描 1 到 10000 之间的端口。为了让扫描快速完成,我们将扫描范围限制在几个特定的端口,这些端口在本实验环境中已知正在运行服务:FTP (21)、HTTP (80) 和 PostgreSQL (5432)。

将 PORTS 选项设置为仅扫描这些特定端口:

set PORTS 21,80,5432

你可以再次运行 show options 来验证设置是否已正确应用。

执行扫描并存储结果

在这一步中,你将执行配置好的端口扫描。

一旦扫描在 Metasploit 中运行,其价值不仅在于即时的输出,还在于发现的结果会成为数据库的一部分,并可为后续的模块和决策提供依据。

使用 Metasploit 进行信息收集的最大优势之一是其内置的数据库集成。当连接了数据库后,Metasploit 会自动存储扫描结果,从而保持侦察数据的条理性。

首先,让我们验证 Metasploit 是否已连接到其 PostgreSQL 数据库。运行以下命令:

db_status

你应该会看到确认连接的输出,例如:

[*] Connected to msf. Connection type: postgresql.

既然我们已经确认数据库处于活动状态且模块选项已配置完毕,现在是时候启动扫描了。你可以通过输入 run 或 exploit 来启动模块。对于辅助模块,run 是标准惯例。

执行扫描:

run

Metasploit 现在将尝试连接到目标 IP 地址上的指定端口。由于我们将扫描限制为三个端口,它应该几乎瞬间完成。

你将看到类似以下的输出,显示哪些端口是开放的:

[+] 127.0.0.1             - 127.0.0.1:21 - TCP OPEN
[+] 127.0.0.1             - 127.0.0.1:80 - TCP OPEN
[+] 127.0.0.1             - 127.0.0.1:5432 - TCP OPEN
[*] 127.0.0.1:            - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

[+] 符号表示成功发现(开放端口)。在后台,Metasploit 已经获取了这些信息并直接将其保存到了数据库中。

在数据库中查看主机和服务

在最后一步中,你将学习如何检索和查看 Metasploit 在扫描期间自动保存到数据库中的信息。

在进行大规模渗透测试时,你可能会扫描数十个网络和数百台主机。记住每一个开放端口是不可能的,这就是数据库命令极其有用的原因。

要查看 Metasploit 已发现并保存的所有目标系统列表,请使用 hosts 命令:

hosts

输出将显示一个已知主机表。你应该能看到我们刚刚扫描的本地主机 IP 地址:

Hosts
=====

address    mac  name  os_name  os_flavor  os_sp  purpose  info  comments
-------    ---  ----  -------  ---------  -----  -------  ----  --------
127.0.0.1             Unknown                    device

要查看在这些主机上发现的具体开放端口和服务,请使用 services 命令:

services

此命令会查询数据库并列出我们在扫描期间发现的所有开放端口:

Services
========

host       port  proto  name  state  info  resource  parents
----       ----  -----  ----  -----  ----  --------  -------
127.0.0.1  21    tcp          open         {}
127.0.0.1  80    tcp          open         {}
127.0.0.1  5432  tcp          open         {}

在此阶段,基本的 TCP 端口扫描器记录了这些端口是开放的,但可能不会填充详细的服务名称或版本信息。随着你稍后运行更高级的辅助模块,此表可以被补充更多详细信息。

你已成功完成了实验目标!要退出 Metasploit 控制台并返回到标准 Linux 终端,请输入:

exit

总结

恭喜!你已成功完成了「信息收集与辅助模块」实验。

在本实验中,你了解到 Metasploit 是一个功能极其丰富的框架,其作用远不止于漏洞利用。你练习了浏览 Metasploit 控制台、搜索特定的辅助模块,并配置了 RHOSTS 和 PORTS 等关键参数。此外,你还执行了网络端口扫描,并利用 Metasploit 强大的数据库集成功能,通过 hosts 和 services 命令自动存储并回顾了侦察数据。

这些基础技能对于在任何安全评估的信息收集阶段组织工作流程至关重要。