Metasploit 基础知识,第 1 部分:Metasploit5 入门

原文链接:Hackers 的 Metasploit 基础知识,第 1 部分:Metasploit 入门5 (hackers-arise.com)

欢迎回来,我雄心勃勃的网络战士!

在本系列中,我将向您介绍世界上最受欢迎的黑客/渗透测试平台Metasploit!

Metasploit是世界领先的剥削/黑客框架。在某种程度上,它几乎被每个黑客/渗透测试人员使用。因此,如果您想进入这个蓬勃发展的网络安全/渗透测试行业并蓬勃发展,您真的需要熟悉它。

什么是Metasploit?

Metasploit是用于进攻性安全或渗透测试(法律黑客攻击以在坏人之前发现漏洞)的标准化框架。在Metasploit之前,漏洞利用和shellcode将由各种开发人员以各种语言为各种系统开发。渗透测试人员必须依靠开发人员的可信度,即它没有恶意代码,并了解开发人员打算如何利用漏洞/外壳代码/工具工作。使用Metasploit,渗透测试器具有标准化的框架,可以从中工作,工具的工作方式相似,并且所有工具都用相同的语言编写,从而使事情变得更加简单和容易。

最初由HD Moore作为开源项目开发,现在由安全公司Rapid7拥有(Rapid7还拥有漏洞扫描器Nexpose)。虽然最初是作为一个开源项目开发的,但Rapid7现在已经开发了Metasploit的Pro版本,其中增加了一些“花里胡哨的东西”。幸运的是,开源的社区版仍然可以供我们其他人使用,而无需花费数万美元购买Pro版本(如果您是专业的渗透测试人员,使用Pro版本所获得的效率和时间节省使其成为一项不错的投资)。

最初的Metasploit是用Python编写的,然后移植到Ruby。这意味着所有模块都必须编写或移植到Ruby(Python是最常见的脚本语言)。现在,随着Metasploit 5的开发和发布,Metasploit现在支持用Python或GO编写的模块。

随着Metasploit第五版的发布,Rapid7的开发人员增加了许多新功能,包括;

1. 将数据存储在本地数据库或基于 HTTP 的数据服务中

2. 规避模块

3. 一个接口

4.易于扩展,RHOST 和 RHOSTS 是别名

5. 后台 shell 会话的能力

6. 如上所述,支持Python和GO模块。

Metasploit接口

Metasploit具有多个接口,包括:

(1) msfconsole – 一个类似交互式命令行的界面

(2) msfcli – 一个字面上的 Linux 命令行界面

(3) Armitage – 一个基于 GUI 的第三方应用程序

(4) msfweb – 基于浏览器的界面

毫无疑问,使用Metasploit最常见的方式是通过Metasploit自己的交互式shell msfconsole。在 Metasploit 的本系列中,我们将主要使用此 msfconsole,但我将在后面的教程中向您展示如何使用其他 msfconsole。

近年来,Metasploit集成了其他工具,使其不仅仅是一个开发框架。nmap,Nessus和Nexpose等工具现已集成到Metasploit中,因此从端口扫描,漏洞扫描,利用到利用后的整个过程都可以通过一个工具完成。此外,Metasploit现在已经集成了一个postgresql数据库,用于存储从扫描和漏洞利用中收集的数据。

开始

在启动Metasploit之前,我们应该启动postgresql数据库。Metasploit将在没有postgresql的情况下工作,但是这个数据库使Metasploit能够运行更快的搜索并存储您在扫描和利用时收集的信息。

在启动Metasploit之前,通过键入来启动postgresql数据库;

kali > sudo systemctl start postgresql

注意:在从 Kali Linux 2020 开始的最新版本中,如果不使用 sudo 在命令之前运行需要 root 权限的命令,则无法运行这些命令。

接下来,如果这是第一次运行 Metasploit,则必须初始化数据库。

kali >sudo msfdb init

初始化数据库后,您可以通过键入来启动Metasploit框架控制台;

kali>msfconsole

由于Metasploit将所有内容加载到RAM中,因此可能需要一段时间(在Metasploit 5中要快得多)。

如果它看起来与我上面的屏幕不完全相同,请不要担心,因为Metasploit会旋转打开的初始图像。只要您有 msf5 >提示,您就来对地方了。

这将启动Metasploit控制台,一种交互式控制台。

如果你更注重GUI,你可以去Kali图标 – >Exploitation Tools–>metasploit framework,如下所示

Metasploit Keywords

虽然Metasploit是一个非常强大的开发框架,但只需几个关键字就可以让你开始破解几乎任何系统。

Metasploit有六(7)种类型的模块;

(1)exploits 漏洞利用

(2) payloads 有效载荷

(3)auxiliary 辅助

(4)nops

(5)post

(6)encoders

(7) evasion 规避(Metasploit 5 中的新功能)

在我们开始之前,先说一些关于术语的词。在Metasploit术语中,exploit(漏洞利用)是利用系统或应用程序漏洞的模块。它通常会尝试在系统上放置payload(有效负载)。此有效负载可以是简单的命令 shell,也可以是功能强大的 Meterpreter。在其他环境中,这些有效负载可能称为listeners、shellcode或 Rootkit。您可以在Metasploit Basics,Part3:Payloads中阅读有关不同类型的有效负载的更多信息

让我们看一下其中的一些关键字命令。我们可以通过在metasploit(msf5>)提示符下输入help来获取命令列表。

msf> help

请注意,我们可以使用“?”和“帮助”访问此帮助菜单。

msf > use

“use”命令加载一个模块。因此,例如,如果我想加载 exploit/windows/browser/adobe_flash_avm2 模块(这是一个利用Adobe Flash插件中众多漏洞之一的漏洞利用),我会输入;

msf >use exploit/windows/browser/adobe_flash_avm2

正如你在上面看到的,当Metasploit成功加载模块时,它会以模块类型(exploit)和红色的缩写模块名称进行响应。

msf> show

加载模块后,show 命令对于收集有关模块的更多信息非常有用。我最常使用的三个“显示”命令是“show options”,“show payloads”和“show targets”。让我们先看一下“显示有效负载”。

msf > show payloads

在选择漏洞利用程序后使用此命令时,将显示与此攻击程序兼容的所有有效负载(请注意标题为“兼容有效负载”的列)。如果您在选择漏洞利用之前运行此命令,它将向您显示所有有效负载,这是一个很长的列表。如上面的屏幕截图所示,show payloads 命令列出了将与此漏洞利用一起使用的所有有效负载。

msf > show options

此命令在运行漏洞利用时也非常有用。它将显示在运行模块之前需要设置的所有选项。这些选项包括 IP 地址、URI 路径、端口 >等。

msf > show targets

不太常用的命令是“show targets”。每个漏洞利用都有一个它将针对的目标列表。通过使用“show targets”命令,我们可以获得它们的列表。在这种情况下,定位是自动的,但某些漏洞利用程序具有多达100个不同的目标(不同的操作系统,Service Pack,语言等),成功通常取决于选择适当的目标。这些目标可以由操作系统、Service Pack 和语言等定义。

msf>info

info 命令很简单。在选择模块键入它时,它会显示有关该模块的关键信息,包括需要设置的选项、有效负载空间量(有关此内容的详细信息,请参阅有效负载部分)以及模块的描述。我通常总是在选择我的漏洞后运行它。

msf>search

作为Metasploit的新手,“搜索”命令可能是最有用的。当Metasploit很小而且很新的时候,找到你需要的合适模块相对容易。现在,有超过3000个模块,找到合适的模块可能既耗时又成问题。Rapid7从版本4开始添加了搜索功能,它已成为节省时间和生命。

虽然您可以使用搜索功能在模块的名称或描述中搜索关键字(包括 CVE 或 MS 漏洞编号),但这种方法并不总是有效的,因为它通常会返回非常大的结果集。

为了更具体地进行搜索,您可以使用以下关键字。

platform – 这是模块为

type -构建的操作系统 – 这是模块的类型。这些包括exploits,nops,payloads,post,encoders,evasion和auxiliary

name – 如果您知道模块的名称,则可以按其名称进行搜索

使用search的语法是关键字,后跟冒号,然后是值,例如:

msf >search type:exploit

例如,如果您正在为Abobe Flash寻找Windows(平台)的漏洞利用(类型),我们可以键入:

msf > search type:exploit platform:windows flash

正如你在上面看到的,Metasploit在它的数据库中搜索了Windows platform模块,并包含了关键字“flash”。

msf >set

此命令用于在所选模块中设置选项。例如,如果我们看一下上面的 show options 命令,我们可以看到许多必须设置的选项,例如URIPATHSVRHOSTSVRPORT。我们可以使用set命令设置其中任何一个,例如:

msf > set SRVPORT 80

这会将默认的 SVRPORT(服务器端口)从 8080 更改为 80。

msf > unset

如您所料,此命令将取消设置以前设置的选项。如;

msf > unset SRVPORT

如您所见,我们首先将 SRVPORT 变量设置为 80,然后将其取消设置。然后,它恢复到默认值8080,当我们再次键入显示选项时,我们可以看到该值。

msf >exploit

一旦我们加载了我们的漏洞利用并设置了所有必要的选项,最终的操作就是“exploit”。这会将攻击发送到目标系统,如果成功,则安装有效负载。

正如您在此屏幕截图中看到的,利用程序启动并作为后台作业运行,并在端口 4444 上使用反向处理程序运行。然后,它在端口 80 上的主机 0.0.0.0 上启动了一个 Web 服务器,该服务器具有随机 URL (F5pmyl9gCHVGw90)。我们可以选择一个特定的URL,并通过使用set命令更改URIPATH变量来设置它。

msf>back

我们可以使用 back 命令将我们“后退”一步。因此,如果您以实例为例,我们决定不想使用adobe / flash / avm2漏洞,我们可以键入“back”,这将删除加载的漏洞利用。

msf > exit

正如您所料,exit 命令将我们从 msfconsole 中退出并返回到 BASH 命令 shell 中。

请注意,在这种情况下,它会停止我们在此漏洞利用程序中创建的Web服务器,并将我们返回到BASH shell中的Kali命令提示符。

在许多漏洞利用中,您将看到以下选项(变量)。

RHOSTS – 这是远程主机或目标 IP

LHOST – 这是本地主机或攻击者 IP

RPORT – 这是远程端口或目标端口

LPORT – 这是本地端口或攻击者端口

这些都可以通过使用 SET 命令,后跟变量名称(例如 RHOST)和值来设置。

MSF > set RHOST 75.75.75.75

虽然这还不是Metasploit命令的详尽列表,但仅使用这些命令,您应该能够执行Metasploit中的大多数功能。当您在本课程中需要另一个命令时,我将花几分钟时间介绍它,但这些都是您目前可能需要的全部内容。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部