最强的渗透攻击平台——Metasploit

Metasploit v4版本体系结构

Metasploit v4 版本体系结构

  • 基础库文件:Metasploit的基础库文件位于源码根目录路径下的libraries目录中,包括Rex、framewo-core和framewo-base三部分。
    Rex(Ruby Extension)是整个Metasploit框架所依赖的最基础的一些组件,为Metasploit开发者进行框架和模块开发提供了一些基础功能的支持,如包装的网络套接字、网络应用层协议客户端与服务端的实现、日志子系统、渗透攻击支持例程、PostgreSQL及MySQL数据库支持等。
    framework-core库负责实现所有与各种类型的上层模块及插件的交互接口。
    framework-base库扩展了framework-core,提供了更加简单的包装例程,并未处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架继承模块。

  • 模块:模块是通过Metasploit框架所装载、集成并对外提供最核心的渗透测试功能实现代码。按照在渗透测试过程中各个环节所具有的的不同用途,分为:辅助模块(Aux)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块(Payloads)、空指令模块(Nops)和编码器模块(Encoders)。这些模块都拥有非诚清晰的结构和一个预先定义好的接口,可以被装载到Metasploit框架中,并可组合支持信息收集、渗透攻击与后渗透攻击拓展等渗透测试任务。

  • 插件:Metasploit框架的插件是一类定义比较松散,能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如Nessus、OpenVAS漏洞扫描器等,为用户接口提供一些新的功能命令、记录所有的网络记录或提供创新的渗透测试功能。

  • 接口:Metasploit框架提供了多种用户使用接口,包括:msfconsole控制台终端、msfcli命令行、msfgui图形化界面、armitage图形化界面、msfapi远程调用接口。

  • 功能程序:除了通过上述的用户接口访问Metasploit框架主体功能之外,Metasploit还提供了一系列可直接运行的功能程序,支持渗透测试者与安全研究人员快速地利用Metasploit框架内部能力完成一些特定任务。如msfpayload、msfencode、msfvenom可以将攻击载荷封装为可执行文件、C语言、JavaScript语言等多种形式,并可以进行各种类型的编码。msf*scan系列功能程序提供了在PE、ELF等各种类型文件中搜索特定指令的功能,可以帮助渗透代码开发人员定位指令地址。


模块介绍

  • 辅助模块(Aux):Metasploit为渗透测试的信息搜集环节提供了大量的辅助模块支持,包括对各种网络服务的扫描与查点、构建虚假服务收集登录密码、口令猜测破解、敏感信息嗅探、探查敏感信息泄露、Fuzz测试发掘漏洞、实施网络协议欺骗等模块。辅助模块能够帮助渗透测试者在进行渗透攻击之前得到目标系统丰富的情报信息,从而发起更具目标性的精确攻击。

  • 渗透攻击模块(Expolits):渗透攻击模块是利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问权的代码组件。Metasploit框架中渗透攻击模块可以按照所利用的安全漏洞所在位置分为主动渗透攻击与被动渗透攻击两大类。
    主动渗透攻击所利用的安全漏洞位于网络服务端软件与服务承载的上层应用程序之中,由于这些服务通常是在主机上开启一些监听端口并等待客户端连接,因此针对它们的渗透攻击就可以主动发起。
    被动渗透攻击所利用的安全漏洞位于客户端软件中,如浏览器、浏览器插件、电子邮件客户端、Office与Adobe等各种文档阅读与编辑软件。对于这类存在于客户端软件的安全漏洞,我们无法主动地将主句从远程输入到客户端软件中,因此只能采用被动渗透攻击方式,即构造出“邪恶”的网页、电子邮件或文档文件,并通过架设包含此类恶意内容的服务端、发送邮件附件、结合社会工程学攻击分发并诱骗目标用户打开、结合网络欺骗和劫持技术等方式,等目标系统上的用户访问到这些邪恶内容,从而触发客户端软件中的安全漏洞,给出控制目标系统的Shell会话。同时,被动渗透攻击能够绕过防火墙等网络边界防护措施。

  • 攻击载荷模块(Payloads):攻击载荷是在渗透攻击成功后促使目标系统运行的一段植入代码,通常作用是为渗透攻击者打开在目标系统上的控制会话连接。Metasploit框架中引入模块化攻击载荷完全消除了安全研究人员在渗透代码开发时进行Shellcode编写、修改与调试的工作代价,而可以将经历集中在安全漏洞机理研究与利用代码的开发上。此外,Metasploit还提供了Windows、Linux、UNIX和MAC OS X等大部分流行操作系统平台上功能丰富多样的攻击载荷模块,从最简单的增加用户账号、提供命令行Shell,到基于VNC的图形化界面控制,以及最复杂、具有大量后渗透攻击阶段功能特性的Meterpreter,这使得渗透测试者可以在选定渗透攻击代码之后,从很多适用的攻击载荷中选取他所中意的模块进行灵活地组装。
    Metasploit攻击载荷模块分为独立(Singles)、传输器(Stager)、传输体(Stage)三种类型。
    独立攻击载荷是完全自包含的,可直接独立地植入目标系统进行执行,比如"windows/shell_bind_tcp"是适用于Windows操作系统平台,能够将Shell控制会话绑定在指定TCP端口上的攻击载荷。
    而在一些比较特殊的场景中,可能会对攻击载荷的大小、运行条件有所限制,Metasploit提供了传输器和传输体配对分阶段植入技术,由渗透攻击模块首先植入代码精悍短小且非常可靠的传输器载荷,然后在运行传输器载荷时进一步下载传输体载荷并执行。目前Metasploit中的Windows传输器载荷可以绕过NX、DEP等安全防御机制,可以兼容Windows7操作系统,而由传输器载荷进一步下载并执行的传输体载荷就不再受大小和安全防御机制的限制,可以加载如Meterpreter、VNC桌面控制等复杂的大型攻击载荷。传输器与传输体配对攻击载荷模块以名称中的"/“标识,如"windows/shell/bind_tcp"是由一个传输器载荷(bind_tcp)和一个传输体载荷(Shell)所组成,其功能等价于独立攻击载荷"windows/shell_bind_tcp”。

  • 空指令模块(NOP):空指令是对一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令,最典型的空指令就是空操作。在渗透攻击构造邪恶数据缓冲区时,常常要在真正要执行的Shellcode之前添加一段空指令,这样当触发渗透攻击后跳转执行Shellcode时,有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败。Metasploit框架中的空指令模块就是用来咋攻击载荷中添加空指令区,以提高攻击可靠性的组件。

  • 编码器模块(Encoders):攻击载荷模块在与空指令模块组装完成一个指令序列后,在这段指令被渗透攻击模块加入邪恶数据缓冲区交由目标系统运行之前,Metasploit还需要进行编码。如果没有进行编码,渗透攻击可能完全不会奏效,或者中途就被检测到并阻断。
    编码器的第一个使命就是确保攻击载荷中不会出现渗透攻击过程中应加以避免的“坏字符”,这些“坏字符”的存在将导致特殊构造的邪恶数据缓冲区无法按照预期目标完全输入到存有漏洞的软件例程中。典型的“坏字符”就是0x00空字节,在大量漏洞所在的字符串操作函数中,输入字符串中的空字节会被解释为字符串的末尾,这样会将后面内容进行截断,从而使得攻击载荷没有完整得被运行导致攻击失败。此外在一些渗透攻击场景中。网络输入必须通过明文协议进行传输,从而需要攻击载荷的内容都是可打印字符,这时除了这些可接受字符之外的全部字符就落入了“坏字符”的范畴了。在Metasploit的渗透攻击模块中存在一个BadChars字段,专门用来列出需要避免的“坏字符”列表,让Metasploit选择编码器对攻击载荷进行编码时能够绕开“坏字符”。
    编码器的第二个使命是对攻击载荷进行“免杀”处理,即逃避反病毒软件、IDS入侵检测系统和IPS入侵防御系统的检测与阻断。通过各种不同形式的编码甚至是多个编码器的嵌套编码,避免载荷中含有一些安全检测与防御机制能够轻易识别的特征码,达到“免杀”效果。

  • 后渗透攻击模块(Post):后渗透攻击模块是Metasploit v4版本中正式引入的一种新类型的组件模块,主要支持在渗透攻击取得目标系统控制权之后,在受控系统中进行各式各样的后渗透攻击动作,如获取敏感信息、进一步拓展、实施跳板攻击等。后渗透攻击模块将替代Meterpreter和Shell攻击载荷中的一些扩展脚本,完成目标系统上进一步攻击的组件代码。后渗透攻击模块需要通过Meterpreter或Shell控制会话加载到目标操作系统平台上运行,因此目前Metasploit框架中是按照操作系统平台来组织此类模块的。现在支持最完善额Windows平台上,已有的后渗透攻击模块包括敏感信息搜集、键击记录、本地特权提升以及本地会话管理等。

参考:《Metasploit渗透测试魔鬼训练营》
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值