1. 渗透测试概述

  渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。
  
  假设某公司的运维怀疑公司信息系统存在安全隐患,但是由于不具备专业安全攻防的能力,具体存在哪些隐患并不清楚。这时就可以委托安全公司对本公司信息系统进行渗透测试。换句话说,进行渗透测试的团队会把自己模拟成黑客,来对目标信息系统进行各种形式的攻击(当然,这种攻击行为是合法的,因为提前获得了被攻击方的授权),最后把攻击的过程和发现的漏洞,以及漏洞修复方案提交给客户,让客户可以完善自己信息系统的安全性。
  
  在信息安全的知识体系中,渗透测试是占比例最高的一个部分,也是对个人技术能力和领悟能力要求最高的一个部分。渗透测试的过程中不能仅仅只靠学到的固定的攻击方式来进行测试,还需要测试工程师能够根据不同的目标环境,进行各种常规或非常规的方法来尝试;攻击对象和攻击切入点也可能不仅仅是计算机系统,甚至可能是直接从计算机的使用者来进行切入(社会工程学)。

  

1.1 渗透测试的分类

渗透测试一般分为黑盒测试、白盒测试和灰盒测试。不同的客户可能会针对不同的需求选择不同的测试方式。

  • 黑盒测试:是指测试者对目标信息系统一无所知,需要从最开始的信息收集开始一步一步来进行,难度较大,对测试者能力要求较高。但是由于客户也无法得知测试者会以什么方式来攻击和入侵,所以能够检测网络中的应急和入侵防御系统是否有效。这种测试方式成本也较高。

  • 白盒测试:是指测试者提前已经被告知了关于目标信息系统的各种信息,可以更快速的来进行测试,成本较低,一般是用于企业内部人员的测试或日常漏扫巡检。

  • 灰盒测试:白盒测试和黑盒测试基本类型的组合,它可以提供对目标系统更加深入和全面的安全审查。组合之后的好处就是能够同时发挥两种渗透测试方法的各自优势。在采用灰盒测试方法的外部渗透攻击场景中,渗透测试者也类似地需要从外部逐步渗透进目标网络,但他所拥有的目标网络底层拓扑与架构将有助于更好地决策攻击途径与方法,从而达到更好的渗透测试效果。


1.2 渗透测试的流程

  • 前期交互:在进行渗透测试之前,渗透测试团队需要与客户就渗透测试目标、渗透测试范围、渗透测试方式(白盒、黑盒、灰盒以及是否涉及社会工程学、DDOS等)、服务合同等细节进行商议,达成一致协议。

  • 信息收集:在确定了渗透测试目标以及范围之后,接下来就需要进入信息收集阶段。在这个阶段,渗透测试人员需要使用各种公开的资源尽可能的获取与测试目标相关的信息。可以借助各种渠道来收集目标的相关信息,包括公开渠道和非公开渠道。信息收集是为了后面制定攻击方案和计划的重要前提

  • 威胁建模:在这个阶段渗透测试团队需要聚集在一起就获取到的信息进行分析并且做出攻击的规划。这是渗透测试过程中非常重要但是又很容易被忽略的一个关键点。在这个过程中必须要理清思路,确定出最有效、最可行的攻击方案。总之,该阶段就是根据前面收集到的信息制定最可行的攻击计划

  • 漏洞分析:有了攻击计划,但具体从哪里实施整个计划的切入,需要一个攻击点。所有的攻击和入侵都是基于目标信息系统的漏洞的,所以该阶段需要测试者去尽可能的挖掘出系统中的漏洞。而且不仅需要验证系统是否存在已知的漏洞,同时也需要去挖掘系统一些潜在的漏洞,并且开发出相应的漏洞利用代码。

  • 渗透攻击:该阶段就是真正的实施攻击了。根据前面制定的计划,找到的攻击切入点,一步步实施攻击和入侵,以获得目标信息系统最高管理权为最终目标

  • 后渗透攻击:完成攻击后,测试者已经获取了目标系统的最高管理权,但是真正能体现测试价值的往往是后渗透阶段。该阶段测试者需要利用各种手段来找到目标信息系统中的高价值资产,并找到能影响资产价值的手段,实施对目标人的打击和破坏。该阶段中还会留下后门,实现权限维持和长期控制

  • 渗透报告:整个渗透测试的过程最终需要以书面文档的形式向客户提交,这份报告也就是我们常说的渗透测试报告。这份报告涵盖了之前所有阶段中渗透测试团队所获取的到各种有价值信息以及探测和挖掘出来的相关安全漏洞、成功攻击的过程,以及对业务造成的影响后果分析。同时在这个阶段也要对系统中存在的脆弱环节、存在的安全问题给出修复建议。