Metasploit渗透测试框架
渗透测试是一类有目的性的、针对目标机构计算机系统安全的监测评估方法。渗透测试可以发现系统的漏洞和安全机制方面的隐患,并以此进行渗透攻击来取得目标计算机的控制权。通过渗透测试可以知道目标机构的计算机系统是否易于受到攻击,现有的安全部署是否能妥善地抵御攻击,以及哪部分安全机制可能被绕过,等等。渗透测试的主要目的是改善目标机构的安全性。
正所谓“工欲善其事,必先利其器”,渗透测试能否成功很大程度上取决于测试时是否采用了正确的工具和技术。渗透测试工程师需选择正确的渗透测试工具和技术,才能保证任务的完成。当提到最优秀的渗透测试工具时,安全业界的绝大多数人都会首先想到Metasploit渗透框架。现在,Metasploit被公认为进行渗透测试时最有效的安全审计工具之一,它提供了最全面的漏洞渗透模块库,集成了优秀的模块开发环境,具有强大的信息收集和Web测试能力及其他许多功能。
通常,一次完整的渗透测试包含如下7个阶段。
前期交互阶段 | 渗透测试工程师要确定渗透测试的目标和测试范围。它们要和客户讨论渗透测试的所有关键细节 |
---|---|
信息收集阶段 | 渗透测试工程师采用主动和被动两个方式来收集目标信息,其被动攻击收集可以在完全不接触目标的情况下进行 |
威胁建模阶段 | 渗透测试工程师要根据之前获得的信息,找出对目标系统威胁最大的弱点,从而确定最为高效的渗透攻击方式 |
漏洞分析阶段 | 渗透测试工程师要找到并确认目标系统上存在的已知的和未知的漏洞,然后在实验环境进行验证 |
渗透攻击阶段 | 渗透测试工程师要利用在上一阶段发现的漏洞来入侵目标系统。这通常意味着渗透测试工程师会尝试获得目标系统的控制权 |
后渗透攻击阶段 | 渗透测试工程师要开展一些实际的入侵行为。例如,盗取目标计算机的某个机密文件,直接关闭目标系统,或者在目标系统上创建一个新的远程管理账户,等等。总之,渗透测试工程师应该完成渗透攻击后的所有工作 |
报告阶段 | 渗透测试工程师需要将渗透测试的结果汇总为一个文件,并提供漏洞修补和安全升级的解决方案 |
组织一次渗透测试
(一)前期交互阶段
作为渗透测试的第一个步骤,前期交互阶段将确定客户(可能是一个公司、机构或者网络)的渗透测试的关键细节。这一切都是在与客户进行商讨之后决定的。这个阶段是连接客户与渗透测试工程师的桥梁。在这个阶段,渗透测试工程师要与客户进行充分的交流,以便客户对即将开展的渗透测试会对他的网络或者服务器产生的影响有足够的了解。
因此,渗透测试工程师要以客户指导者的身份来进行这一阶段的工作。这一阶段还将确定渗透测试的范围、目标以及进行分析时的特殊需求,例如特殊的权限、关键系统的访问许可、网络或系统凭证等。商讨的范围还将包括渗透测试预期对测试目标所产生的积极效果。
渗透测试的范围:这一部分需要确定渗透测试的范围并预估整个项目的工作量。同时要确定哪些目标在渗透测试范围内,哪些是不允许进行渗透测试的。测试者要确认渗透区域内涉及的IP地址范围和域名范围,以及采用的测试类型(黑盒测试或白盒测试)。比如,当进行白盒测试时,会给予测试者哪些权限,是否可以对目标管理人员开展问卷调查,在什么时间可以开展渗透测试,是否能对目标环境进行网络流量压力测试,以及商定渗透测试的费用以及支付条款。关于渗透范围的常规文档杨改包含了如下问题的答案。
目标组织最大的安全问题是什么 |
---|
应该对哪些主机、网络地址范围或者应用程序进行测试 |
目标组织最大的安全问题是什么 |
应该将哪些主机、网络地址范围或者应用程序排除在测试范围之外 |
在测试范围内是否存在第三方系统或者网络?它们拥有了哪些系统 |
渗透测试是在现场实地环境进行还是在虚拟测试环境进行 |
渗透测试是否包括的测试技术:采用Ping对网络范围进行扫描、对目标主机进行端口扫描、对目标进行漏洞扫描、对目标主机进行渗透测试、应用程序级的操作、客户端java/ActiveX逆向工程、物理渗透测试、社会工程学? |
渗透测试是否包括内部网络测试?若包括,如何获取权限 ? |
客户端是否包括在测试范围内?若包括,将会涉及多少客户? |
是否允许采用社会工程学手段?若允许,如何采用? |
应该对哪些主机、网络地址范围或者应用程序进行测试 |
是否允许拒绝服务攻击? |
是否允许采用具有破坏性的检查手段和渗透模块? |
渗透测试的目标:这一部分要商定本次渗透测试预期达到的主要和次要效果。有关渗透目标的常见问题列举如下。
这次渗透测试的商业需求是什么? |
---|
这次测试是出于监督审核的目的还是仅仅为了遵循标准程序 |
目标是什么? |
若想获取关于前期交互的更多信息,请访问网址:http://www.pentest-standard.org/index.php/Reporting
(二)信息收集阶段/侦查阶段
在信息收集阶段,你需要尽可能采用各类方式来收集目标网络的所有信息。这个目标网络可能是互联网的一个网站,或者是一个社会性的组织,甚至可能是一个财力雄厚的老牌商业公司。在这个阶段,最重要的是要通过各个社交媒体网络来收集相关信息,以及用Google Hacking技术(用特殊的查询方式通过Google搜索引擎收集敏感信息的工具)来寻找目标的相关信息。另外,对目标主机采用主动扫描和被动扫描技术进行踩点(footprinting)也是一类可行的办法。
信息收集时整个渗透测试过程最为重要的阶段之一。与尝试所有可行的渗透测试方法相比,对目标有适当的了解可以让测试者选择合适和准确的渗透测试攻击方式。这样做将会大大缩短整个渗透测试耗费的时间。通常这个阶段会占到渗透测试所需时间的40%~60%,至于能否成功渗透进入目标网络很大程度上取决于测试者在这个阶段的工作成果。
渗透测试工程师需通过对目标网络进行足够的扫描来获取足够的信息。扫描目标计算机删运行的服务、开放的端口,以及验证这些端口上运行着的全部服务,然后判断这些服务里哪些是可以被攻击的,并且决定如何利用它们作为入侵目标的通道。
在这个阶段还要明确网络当前部署的安全控制措施以及如何才能破坏这些措施。
作为一个过程,它可以分解成以下步骤:
目标选择 | 选择攻击的目标,确定攻击达到的效果以及整个攻击过程耗费的时间 |
---|---|
隐私收集 | 包括现场信息采集,检查使用的设备信息,甚至从丢弃的废品里收集信息。这个阶段是白盒测试的一部分 |
踩点工作 | 包括针对目标上部署的技术和软件的主动和被动扫描,例如 网络端口扫描、banner获取等 |
验证目标的安全机制 | 包括防火墙、网络流量过滤系统、网络和主机的保护措施的确认工作等 |
若想获取关于信息收集的更多信息,请访问网址:http://www.pentest-standard.org/index.php/Intelligence_Gathering
(三)威胁建模阶段
为了保证渗透测试能够正确进行,需进行威胁建模。在这个阶段,主要的工作是模拟出对目标准确的威胁以及这些威胁的作用,并根据这些威胁可能对目标产生的影响对其进行分类。根据之前在信息收集阶段做出的分析,在这个阶段我们可以确定最佳的攻击方式。威胁建模方法适用于商业资产分析、工程分析、威胁分析以及威胁能力分析。这一阶段将解决如下问题:
如何攻击指定的网络 |
---|
需要获得的重要信息是什么 |
在攻击时采取什么方法最为合适 |
对目标来说最大的安全威胁是什么 |
威胁建模将有助于渗透测试工程师完成以下工作:
收集有关高等威胁的相关文档 |
---|
根据基本的分类方法对组织的资源进行标识 |
对威胁进行识别和分类 |
将组织的资源映射成模型 |
威胁建模将有助于明确哪些资源最容易受到威胁,以及这些威胁各自是什么。
假定现在有一个针对公司网站的黑盒测试。目标公司的客户信息是公司的重要资产。然而,在同一后台程序的另一个数据库里保存了客户的交易记录。在此情况下,攻击者就可以以SQL注入漏洞获取客户的交易记录,而交易记录属于其他资产。因此在这个阶段,应建立一个针对重要资产和其他资产的SQL注入漏洞威胁模型。
漏洞扫描工具(例如Nexpose和Metasploit Pro版)可能帮助我们以自动化的方式快速清晰地完成威胁建模。在开展大规模地测试时,这个优势更为明显。
若想获取关于威胁建模的更多信息,请访问网址:http://www.pentest-standard.org/index.php/Threat_Modeling
(四)漏洞分析阶段
漏洞分析是在一个系统或者应用程序里发现漏洞的程序。这些漏洞多种多样,涵盖了很多方面,从服务器的配置到Web程序服务,从应用程序到数据库服务,从基于VOIP的服务器到基于SCADA的服务都可能存在漏洞。这个阶段包含了三个不同的机制,那就是测试、验证和研究。测试包括主动测试和被动测试。验证包括去除误报和通过手动验证确认漏洞的存在。研究指的是发现并触发漏洞以确认它的存在。
有关威胁建模的各个过程的更多信息,请访问:http://www.pentest-standard.org/index.php/vulnerability_analysis
(五)渗透攻击阶段
渗透攻击阶段可以利用之前漏洞分析阶段的成果。这个阶段一般被认为是真正的攻击阶段。在这个阶段。渗透测试者可以针对目标系统的漏洞使用对应的入侵模块获得控制权限。
有关渗透攻击阶段各个过程的详细信息。请访问:http://www.pentest-standard.org/index.php/Exploitation
(六)后渗透攻击阶段
后渗透攻击阶段发生在渗透攻击阶段之后,这个阶段包含了当成功渗透攻击到对方计算机以后的很多任务,比如提升权限、上传和下载文件、跳板攻击,等等。
有关后渗透阶段的更多信息,请访问:http://www.pentest-standard.org/index.php/Post_Exploitation
(七)报告阶段
在进行渗透测试时,创建整个渗透测试的正式报告是在最后一个阶段进行的。渗透测试报告的重要组成部分包括:确定目标最为重要的威胁,将渗透得到的数据生成图表,对目标系统的改进建议,以及这些问题的修复方案。
有关报告阶段各个过程的详细信息。请访问:http://www.pentest-standard.org/index.php/reporting