介绍
Metasploit是使用最广泛的开发框架。Metasploit是一个强大的工具,可以支持渗透测试的所有阶段,从信息收集到后利用。
Metasploit有两个主要版本:
- Metasploit Pro:商业版本,有助于任务的自动化和管理。该版本有图形用户界面( GUI)。
- Metasploit Framework:从命令行运行的开源版本。这个房间将重点讨论这个版本,安装在 AttackBox 和最常用的渗透测试Linux发行版上。
Metasploit框架是一组工具,可用于信息收集、扫描、利用、利用开发、后利用等。虽然Metasploit框架的主要用途集中在渗透测试领域,但它对于漏洞研究和漏洞利用开发也很有用。
Metasploit框架的主要组件可概括如下:
- msfconsole:主命令行界面。
- 模块:支持模块,例如漏洞利用、扫描器、有效负载等。
- 工具:有助于漏洞研究、漏洞评估或渗透测试的独立工具。其中一些工具包括msfvenom、pattern_create 和pattern_offset。我们将在本模块中介绍 msfvenom,但pattern_create 和pattern_offset 是在漏洞利用开发中有用的工具,这超出了本模块的范围。
该房间将涵盖Metasploit的主要组件,同时为您如何在目标系统上查找相关漏洞、设置参数和利用易受攻击的服务奠定坚实的基础。完成此房间后,您将能够舒适地导航和使用Metasploit命令行。
您可以部署并使用 AttackBox 来完成任务并回答问题。
Metasploit的主要组件
使用Metasploit框架时,您将主要与Metasploit控制台进行交互。您可以使用以下命令从 AttackBox 终端启动它 msfconsole
。控制台将是您与Metasploit框架的不同模块进行交互的主界面。模块是Metasploit框架中的小组件,旨在执行特定任务,例如利用漏洞、扫描目标或执行暴力攻击。
在深入模块之前,澄清一些反复出现的概念会很有帮助:漏洞、漏洞利用和有效负载。
- 漏洞利用:利用目标系统上存在的漏洞的一段代码。
- 漏洞:影响目标系统的设计、编码或逻辑缺陷。利用漏洞可能导致机密信息泄露或允许攻击者在目标系统上执行代码。
- 有效负载:攻击将利用漏洞。但是,如果我们希望利用漏洞获得我们想要的结果(访问目标系统、读取机密信息等),我们需要使用有效负载。有效负载是将在目标系统上运行的代码。
下面列出了每个模块和类别。这些仅供参考,但您将通过Metasploit控制台 (msfconsole) 与它们交互。
辅助的Auxiliary
任何支持模块,例如扫描器、爬虫和模糊器,都可以在这里找到。
root@ip-10-10-135-188:/opt/metasploit-framework/embedded/framework/modules# tree -L 1 auxiliary/
auxiliary/
├── admin
├── analyze
├── bnat
├── client
├── cloud
├── crawler
├── docx
├── dos
├── example.py
├── example.rb
├── fileformat
├── fuzzers
├── gather
├── parser
├── scanner
├── server
├── sniffer
├── spoof
├── sqli
├── voip
└── vsploit
20 directories, 2 files
编码器Encoders
编码器将允许您对漏洞和有效负载进行编码,希望基于签名的防病毒解决方案可能会错过它们。
基于签名的防病毒和安全解决方案拥有已知威胁的数据库。他们通过将可疑文件与该数据库进行比较来检测威胁,并在匹配时发出警报。因此,编码器的成功率可能有限,因为防病毒解决方案可以执行额外的检查。
root@ip-10-10-135-188:/opt/metasploit-framework/embedded/framework/modules# tree -L 1 encoders/
encoders/
├── cmd
├── generic
├── mipsbe
├── mipsle
├── php
├── ppc
├── ruby
├── sparc
├── x64
└── x86
10 directories, 0 files
闪避Evasion
虽然编码器会对有效负载进行编码,但它们不应被视为逃避防病毒软件的直接尝试。另一方面,“规避”模块会尝试这样做,或多或少会取得成功。
root@ip-10-10-135-188:/opt/metasploit-framework/embedded/framework/modules# tree -L 2 evasion/
evasion/
└── windows
├── applocker_evasion_install_util.rb
├── applocker_evasion_msbuild.rb
├── applocker_evasion_presentationhost.rb
├── applocker_evasion_regasm_regsvcs.rb
├── applocker_evasion_workflow_compiler.rb
├── process_herpaderping.rb
├── syscall_inject.rb
├── windows_defender_exe.rb
└── windows_defender_js_hta.rb
1 directory, 9 files
功绩Exploits
漏洞利用,按目标系统整齐地组织。
root@ip-10-10-135-188:/opt/metasploit-framework/embedded/framework/modules# tree -L 1 exploits/
exploits/
├── aix
├── android
├── apple_ios
├── bsd
├── bsdi
├── dialup
├── example_linux_priv_esc.rb
├── example.py
├── example.rb
├── example_webapp.rb
├── firefox
├── freebsd
├── hpux
├── irix
├── linux
├── mainframe
├── multi
├── netware
├── openbsd
├── osx
├── qnx
├── solaris
├── unix
└── windows
20 directories, 4 files
NOPs
从字面上看,NOPs(无操作)什么也不做。它们在 Intel x86 CPU系列中以 0x90表示,随后CPU在一个周期内将不执行任何操作。它们通常用作缓冲区以实现一致的有效负载大小。
root@ip-10-10-135-188:/opt/metasploit-framework/embedded/framework/modules# tree -L 1 nops/
nops/
├── aarch64
├── armle
├── cmd
├── mipsbe
├── php
├── ppc
├── sparc
├── tty
├── x64
└── x86
10 directories, 0 files
有效载荷Payloads
有效负载是将在目标系统上运行的代码。
漏洞利用将利用目标系统上的漏洞,但为了达到预期的结果,我们需要一个有效负载。例子可以是:获取 shell、将恶意软件或后门加载到目标系统、运行命令或启动 calc.exe 作为概念证明以添加到渗透测试报告中。通过启动 calc.exe 应用程序在目标系统上远程启动计算器是一种良好的方式,表明我们可以在目标系统上运行命令。
在目标系统上运行命令已经是一个重要的步骤,但是拥有允许您键入将在目标系统上执行的命令的交互式连接会更好。这种交互式命令行称为“shell”。Metasploit提供了发送不同有效负载的能力,这些有效负载可以在目标系统上打开 shell。
root@ip-10-10-135-188:/opt/metasploit-framework/embedded/framework/modules# tree -L 1 payloads/
payloads/
├── adapters
├── singles
├── stagers
└── stages
4 directories, 0 files
您将在有效负载下看到四个不同的目录:adapters、single、stagers 和 stage。
- 适配器adapters:适配器包装单个有效负载以将其转换为不同的格式。例如,普通的单个有效负载可以包装在 Powershell 适配器内,这将生成执行该有效负载的单个 powershell 命令。
- Singles:独立的有效负载(添加用户、启动 notepad.exe 等),无需下载额外的组件即可运行。
- Stagers:负责在Metasploit和目标系统之间建立连接通道。在处理分阶段有效负载时很有用。 “分阶段有效负载”将首先在目标系统上上传一个 stager,然后下载其余的有效负载(阶段)。这提供了一些优点,因为与一次发送的完整有效负载相比,有效负载的初始大小相对较小。
- Stages:由 stager 下载。这将允许您使用更大的有效负载。
Metasploit有一种微妙的方法来帮助您识别单个(也称为“内联”)有效负载和分段有效负载。
- generic/shell_reverse_tcp
- windows/x64/shell/reverse_tcp
两者都是反向 Windows shell。前者是内联(或单个)有效负载,如“shell”和“reverse”之间的“_”所示。而后者是阶段式有效负载,如“shell”和“reverse”之间的“/”所示。
Post
后置模块在上面列出的渗透测试过程的最后阶段(后利用)中非常有用。
root@ip-10-10-135-188:/opt/metasploit-framework/embedded/framework/modules# tree -L 1 post/
post/
├── aix
├── android
├── apple_ios
├── bsd
├── firefox
├── hardware
├── linux
├── multi
├── networking
├── osx
├── solaris
└── windows
12 directories, 0 files
如果您希望进一步熟悉这些模块,可以在Metasploit安装的模块文件夹下找到它们。对于 AttackBox,这些位于 /opt/metasploit-framework/embedded/framework/modules 下
kali位于/usr/share/metasploit-framework/modules
2.1利用目标系统上的缺陷的代码的名称是什么?Exploit
2.2在目标系统上运行以实现攻击者目标的代码的名称是什么? payload
2.3自包含有效负载称为什么? Singles
2.4“ windows/x64/pingback_reverse_tcp”是单一负载还是分阶段负载? singles
微软控制台
如前所述,控制台将是