MSF系列(一)| 初识Metasploit

admin 2022年7月6日22:02:19评论233 views字数 3400阅读11分20秒阅读模式

Metasploit是一款开源的安全漏洞检测工具,同时Metasploit是免费的工具,因此安全工作人员常用Metasploit工具来检测系统的安全性。

Metasploit Framework (MSF) 在2003年以开放源码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发,测试和使用恶意代码,这个环境为渗透测试、shellcode 编写和漏洞研究提供了一个可靠平台。

01

渗透测试神器 Metasploit



Metasploit 诞生

Metasploit项目最初由HD Moore在2003年创立,目标是成为渗透攻击研究与代码开发的一个开放资源。


渗透测试五大阶段

情报收集阶段:Metasploit本身辅助模块,还能调用Nmap、OpenVAS等著名开源网络扫描工具。

威胁建模阶段:收集信息完毕后,Metasploit可以直接将这些信息汇总到数据库,帮助渗透测试者进行威胁建模,找出最可行的攻击路径。

漏洞分析阶段:Metasploit提供了Fuzz测试器与Web应用漏洞探测与分析模块。

后渗透攻击阶段:Metasploit后渗透攻击阶段有一个极具威名的工具Meterpreter

报告生成阶段:Metasploit可以辅助渗透报告的写作,商业版支持报告自动生成。

02

Metasploit 结构剖析



MSF系列(一)| 初识Metasploit

Metasploit设计尽可能采用模块化的理念;在基础库的基础上,提供了一些核心框架功能的的支持;实现渗透测试的功能的主体代码则以模块化方式组织,并按照不同用途分为6种类型模块;为了扩充metasploit框架对渗透测试全过程的支持功能特性,metasploit还引入了插件机制,支持将外部的安全工具集成到框架中;metasploit框架对集成模块与插件的渗透测试功能,通过用户接口与功能程序提供给渗透测试者进行使用。


基础库文件

Metasploit设计尽可能采用模块化的理念;在基础库的基础上,提供了一些核心框架功能的的支持;实现渗透测试的功能的主体代码则以模块化方式组织,并按照不同用途分为6种类型模块;为了扩充metasploit框架对渗透测试全过程的支持功能特性,metasploit还引入了插件机制,支持将外部的安全工具集成到框架中;metasploit框架对集成模块与插件的渗透测试功能,通过用户接口与功能程序提供给渗透测试者进行使用。


模块

模块是通过Metasploit框架所装载、集成并对外提供的最核心的渗透测试功能实现代码。分为辅助模块(Aux)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块(payloads)、编码器模块(Encoders)、空指令模块(Nops)。这些模块拥有非常清晰的结构和一个预定义好的接口,并可以组合支持信息收集、渗透攻击与后渗透攻击拓展。

辅助模块

在渗透信息搜集环节提供了大量的辅助模块支持,包括针对各种网络服务的扫描与查点、构建虚假服务收集登录密码、口令猜测等模块。此外,辅助模块中还包括一些无须加载攻击载荷,同时往往不是取得目标系统远程控制权的渗透攻击,例如:拒绝服务攻击。

渗透攻击模块

利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而获得对目标系统访问控制权的代码组件。metasploit框架中渗透攻击模块可以按照所利用的安全漏洞所在的位置分为主动渗透攻击与被动渗透攻击两大类。

主动渗透攻击:所利用的安全漏洞位于网络服务端软件与服务端软件承载的上层应用程序之中,由于这些服务通常是在主机上开启一些监听端口并等待客户端连接,通过连接目标系统网络服务,注入一些特殊构造的包含“邪恶”攻击数据的网络请求内容,触发安全漏洞,并使得远程服务进行执行“邪恶”数据中包含的攻击载荷,从而获取目标系统的控制会话。针对网络服务端的主动渗透攻击属于传统的渗透攻击。还有web应用程序渗透攻击、SCADA工业控制系统服务渗透攻击。

被动渗透攻击:利用漏洞位于客户端软件中,如浏览器、浏览插件、电子邮件客户端、office与Adobe等各种文档与编辑软件。对于这类存在于客户端软件的安全漏洞,我们无法主动地将数据从远程输入到客户端软件中,因此只能采用被动渗透攻击方式。即构造出“邪恶”的网页、电子邮件或文档文件,并通过架设包含此类恶意内容的服务端、发送邮件附件、结合社会工程学攻击分发并诱骗目标用户打开、结合网络欺骗和劫持技术,等目标系统上的用户访问到这些邪恶内容,从而触发客户端软件中的安全漏洞,给出控制目标系统的shell会话。客户端软件被动渗透攻击能够绕过防火墙等网络边界防护措施,最常见的两类被动渗透攻击为浏览器软件漏洞攻击和文件格式类漏洞攻击。


攻击载荷模块

攻击载荷是在渗透攻击成功后促使目标系统运行的一段植入代码,通常作用是为渗透攻击者打开在目标系统上的控制会话连接。在传统的渗透代码开发中,攻击载荷只是一段功能简单的ShellCode代码,以汇编语言编制并转换为目标系统CPU体系结构支持的机器代码,在渗透攻击触发漏洞后,将程序执行流程劫持并跳转入这段机器代码中执行,从而完成ShellCode中实现的单一功能。

metasploit攻击载荷模块分为独立(Single)、传输器(Stager)、传输体(Stage)三种类型。独立攻击载荷是完全自包含的,可直接独立地植入目标系统进行执行,比如“windows/shell_bind_tcp”是适用于Windows操作系统平台,能够将Shell控制会话绑定在指定TCP端口上的攻击载荷。在一些比较特殊情况下,可能会对攻击载荷的大小、运行条件有所限制,比如特定安全漏洞利用时可填充恶意攻击缓冲区的可用空间很小、windows 7等新型操作系统所引入的NX(堆栈不可执行)、DEP(数据执行保护)等安全防御机制,在这些场景情况下,Metasploit提供了传输器和传输体配对分阶段植入的技术,由渗透攻击模块首先植入代码精悍短小且非常可靠的传输器载荷,然后在运行传输器载荷时进一步下载传输体载荷并执行。

空指令模块

空指令(NOP)是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令,最典型的空指令就是空操作,在X86 CPU体系结构平台上的操作码是ox90。

在渗透攻击构造邪恶数据缓冲区时,常常要在真正要执行的Shellcode之前添加一段空指令区,这样当触发渗透攻击后跳转执行ShellCode时,有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的ShellCode执行失败,提高渗透攻击的可靠性。

编码器模块

攻击载荷与空指令模块组装完成一个指令序列后,在这段指令被渗透攻击模块加入恶意数据缓冲区交由目标系统运行之前,Metasploit框架还需要完成一道非常重要的工序——编码。

编码模块的第一个使命是确保攻击载荷中不会出现渗透攻击过程中应加以避免的”坏字符“。

编码器第二个使命是对攻击载荷进行”免杀“处理,即逃避反病毒软件、IDS入侵检测系统和IPS入侵防御系统的检测与阻断。


后渗透模块

主要支持在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各种各样的后渗透攻击动作,比如获取敏感信息,进一步扩展,实施跳板攻击等。

插件

插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如Nessus、OpenVAS漏洞扫描器等,为用户接口提供一些新的功能。


接口

包括msfconsole控制终端、msfcli命令行、msfgui图形化界面、armitage图形化界面以及msfapi远程调用接口。


功能程序

除了用户使用用户接口访问metasploit框架主体功能之外,metasploit还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快速地利用metasploit框架内部能力完成一些特定任务。比如msfpayload、msfencode和msfvenom可以将攻击载荷封装为可执行文件、C语言、JavaScript语言等多种形式,并可以进行各种类型的编码。

msf*scan系列功能程序提供了在PE、ELF等各种类型文件中搜索特定指令的功能,可以帮助渗透代码开发人员定位指令地址。


MSF系列(一)| 初识Metasploit

扫码关注我们

查看更多精彩内容




原文始发于微信公众号(长风实验室):MSF系列(一)| 初识Metasploit

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月6日22:02:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   MSF系列(一)| 初识Metasploithttp://cn-sec.com/archives/1162097.html

发表评论

匿名网友 填写信息