“入门渗透测试,首先需要了解渗透测试的流程、步骤与方法。尽管渗透目标的环境各不相同,但依然可以用一些标准化的方法体系进行规范和限制。”
目前渗透测试方法体系标准比较流行的有5个,其中PTES渗透测试执行标准得到了安全业界的普遍认同,它具体包括以下7个阶段。
01 前期交互阶段
前期交互阶段要做的事主要有以下几件:
介绍和解释可用的工具和技术,根据客户需求为客户提供量身定制的测试方案。可用于渗透测试的工具和技术有很多,但客户环境不一定支持,比如设备老旧,不能使用工具进行高强度的扫描行为;或者白天业务量大,只能在凌晨一两点才能测试;再或者不能进行弱口令扫描,账号锁定后会对业务产生影响等等,这些都需要事先沟通好,以免测试对客户生产环境造成影响。
确定项目范围,项目范围圈出了要测试的内容。我们只能对已授权的资产进行测试,未授权的资产不能进行任何测试。
确定周期,起始和终止时间。根据测试内容,评估所需要花的时间。一般建议多填充20%,以防测试因各种因素中断,可以拿这20%的时间作为缓冲。
前期交互阶段参与的一般是销售和项目经理,他们与客户达成协议后,客户将需要测试的资产交给项目经理,再由项目经理分发给渗透人员执行。但有时客户会直接和渗透人员对接,特定是在长期项目中,这个时候渗透人员也会参与到这个阶段。
02 情报搜集阶段
情报搜集阶段的目标是尽可能多的收集渗透对象的信息(网络拓扑、系统配置、安全防御措施等),在此阶段收集的信息越多,后续阶段可使用的攻击矢量就越多。因为情报搜集可以确定目标环境的各种入口点(物理、网络、人),每多发现一个入口点,都能提高渗透成功的几率。
和传统渗透不同的是,安全服务有时候仅仅只是针对一个功能进行测试,所以不一定每次都需要收集目标的信息,或者只需要收集一部分信息;但如果是对一个系统进行渗透,还是要尽可能多的收集目标的信息。
03 威胁建模阶段
利用上一阶段获取到的信息进行威胁建模和攻击规划。
威胁建模;利用获取到的信息来标识目标组织可能存在的漏洞与缺陷。威胁建模有两个关键要素:资产分析和威胁分析。识别主要和次要资产并对其进行分类,并根据资产识别其可能存在的威胁。比如看到28017端口我们要想到是否存在mongodb未授权访问,看到21端口我们要想到是否存在ftp匿名登录等等。
攻击规划;根据威胁模型确定下一步需要搜集的信息和攻击方法。威胁模型建立后,可行的攻击矢量已基本确定,接下来要做的就是一个一个验证其是否可行,在这个过程中依然会伴随着信息的收集以及威胁模型的调整。
04 漏洞分析阶段
漏洞分析是一个发现系统和应用程序中的漏洞的过程。这些漏洞可能包括主机和服务配置错误,或者不安全的应用程序设计。虽然查找漏洞的过程各不相同,并且高度依赖于所测试的特定组件,但一些关键原则适用于该过程。
在进行任何类型的漏洞分析时,测试人员应适当地确定适用深度和广度的测试范围,以满足所需结果的目标和要求。传统的渗透是能通过一个漏洞拿到服务器最高权限就行,因此其重点是发现一个可利用的漏洞。但安全服务要求我们尽可能多的发现目标存在的漏洞,以此来保证系统的安全,而且很多时候只要证明漏洞存在即可,不需要再进行漏洞利用。两者的区别就相当于点和面,广度和深度均有所不同,具体执行尺度需要根据客户需求来定。
有些漏洞的验证,我们可以通过抓包改包很轻易的实现,但有些漏洞,验证的步骤很繁琐,则需要编写特定的概念验证(POC)来验证漏洞,这就要求测试人员有一定的开发能力。
05 漏洞攻击阶段
在验证漏洞存在后,接下来就是利用发现的漏洞对目标进行攻击了。漏洞攻击阶段侧重于通过绕过安全限制来建立对系统或资源的访问,实现精准打击,确定目标的主要切入点和高价值目标资产。
为实现系统安全,系统往往都会采用诸多技术来进行防御,如反病毒(IPS、IDS、WAF、......)、编码、加密、白名单等,在渗透期间,则需要混淆有效载荷来绕过这些安全限制,以达到成功攻击的目的。很多情况下,互联网上有很多公开的漏洞利用,可直接拿来使用,但对于一些特殊情况,则需要我们根据实际情况来量身定制有效载荷(payload)和漏洞利用(exploit)。
06 后渗透攻击阶段
后渗透攻击,顾名思义就是漏洞利用成功后的攻击,即拿到系统权限后的后续操作。后渗透攻击阶段的操作,可分为两种:权限维持和内网渗透。
权限维持——提升权限及保持对系统的访问。系统最高权限是我们向往的ONEPIECE,如果漏洞利用阶段得到的权限不是系统最高权限,我们应该继续寻找并利用漏洞进行提权。同时为了保持对系统的访问权限,我们应该留下后门(木马文件等)并隐藏自己(清除日志、隐藏文件等)。
内网渗透——利用获取到的服务器对其所在的内网环境进行渗透。内网环境往往要比外网环境有趣,我们可以利用获取到的服务器进一步获取目标组织的敏感信息。
07 报告阶段
渗透测试的最后一步便是报告输出。客户不会关心渗透的过程到底是怎样,他们要的只有结果,因此一份好的报告尤其重要。好的报告至少要包括以下两个主要部分,以便向客户传达测试的目标、方法和结果。
执行概要。这个部分向客户传达测试的背景和测试的结果。测试的背景主要是介绍测试的总体目的,测试过程中会用到的技术,相关风险及对策。测试的结果主要是将渗透测试期间发现的问题进行简要总结,并以统计或图形等易于阅读的形式进行呈现。然后根据结果,对系统进行风险等级评估并解释总体风险等级、概况和分数,最后再给出解决途径。
技术报告。这个部分主要是向客户传达测试的技术细节,详细描述测试发现的问题、攻击路径、影响和修复建议等。一方面是为了让客户更好的理解问题所在,将漏洞进行整改,另一方面是方便后续漏洞复查,形成矩阵跟踪闭环。