1.2 渗透测试的定义和分类
1.2.1 渗透测试的定义
渗透测试(Penetration Test)并没有一个标准的定义,国外一些安全组织的通用说法是:渗透测试是测试人员通过模拟恶意攻击者的技术与方法,来评估计算机网络系统安全的一种评估方法。整个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析及利用。
换句话来说,渗透测试是指测试人员在不同的位置(如内网、外网等)利用各种手段对某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后形成渗透测试报告,并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告,可以清晰知晓系统中存在的安全隐患和问题。
自20世纪90年代后期以来,渗透测试逐步从军队与情报部门拓展到安全业界,一些对安全性需求很高的企业也开始采纳这种方法来对自己的业务网络与系统进行测试。于是,渗透测试逐渐发展为一种由安全公司提供的专业化安全评估服务,成为系统整体安全评估的一个重要组成部分。通过渗透测试,对业务系统进行系统性评估,可以达到以下目的。
• 知晓技术、管理与运维方面的实际水平,使管理者清楚目前的防御体系可以抵御什么级别的入侵攻击。
• 发现安全管理与系统防护体系中的漏洞,可以有针对性地进行加固与整改。
• 可以使管理人员保持警觉性,增强防范意识。
渗透测试有以下两个显著特点。
• 渗透测试是一个渐进的、持续的、兼具深度和广度的漏洞发现过程。
• 渗透测试是在获取到被测系统授权并且尽可能不影响业务系统正常运行的前提下,模拟攻击者使用的攻击方法进行的测试。
注意
渗透测试并非黑客攻击,必须在具有书面授权的条件下进行。
1.2.2 渗透测试的分类
从渗透测试发起角度,可将渗透测试分为内部测试、外部测试和灰盒测试。
1. 内部测试
进行内部测试的团队可以了解到关于目标环境的所有内部与底层知识,因此渗透测试者可以以最小的代价发现和验证系统中最严重的安全漏洞。所以,内部测试可以比外部测试消除更多的目标基础设施环境中的安全漏洞与弱点,从而给客户组织带来更大的价值。
内部测试无须进行目标定位与情报搜集,此外,内部测试能够更加方便地在一次常规的开发与部署计划周期中集成,故能够在早期消除掉一些可能存在的安全隐患,从而避免被入侵者发现和利用。
内部测试中发现和解决安全漏洞所需花费的时间和代价要比外部测试少得多。而内部测试的最大问题在于无法有效地测试客户组织的应急响应程序,也无法判断出他们的安全防护计划对防御特定攻击的效率。如果时间有限或是特定的渗透测试环节(如情报搜集)并不在范围之内,那么内部测试可能是最好的选择。
2. 外部测试
采用外部测试方式进行测试时,渗透测试团队将从一个远程网络位置来评估目标网络基础设施,并且没有任何目标网络内部拓扑等相关信息,他们完全模拟真实网络环境中的外部攻击者,采用流行的攻击技术与工具,有组织、有步骤地对目标系统进行逐步渗透与利用,寻找目标网络中一些已知或未知的安全漏洞,并评估这些漏洞能否被利用。
外部测试还可以对目标系统内部安全团队的检测与响应能力做出评估。在测试结束之后,外部测试会对发现的目标系统安全漏洞、所识别的安全风险及其业务影响评估等信息进行总结和报告。
外部测试是比较费时费力的,同时需要渗透测试者具备较高的技术能力。在安全业界的渗透测试者眼中,外部测试通常是更受推崇的,因为它能更逼真地模拟一次真正的攻击过程。
3. 灰盒测试
以上两种渗透测试基本类型的组合可以提供对目标系统更加深入和全面的安全审査,这就是灰盒测试(Grey Box Testing)。组合之后的好处就是能够同时发挥两种基本类型渗透测试方法的各自优势。灰盒测试需要渗透测试者能够根据对目标系统所掌握的有限知识与信息来选择评估整体安全性的最佳途径。在采用灰盒测试方法的外部渗透场景中,渗透测试者也需要从外部逐步渗透进入目标网络,但其所拥有的目标网络底层拓扑与架构将有助于更好地决策攻击途径与方法,从而达到更好的渗透测试效果。