安全测试的区别和流程 - 边窗/SideWindow

/ 0评 / 1

安全测试,狭义上也属于软件测试的一部分,但由于其专业性和多样性,被单独划分出来,执行工作也分别由测试团队和安全团队来进行。
安全测试的目的,是为了保障被测试对象具备:
可用性:需要用车的时候能上车,需要上路的时候能上路;
完整性:开的是自己的车,没被人多放、偷走、换走车内物品;
保密性:别人开不了自己的车,车内物品别人看不到、碰不到、听不到;
不可抵赖:交通事故后,无法抵赖车不是自己的(行驶证),不是自己开的(驾驶证);
不可抵赖有时候还会被分为不可抵赖可审计,或不可抵赖授权(朕给你的,才是你的)、认证(朕不给,你不能抢)。

常见的安全测试方式:
资产发现:通过文档或实际检测,发现资产信息、结构,包括系统、模块、组件、接口,以及主机、设备;
漏洞扫描:使用漏洞扫描工具对被测对象进行漏洞扫描,得到扫描结果,无需人工干涉和参与;
漏洞评估:基于漏洞扫描的结果,进行人工漏洞分析,排除误报,确保漏洞的准确性;
安全评估:在漏洞评估的基础上,进行人工安全测试和评估,确保测试覆盖率以及测试准确性,目的是发现安全漏洞,通常也被称为安全测试;
渗透测试:更贴近真实攻击的测试方式,在安全评估的基础上,利用发现的安全漏洞,目的是测试漏洞的危害和影响;
安全审计:涵盖组织、人员、管理、流程、技术现状,从企业合规性角度进行的审计,部分审计涉及资产发现、漏洞评估,但不涉及渗透测试;
安全评审:针对产品安全要求的评审,基于产品的设计、技术实现和安全要求做差距分析,不涉及技术工作;

企业中安全人员常做的技术工作是安全评估和渗透测试,两者最大的差别是前者点到为止,后者不讲武德。渗透测试也包含整个安全评估的过程,因此,以下流程是整个渗透测试的流程(PTES,Penetration Testing Execution Standard),每个阶段会单独说明安全评估和渗透测试的不同。

一、约定沟通(Pre-engagement)

测试工作开始前,需要先了解、熟悉客户的情况,和客户沟通、约定测试过程中的约束、范围、时间、手段等事宜,目的是在确保测试过程是在客户预期的前提下进行,不影响客户正常的业务和人员进行。
约定沟通阶段需要了解、记录的信息如下:

二、情报搜集(Intelligence Gathering)

情报搜集,是为了进一步了解被测试对象的,搜集内容可以借鉴软件架构领域的4+1框架模型进行:

4+1框架模型

搜集过程中需要谨记“约定沟通”阶段的测试范围、对象、时间,对于不确定是否在测试范围内的情报需要和客户业务、技术对接人确认。对于白盒测试或灰盒测试,客户会提供全部或部分相关的4+1框架中的文档或资料,节省情报搜集时间。
“约定沟通”和“情报搜集”是甲方安全团队和乙方安全团队的最大区别,甲方安全团队对于这两个步骤的熟悉程度足够深入,因此可以在安全工作中减小工作量,同时不会因安全管理的关系,牵涉商务和沟通工作。

三、威胁模型(Threat Modeling)

威胁模型围绕业务资产(组织、人员、工作流程)、业务流程(商业模型、合作关系、运作模式)进行。威胁建模是根据“情报搜集”的结果,对测试对象进行包括攻击面分析、威胁模型分析的过程,帮助测试人员基于威胁模型有针对性地进行脆弱性分析。
在多数的非正式的测试过程中,该步骤会被省略掉,由测试人员根据经验、能力进行脆弱性分析。
威胁模型的种类多样,在渗透测试的威胁建模过程中,通常使用攻击树模型,该模型是源于决策树的一种威胁分析方法,根节点是攻击目标,叶节点是攻击方式,需要测试人员具有专业的安全知识。

攻击树模型

四、脆弱性分析(Weakness Analysis)

或者称为漏洞分析,该过程目的是发现测试对象中潜在的或存在的安全漏洞,并对于漏洞信息进行分析。脆弱性分析的步骤是资产发现、漏洞扫描、漏洞评估、安全评估,人工参与的成分会越来越多。
脆弱性分析需要根据时间限制和人员成本,平衡测试广度和深度,基于“约定沟通”阶段获取的测试对象进行时间安排和人员划分。
安全评估和渗透测试的区别在于,安全评估只需要发现漏洞即可,不需要进一步利用以及进行之后的工作,如通过POC证明漏洞的存在或匹配到CVE漏洞即可,而渗透测试需要进行下一步“利用”。

五、利用(Exploitation)

根据客户要求和项目需要,并非每个测试项目都需要进行漏洞利用。利用阶段的目的是基于脆弱性分析进行漏洞利用,工作内容可能涵盖利用构造、工具编写,需要花费较多的时间。

六、后利用(Post-Exploitation)

后利用阶段主要是通过利用漏洞控制测试对象的资产,或具备相应的权限,因此大多数的渗透测试不会进行该阶段的工作,测试人员能力不足或评估不足往往会造成客户预期之外的不良后果,比如数据被删除、系统停滞等影响业务正常运行的结果。
后利用阶段的目的是为了证明测试的有效性,同时方便评估脆弱性的影响,客户人员对于测试对象的了解和认知不一定符合客观的事实,比如客户认为的不重要的资产和漏洞,客观上可以被利用于实现核心系统的攻击。

七、报告(Reporting)

最终的报告阶段,根据“约定沟通”阶段了解的报告接收人的身份不同,需要制定、编写不同类型的报告,通常分为执行报告(Execution Report)和技术报告(Technology Report)。执行报告有时会被称为风险评估报告,技术报告有时会被称为渗透测试报告,前者面向的人群是非技术类管理人员,后者面向的是技术类执行人员。

知识共享许可协议  本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注