1.3 渗透测试的流程
渗透测试执行标准(Penetration Testing Execution Standard,PTES)所定义的渗透测试过程环节基本上反映了安全业界的普遍认同,主要包括以下几个阶段,如图1-1所示。
图1-1 渗透测试的流程
1.3.1 前期交互阶段
在前期交互(Pre-Engagement Interaction)阶段,渗透测试团队与客户进行交互讨论,最重要的是确定渗透测试的范围、目标、限制条件及服务合同的细节。
该阶段通常涉及收集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。
1.3.2 情报搜集阶段
在目标范围确定之后,将进入情报搜集(Information Gathering)阶段,如图1-2所示。渗透测试团队可以利用各种信息来源与技术,尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。
图1-2 情报收集阶段
渗透测试者可以使用的情报搜集方法包括公开来源信息查询、GoogIe Hacking、社会工程学、网络踩点、扫描探测、被动监听等。对目标系统的情报探查能力是渗透测试者一项非常重要的技能,情报搜集是否充分在很大程度上决定了渗透测试的成败,因为如果渗透测试者遗漏关键的情报信息,那么他们将可能在后面的阶段里一无所获。
1.3.3 威胁建模阶段
在搜集到充分的情报信息之后,渗透测试团队的成员们停下敲击键盘,大家聚到一起针对获取的信息进行威胁建模(Threat ModeIing)与攻击规划,如图1-3所示。这是渗透测试过程中非常重要,但很容易被忽视的一个关键点。
图1-3 威胁建模与攻击规划
通过团队全体人员共同的缜密情报分析与攻击思路头脑风暴,可以从大量的情报信息中理出头绪,确定好最可行的攻击通道。
注意
渗透测试不是黑客攻击,不能破坏目标系统。
1.3.4 漏洞分析阶段
确定了可行的攻击通道之后,接下来需要考虑应该如何取得目标系统的访问控制权,即漏洞分析(VuInerabiIity AnaIysis)阶段。
在该阶段,渗透测试者需要综合分析前几个阶段获取并汇总的情报信息,特别是安全漏洞扫描结果、服务站点信息等,通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中进行验证。在该阶段,高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全漏洞探测与挖掘,以期找出可被利用的未知安全漏洞,并开发出渗透代码,从而打开攻击通道上的关键路径。
1.3.5 渗透攻击阶段
渗透攻击(ExpIoitation)是渗透测试过程中颇具魅力的一个环节。在此环节中,渗透测试团队需要利用他们所找出的目标系统安全漏洞进入系统,获得访问控制权。
渗透攻击可以利用公开渠道获取渗透代码,但一般在实际应用场景中,渗透测试者还需要充分地考虑目标系统特性来定制渗透攻击,并需要绕过目标系统中实施的安全防御措施,才能成功达到渗透目的。在黑盒测试中,渗透测试者还需要考虑对目标系统检测机制的逃逸,从而避免被目标系统安全响应团队发现,常见的渗透方式如图1-4所示。
图1-4 常见的渗透方式
1.3.6 报告阶段
渗透测试过程结束后,最终向客户提交一份渗透测试报告(Reporting)。这份报告凝聚了之前所有阶段中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的攻击途径,同时,还要站在防御者的角度,帮助客户分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。