网络安全攻防:Metasploit

01Metasploit基本介绍

1. 发展历史

开源软件Metasploit是由HD Moore在2003年创立,并在2003年10月发布了第一个版本。它一共集成了11个渗透攻击模块。但是Metasploit在一开始发布的时候并没有受到很强烈的关注,却使HD Moore吸引了一位志同道合的朋友——Spoonm。他们二人后来一起完全重写了代码,并在2004年4月发布了Metasploit的第二个版本。

2004年8月,在拉斯维加斯召开了一次世界黑客交流会——黑帽简报(Black Hat Briefings)。在这个会议上,HD Moore和Spoonm 一起站上讲台,向世界介绍了他们的Metasploit。在演示过程中,Metasploit 的攻击和渗透能力使在场所有黑客都感到惊讶。可以说,Metasploit成功地在安全界引发了强烈的“地震”,一举成名。

Metasploit在发布不久就获得了2004年SecTools最受欢迎的100种安全工具排行榜第5名,击败了许多开发超过10年并广受好评的安全软件。而在Metasploit之前,还没有任何一款新工具能够做到刚发布就能挤进此列表的15强。

Metasploit Framework(MSF)在2003年以开放源码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发、测试和使用恶意代码,这个环境为渗透测试、Shellcode编写和漏洞研究提供了一个可靠平台。所以当Metasploit成功之后,许多的黑客和团队都开始为Metasploit的开发贡献自己的一份力量。

但是,Metasploit框架直到2006年发布的2.7版本都是用Perl脚本语言编写,由于Perl的一些缺陷,开发者于2007年底使用Ruby语言重写了该框架。从2008年发布的3.2版本开始,该项目采用新的3段式BSD许可证。

2009年10月21日,漏洞管理解决公司Rapid7收购Metasploit项目。Rapid7承诺成立专职开发团队,仍然将源代码置于 3 段式 BSD 许可证下。在 Metasploit的基础上,Rapid7于2010年10月推出了Metasploit Express和Pro商业版本,从而进军商业化渗透测试的市场。

2. 专业版和精简版

Metasploit一开始是没有专业版和精简版之分的,但是2009年渗透测试技术领域知名公司 Rapid7 收购了 Metasploit 项目,而作为 Metasploit 创始人的 HD Moore 也全职加入到Metasploit公司中。Rapid7在2010年10月推出了新的Metasploit版本,即Metasploit Express和Metasploit Pro。Metasploit Express中拥有原来的Metasploit的所有功能,但是Rapid7在其基础上对Metasploit Express进行优化和自动化攻击,从而形成了Metasploit Pro,即所谓的Metasploit专业版,Metasploit从而进军商业领域。

Metasploit 专业版和精简版的主要差别在于专业版上面集成了全自动攻击模块,通过远程API集成网络分割测试模块、标准基线审计向导模块、闭环漏洞验证优先处理功能、动态载荷规避防病毒解决方案、钓鱼意识管理和鱼叉式网络钓鱼模块、对OWASP Top 10漏洞的Web应用程序测试模块、高级命令行和Web界面的选择模块。但是,专业版是必须要付费的,所以除非用到非个人的功能,否则没有必要去使用专业版,而且,专业版和精简版的渗透攻击模块是一样的。

02Metasploit基本模块

1. 模块类型

Metasploit的强大功能得益于它所集成的大量模块。所谓的模块就是通过Metasploit框架所装载、集成并对外提过最核心的渗透测试功能实现代码。按照在渗透测试过程各个环节中所具有的不同用途,可以将其分为以下几个模块,分别为渗透模块(Exploits)、辅助模块(AUX)、攻击载荷模块(Payloads)、Shellocode模块。

2. 渗透模块

渗透模块可以分为渗透攻击模块和后渗透攻击模块。渗透攻击模块是通过利用发现的安全漏洞或相关的配置弱点对远程目标系统进行攻击,达到植入攻击载荷运行攻击载荷的目的。因此,可以说渗透攻击模块是 Metasploit 框架中最核心的功能组件,虽然Metasploit 架构一直延续从单一的渗透攻击软件项,支持渗透测试全过程的框架平台发展的趋势,但是在可预见的未来,渗透攻击模块仍将是Metasploit中最重要的一个组成部分。现在Metasploit的渗透攻击模块已经超过了1000个,而其数量和规模现在仍在继续增加中。

对于渗透攻击的源代码,可以在Metasploit源代码目录的modules/exploits子目录下找到。对于Metasploit而言,渗透攻击模块的组成方式是以目标操作系统的操作系统平台或针对网络服务和应用程序类型来进行的。

对于渗透攻击模块,其攻击行为也可以分为两种:主动渗透攻击和被动渗透攻击。主动渗透攻击指的是利用存在的安全漏洞,对网络服务端软件与服务承载的上层应用程序之间的联系进行攻击。由于这些服务通常是在主机上开启一些监听端口去等待客户端连接,所以就可以主动发起基于这些服务的攻击,注入相应的恶意代码,去触发安全漏洞。并且通常恶意代码之中还包括攻击载荷,这样就可以远程地窃取到目标系统控制权。而在目前,主动渗透攻击在Metasploit占了很大的比重,同时,近些年来主动渗透攻击也出现了新的攻击热点,如Web应用程序渗透攻击和SCADA工业控制系统服务渗透攻击等。

相对主动渗透攻击而言,被动渗透攻击利用的漏洞主要存在客户端软件之中,如浏览器、Office、插件等。这些漏洞往往是无法被攻击者主动地利用,需要通过一些操作,使用户自己将攻击者构造好的恶意内容输入到用户计算机内。而在这一过程中,首先需要结合社会工程学的内容,对用户进行相应的诱骗,使其下载或使用相应的恶意内容,从而触发用户计算机中存在的相应漏洞,从而达到控制用户系统的目的。

后渗透攻击模块是在Metasploit v4版本中正式引入的一个新类型的组件模块,主要用于支持在渗透攻击取得目标系统远程控制权之后,通过Meterpreter和Shell控制回话的支持,加载到目标操作系统平台上,从而在受控系统中实施获取账号密码、跳板攻击等后渗透攻击动作。

3. 辅助模块

在实施渗透攻击时,辅助模块往往必不可少,它为信息收集环节提供了大量的情报支持,从而可以发起更具有目标性、更强大的渗透攻击。它可以针对各种网络服务进行相应的扫描和查点,也可以通过构建虚假服务去获取用户的登录密码,对口令的猜测破解也可以通过辅助模块进行。

4. 攻击载荷模块

所谓的攻击载荷就是在渗透攻击成功之后在目标系统上面植入的一段可运行代码,这段代码可以帮助攻击者取得在目标系统上面的攻击会话,但是传统的攻击载荷功能十分简单,而且有效攻击载荷还需要特定的系统版本的 API 地址,其实用性往往不强。而在 Metasploit框架中引入的模块化攻击载荷,节省了安全研究人员对于Shellocode代码的编写、调试的工作时间。不仅如此,Metasploit 上还提供了各种各样的攻击载荷模块,这些模块都可以供渗透测试者使用,为从业人员提供了很大的便利。

5. Shellcode模块

如果说攻击载荷模块是Metasploit中的炸弹,那么Shellcode模型就是其中的TNT炸药。Shellcode模块会在渗透攻击完成之后,被攻击者植入到目标系统上面,创建出相应的后门,上传恶意的代码,执行攻击载荷中相应的命令产生Shell,在目标系统不知情的情况下达到渗透窃取破坏的目的。

03Metasploit的使用

Metasploit可以通过不同的方式打开,建议使用图形界面的方式。在打开Metasploit之前首先需要打开Metasploit服务。而如果遇到网络不稳定或计算机资源不足等问题时,需要对Metasploit服务进行重启。

重启命令为:

root@kail:~# service metasploit restart

停止命令为:

root@kail:~# service metasploit stop

检查Metasploit服务状态命令为:

root@kail:~# service metasploit status

确认Metasploit服务打开之后,需要再打开postgresql数据库,命令如下。

root@kail:~# service postgresql start

启动Metasploit图形界面armitag,如图1所示。

图1 启动armitag

单击启动armitage之后,就会显示如下信息,这里显示了Metasploit的服务基本信息,如图2所示。

图2 服务基本信息

出现一个Metasploit的RPC服务,单击“是”按钮。然后就会显示预配置模块、活跃的目标系统界面和Metasploit的标签,如图3所示。

图3 RPC服务

对所有主机进行扫描,选择为Hosts→Nmap→Scan→Quick Scan,如图4所示。

图4 扫描主机

扫描完成后,单击左上栏的“Attacks”按钮,然后选择Find Attacks,找到可以攻击的目标和方法,然后再次右击目标主机的时候就会出现Attack选项,这时就可以选择对其进行攻击,如图5所示。

图5 选择攻击目标和方法

可以看到Attack选项中有很多子选项,这些都是供选择的攻击漏洞。此时已经可以在预配置模块中选择攻击方式,我们在预配置模块中选择 exploit|windows|browser|adobe_cooltype_sing模块,如图6所示。

图6 选择预配置模块

通过选择adobe_cooltype_sing使其显示为以下模块。

从图6中可以看到,如果访问了http://192.168.10.189:8080/W53uQLySAnJ地址,就会在主机上创建一个PDF文件,在PDF文件中可以包含恶意代码和攻击载荷模块。在Kali Linux上显示如图7所示。因为有主机访问了所设的PDF文件,所以在Armitage控制台上会显示了访问主机的详细信息,包括操作系统和所使用的浏览器等信息。

图7 访问主机的详细信息

访问的电脑界面如图8所示。

图8 访问的电脑界面

靶机的安全软件发现安全问题,如图9所示。

图9 靶机安全软件中发现问题

当然也可以使用attack中的命令对靶机进行攻击。

先需要设置好相应的靶机(即Metasploitable),结果如图10所示。

图10 设置靶机

然后对靶机进行 Attack 中的 Samba→usermap_ 攻击。这个攻击是一个溢出攻击命令,如图11所示。

图11 对靶机进行攻击

检测这个命令是否成功,可以使用Attack中的check exploit选项去观察。在等待数秒之后,会提示溢出成功,可以发现目标主机图标变成了红色,并成功反弹一个 Shell,如图12所示。

图12 溢出成功返回搜狐,查看更多

阅读 ()
平台声明
该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。