渗透测试(penetration testing,pentest)是实施安全评估(即审计)的具体手段。方法论是在制定、实施信息安全审计方案时,需要遵循的规则、惯例和过程。人们在评估网络、应用、系统或三者组合的安全状况时,不断摸索各种务实的理念和成熟的做法,并总结出了一套理论——测试方法论。本章简要介绍了渗透测试方法论的各关键要点,涉及的主题包括:
● 两种广为认知的渗透测试类型——黑盒测试和白盒测试;
● 漏洞评估和渗透测试的区别;
● 业界普遍采纳的安全测试方法论,以及其核心功能、特征和优势;
● 典型的渗透测试所涉及的10 个阶段;
● 安全测试的道德准则。
渗透测试可能是单独进行的一项工作,也可能是常规研发生命周期(例如,Microsoft SDLC)里 IT 安全风险管理的一个组成部分。产品的安全性并不完全取决于 IT 方面的技术因素,还会受到与该产品有关的最佳安全实践的影响。具体而言,增强产品安全性的工作涉及安全需求分析、风险分析、威胁建模、代码审查和运营安全。
通常认为,渗透测试是安全评估最终的也是最具侵犯性的形式,它必须由符合资质的专业人士实施。在进行评估之前,有关人员可能了解也可能不了解目标的具体情况。渗透测试可用于评估所有的IT基础设施,包括应用程序、网络设备、操作系统、通信设备、物理安全和人类心理学。渗透测试的工作成果就是一份渗透测试报告。这种报告分为多个部分阐述在当前的目标系统里找到的安全弱点,并且会讨论可行的对抗措施和其他改进建议。充分应用渗透测试方法论,有助于测试人员在渗透测试的各个阶段深入理解并透彻分析当前存在的防御措施。
虽然渗透测试各种各样,但是业内普遍将其划分为两类:白盒测试和黑盒测试。
在进行黑盒测试时,安全审计员在不清楚被被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用的安全弱点。渗透测试人员应能理解安全弱点,将之分类并按照风险级别(高、中、低)对其排序。通常来说,风险级别取决于相关弱点可能形成的危害的大小。老练的渗透测试专家应能确定可引发安全事故的所有攻击模式。当测试人员完成黑盒测试的所有测试工作之后,他们会把与测试对象安全状况有关的必要信息进行整理,并使用业务的语言描述这些被识别出来的风险,继而将之汇总为书面报告。黑盒测试的市场报价通常会高于白盒测试。
白盒测试的审计员可以获取被测单位的各种内部资料甚至不公开资料,所以渗透测试人员的视野更为开阔。若以白盒测试的方法评估安全漏洞,测试人员可以以最小的工作量达到最高的评估精确度。白盒测试从被测系统环境自身出发,全面消除内部安全问题,从而增加了从单位外部渗透系统的难度。黑盒测试起不到这样的作用。白盒测试所需的步骤数目与黑盒测试不相上下。另外,若能将白盒测试与常规的研发生命周期相结合,就可以在入侵者发现甚至利用安全弱点之前,尽可能最早地消除全部安全隐患。这使得白盒测试的时间、成本,以及发现、解决安全弱点的技术门槛都全面低于黑盒测试。
正确地理解和使用安全评估领域的技术术语十分必要。在您的职业生涯中,您可能时常会遇到那些不了解行业术语,却需要从这些专用名词里选一个进行采购的人。其实商业公司和非商业机构里大有这样的人在。至少您应该明白这些类型的测试各是什么。
脆弱性评估通过分析企业资产面临威胁的情况和程度,评估内部和外部的安全控制的安全性。这种技术上的信息系统评估,不仅要揭露现有防范措施里存在的风险,而且要提出多重备选的补救策略,并将这些策略进行比较。内部的脆弱性评估可保证内部系统的安全性,而外部的脆弱性评估则用于验证边界防护(perimeter defenses)的有效性。无论进行内部脆弱性评估还是进行外部脆弱性评估,评估人员都会采用各种攻击模式严格测试网络资产的安全性,从而验证信息系统处理安全威胁的能力,进而确定应对措施的有效性。不同类型的脆弱性评估需要的测试流程、测试工具和自动化测试技术也不相同。这可以通过一体化的安全弱点管控(vulnerability management)平台来实现。现在的安全弱点管控平台带有可自动更新的漏洞数据库,能够测试不同类型的网络设备,而且不会影响配置管理和变更管理的完整性。
脆弱性评估和渗透测试两者最大的区别就是:渗透测试不仅要识别目标的弱点,它还涉及在目标系统上进行漏洞利用、权限提升和访问维护。换句话说,脆弱性评估虽然可以充分发现系统里的缺陷,但是不会考虑去衡量这些缺陷对系统造成的危害。另外,相比脆弱性评估,渗透测试更倾向于入侵,会刻意使用各种技术手段利用安全漏洞;所以渗透测试可能对生产环境带来实际的破坏性影响。而脆弱性评估则是以非入侵性的方式,定性、定量地识别已知安全弱点。
为何需要渗透测试?
如果不能确定防火墙、IDS、文件完整性监控等风险减缓控制的实际效果,那么就应当进行渗透测试。虽然漏洞扫描(脆弱性评估)能够发现各个漏洞,但是渗透测试则会验证这些漏洞在实际环境里被利用的可能性。
有些观点认为,这两种类型的安全评估重复性很高,只是同义词而已。这种观点绝对有误。合格的安全顾问会根据客户的商务需求,选择一种最合适的安全评估向顾客推荐,绝对不会把不同类型的安全评估混为一谈。然而,仔细核实安全评估项目的内容和做出最终决定确实是顾客的责任。
渗透测试的价格比脆弱性评估的价格要高。
为满足安全评估的相应需求,人们已经总结出了多种开源方法论。无论被评估目标的规模有多大,复杂性有多高,只要应用这些安全评估的方法论,就可以策略性地完成各种时间要求苛刻、富有挑战性的安全评估任务。某些方法论专注于安全测试的技术方面,有些则关注管理领域。只有极少数的方法论能够同时兼顾技术因素和管理因素。在评估工作中实践这些方法论,基本上都是按部就班地执行各种测试,以精确地判断被测试系统的安全状况。
本书再次向您推荐几种著名的安全评估方法论。本章将重点突出这些方法论的关键特征和优势,希望它们能够帮助您拓宽网络安全和应用安全评估的视野。
● 开源安全测试方法论
● 信息系统安全评估框架
● 开放式Web 应用安全项目
● Web 应用安全联合威胁分类
● 渗透测试执行标准
上述这些测试框架和方法论,都能够指导安全人士针对客户需求制定最得当的策略。其中,前两个方法论所提供的通用原则和方法,几乎可以指导面向任何类型资产的安全测试。由OWASP(Open Web Application Security Project)推出的测试框架主要面向应用安全的安全评估。PTES(Penetration Testing Execution Standard)能够指导所有类型的渗透测试工作。然而需要注意的是,安全状态本身是一个持续变化的过程,而渗透测试只能够获取目标系统在被测试的那一时刻的安全状态。在测试的过程中,哪怕被测的信息系统发生了细微的变化,都可能影响安全测试的全局工作,从而导致最终的测试结果不正确。此外,单一的测试方法论并不一定能够涵盖风险评估工作的所有方面。而拟定适合目标网络和应用环境的最佳测试策略,确实是安全审计人员的职责。
安全测试的方法论有很多。要选取最佳的指导理论,就需要综合考虑成本和效果的因素。所以,评估策略的筛选工作受到多种因素的制约。这些因素包括与目标系统有关的技术细节和各种资源、渗透人员的知识结构、业务目标以及法规问题。以业务的角度看,效果和成本控制至关重要。本文介绍的这几种方法论,在官方网站上都有非常正规的详细说明文件。在此,我们对它们进行简要总结。如需了解详细的工作流程,您需要亲自访问相关网站,仔细研究各种文件和实施细则。
开源安全测试方法论(Open Source Security Testing Methodology Manual,OSSTMM)(官方网站是http://www.isecom.org/research/osstmm.html
)是由Pete Herzog 创建,继而由ISECOM发展的测试方法论。它是国际公认的安全测试和安全分析标准。很多企业正在他们的日常评估工作中应用这一标准。以技术的角度看,这一方法论把安全评估工作划分为 4 组:范围(scope)、信道(channel)、索引(index)和矢量(vector)。“范围”指代评估人员收集被测单位全部资产相关信息的工作。“信道”则是这些资产之间的通信方式和互动类型;包括物理方式、光学方式和其他方式的通信。每个信道都构成了一套独特的安全组件,都要在评估阶段进行测试和验证。这些组件包括物理安全、人类心理学、数据网络、无线通信介质和电信设施。所谓“索引”,泛指特定资产和相应ID的对应关系。例如,审计人员常常要明确MAC地址和IP地址的对应关系,就是为了整理一种索引。而“矢量”指的是审计人员访问和分析功能性资产的方式。以上几个部分,组成了全面评估被测IT运营环境的整个技术流程,被称为审计范畴(audit scope)。
OSSTMM的方法论总结了多种形式的安全测试,并将它们划分为6个标准种类。
● 盲测(blind):事先不了解目标系统的任何情况的测试就是盲测。然而,在评估过程开始之前,被测单位会知道何时开始安全测试。道德黑客(Ethical hacking)和对抗竞赛(War Gaming)就是典型的盲测。因为盲测遵循了道德规范,事先通知被测单位,所以这种测试方法也被广泛接受。
● 双盲测试(double blind):在双盲测试中,审计人员事先不清楚目标系统的情况,被测单位事先也不会知道将有安全测试。黑盒审计和渗透测试都属于双盲测试。当前绝大多数的安全审计采用双盲测试方法。对于审计人员来说,选择能够胜任的最佳工具和最佳技术已经是一种考验了。
● 灰盒测试(grey box):在灰盒测试中,审计师仅了解被测系统有限的情况,被测单位也会知道审计开始和结束的时间。脆弱性评估就属于灰盒测试。
● 双灰盒测试(double grey box):双灰盒测试工作的方式类似于灰盒测试。只不过在双灰盒测试中,会给审计人员定义一个时限,而且这种测试不涉及信道测试和渗透矢量。白盒审计就属于双灰盒测试。
● 串联测试(tandem):在串联测试中,审计人员对目标系统只有最低限度的了解,而在测试开始前他们会通告被测单位。需要注意的是,串联测试会测试得比较彻底。水晶盒测试和内部审计都是串联测试的例子。
● 逆向测试(reversal):在逆向测试中,审计员充分了解目标系统;而被测单位将永远不会知道测试的时间或方式。
OSSTMM推广的技术评估框架十分灵活。即使某个项目在逻辑上可分为3个连续的信道和5个安全组件,我们照样可以使用OSSTMM的框架评估其安全性。OSSTMM体系的测试方法,通过检查访问控制安全、流程安全、数据控制、物理位置、周界防护、安全意识水平、信任关系、反欺诈控制等诸多过程,全面评估被测单位的安全性。总体而言,这一理论强调测试目标和测试方法,注重在测试前、测试中、测试后应当采用的相应策略,而且介绍了解读和综合分析测试结果的方法。确切掌握目标系统当前的防护水平至关重要,有关数据十分珍贵。OSSTMM 引入了RAV(Risk Assessment Value,风险评估值)的概念,并通过它阐述了这一理论的很多理念。RAV 的基本功能是分析测试结果,进而基于三个因素(运营安全、损耗控制、局限程度)的标称值来计算安全的标称值。最后求得的这个标称值称为 RAV 得分。在引入 RAV 得分的概念之后,审计人员可以量化评估当前的安全状态,并可为企业安全的下一步目标设定里程碑。从商业的角度来看,RAV 有助于优化安全投资,并可助您选择更为有效的安全解决方案。
主要特性与优势
OSSTMM的主要特性与优势如下。
● OSSTMM 的方法可从本质上降低假阴性和假阳性的发生率。它推出的测量方法具有普遍的应用价值。
● 该架构适用于多种类型的安全测试,可用于渗透测试、白盒测试审计、漏洞评估等其他测试。
● 它能够确保每次评估应进行得全面彻底,还能保证评估过程的一致性、可测性、可靠性。
● 该方法本身可分为4个相对独立的阶段,即定义阶段、信息阶段、调节阶段和控制测试阶段。每一个阶段都会获取、评估和验证目标环境中的相关信息。
● RAV 的计算方法综合衡量了运营安全、损耗控制、局限程度的情况。它的计算结果即RAV得分,可代表目标系统当前的安全状况。
● 这种方法的评估报告均采用安全测试审计报告(STAR,Security TestAudit Report)模板。以这种格式书写的报告同时适合被测单位的管理层和技术层阅读,有助于他们共同理解测试目标、风险评估值(RAV)和每个阶段的测试结果。
● 该方法定期更新。OSSTMM 会符合安全测试、法规和法规问题的新变化。
● OSSTMM 与行业法规、企业政策,以及政府法规兼容。此外,官方认可的审计员都是直接从ISECOM(安全与开放式方法论研究协会)获取的资格认证。
信息系统安全评估框架(Information Systems SecurityAssessment Framework,ISSAF) (www.oissg. org/issaf)是另外一种开放源代码的安全性测试和安全分析框架。为了解决安全评估工作的逻辑顺序问题,该框架已分为若干个领域(domain)。不同领域评估目标系统的不同部分,而且可以根据实际情况对每个领域进行相应调整。把这一架构与日常业务的生命周期相结合,可以充分满足企业安全测试的准确性、完整性、高效性的需求。ISSAF兼顾了安全测试的技术方面和管理方面。在技术方面,它有一整套关键的规则和程序,形成了一套完备的评估程序。在管理方面,它明确了在整个测试过程中应当遵循的管理要则和最佳实践。应当注意,ISSAF主张安全评估是一个过程,而不是一次审计。审计框架应当分为计划、评估、修复、评审以及维护阶段,应当有更为完善的标准。然而ISSAF具有灵活和高效的特点,是审计工作各个阶段的通用准则,可适用于所有企业结构。
这一框架的交付报告分为业务活动、安全措施、目标系统中可能存在的安全弱点的完整清单。其评估过程注重分析被测单位最容易被利用的关键漏洞,侧重于以通过最短路径尽快完成测试任务。
ISSAF 的技术评估基准十分全面,可用于测试各种技术和不同流程。不过,丰富的内容带来了一大副作用,即要跟上评估领域的技术变化速度,这一框架就需要频繁更新。相对而言,OSSTMM受技术更新影响的幅度略小。即使审计人员使用不同的工具和全新的技术,他们遵循的方法论却基本不变。虽然如此,但是ISSAF仍然号称是由最新的安全工具、最佳实践,以及补充安全评估计划的管理理念所组成的广泛框架。它也可以和OSSTMM或其他测试方法论一起使用,从而能够兼有各种方法的优点。
主要特性与优势
ISSAF的主要特性与优势如下。
● ISSAF 主要测试当前安全控制措施中的严重漏洞,所以它在保障系统安全方面的意义重大。
● 它关注信息安全范畴内的各个关键领域,涵盖了风险评估、业务结构和管理、控制评估、服务管理、安全策略的开发和常规的最佳实践。
● ISSAF 渗透测试方法论评估网络、系统或应用程序的安全性。应用该框架可以无阻碍地把精力重点放在特定技术上,如路由器、交换机、防火墙、入侵检测和防御系统、存储区域网络、虚拟专用网络、各种操作系统、Web 应用服务器、数据库等。
● 通过必要的控制和处理,它可以统一技术层和管理层这两方面人员对安全测试的理解。
● 它可帮助管理人员理解当前边界防御体系的现有风险,并可指出可能影响业务完整性的安全弱点,从而帮助人们主动地减少风险。
可同时结合OSSTMM和ISSAF两种理论评估企业环境的安全状况。
开放式 Web应用程序安全项目(Open Web Application Security Project,OWASP)定期推出其top 10 project( 排名前十位的安全隐患防护守则)以提高公共对应用安全的认知意识。这个项目公开了编写安全程序所需遵循的各种原则和惯例。OWASP 的测试项目(https://www.owasp.org/index.php/owasp- Testing_Project
)公布了一套非常实用的安全测试指南。您应当仔细阅读这部分内容,因为这个测试框架往往可以指导您的工作。
OWASP 的Top 10 Project 总结了各种攻击矢量,按照各种隐患可能在技术上和业务上造成的危害,对影响应用安全的风险进行分类和排名。在评估应用程序安全时,这些排名前十的安全风险揭露了普遍存在于各种技术和平台的通用攻击方法。它还阐述了测试、验证和修补应用程序安全弱点的具体方法。尽管Top 10 Project揭示了安全领域的高风险问题,但是这10种风险也只是Web应用程序安全性问题的一部分而已。尽管如此,OWASP社区的很多指南仍然可以指导开发人员和安全审计人员有效地管理Web应用程序的安全。
● 测试指南:https://www.owasp.org/index.php/OWASP_Testing-Guide_v3 _Tab1e_of_Content
。
● 开发人员指南:https://www.owasp.org/index.php/Guide
。
● 代码审查指南:https://www.owasp.org/index.php/Category: OWASP_Code_Review_Project
。
OWASP的Top 10 Project每年都会更新。如需获取详细信息,请访问这个项目的官方网站https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
。
主要特性与优势
OWASP的主要特性与优势如下。
● OWASP 推出了Web应用程序的十大安全风险的测试方法。应用这些方法,可使应用程序避免出现常见的安全缺陷,免受常见攻击的危害,进而巩固了应用程序的保密性、完整性和可用性。
● OWASP 社区研发出大量安全工具,这些工具可辅助进行自动或手动的Web 应用程序测试。Kali Linux 收录了其中较为著名的程序,如WebScarab、Wapiti、JBroFuzz和SQLiX等。
● 在网络基础设施的安全评估方面,OWASP 测试指南为您提供了特定技术的评估细则。举例来说,它的甲骨文(Oracle)的测试方法与 MySQL 的测试方法就各有针对性。该指南采用多种相互关联的方法评估各种技术,有助于审计人员因地制宜地制定测试方法。
● 它鼓励研发人员在研发周期的每个阶段进行有计划的安全测试。这能提高应用程序的健全性、安全性,并能减少程序中的错误。
● 它在业内的认可度和知名度屈指可数。若把排名前十位的安全隐患防护守则与其他Web应用程序安全评估标准结合使用,您可同时满足一个以上的安全标准。
只有彻底、严格的测试流程,才能发现应用程序的安全隐患,而这些测试流程完全可以纳入软件的开发生命周期。Web 应用安全联合威胁分类(Web Application Security Consortium Threat Classification,WASC-TC)是这样的一个评估Web 应用程序安全性的开放标准。与OWASP标准相似,它也从攻击和弱点两方面讨论安全问题,但这一标准以更为深入的方式解决安全隐患。要识别、验证应用程序所面临的各种威胁,就要遵循标准化的工作流程。WASC-TC可以迅速适用于各种技术环境,有着显著的易用性。整体上说,它能够帮助开发人员和安全审计人员以不同的视图了解Web应用程序面临的安全威胁。
● 枚举视图:枚举视图是分析Web 应用程序攻击手段和相应安全弱点的基础。它从定义、类型和多种编程平台的实例这几个角度,详细讨论了每种攻击手段和每个安全弱点。另外,所涉及的安全弱点和攻击手段都被分配了唯一的识别编号,以便于人们引用。目前,这个视图里总共有49个WASC-ID号码(1~49)。这些编号并不代表相应条目的危害程度,仅仅是为了方便引用而分配的编号。
● 开发视图:开发视图关联分析外部的攻击和程序内部的安全弱点,将开发人员的视野转向程序自身的漏洞。这一分析适用于开发周期的三个阶段,即设计、实现(编程)、部署阶段。如果在明确应用程序的需求时没有充分考虑安全方面要求,就会在研发周期的初期阶段引发漏洞,形成设计阶段的安全弱点。不安全的编程规则或不当的惯例产生会造成实现阶段的安全弱点。无论在应用程序、Web 服务器或是其他外部系统的配置过程中哪个部分出现差错,最终都会导致部属阶段的安全弱点。可见,这个视图以最佳安全实践为蓝本,提出了将安全保障措施融入到日常的研发生命周期的具体方法。
● 交叉引用视图:这个视图关联地分析了多种Web 应用安全标准。通过对该视图的引用,审计人员和开发团队能够把当前所使用的标准中的术语(标准条款)与其他标准的相应内容进行对照分析。如此一来,只需要较少的开销,就可以让一个项目同时符合多种不同的安全标准。因为不同的应用程序安全标准会从不同的角度评估应用程序的安全性,所以它们衡量同一的风险的评估指标也不尽相同。因此,要对不同安全标准进行差异性分析,才能够正确地计算安全风险及其严重程度。当前WASC-TC 中的攻击方法和薄弱环节,可以映射到OWASP 的Top 10 Project、Mitre通用缺陷列表(Common Weakness Enumeration,CWE)、Mitre 通用攻击模式列表和分类(Common Attack Pattern Enumeration and Classification,CAPEC)、SANS-CWE 排名前 25 的软件高危错误列表(SANS-CWE Top 25 list)。
Mitre’s CWE 的官方网站是https://cwe.mitre.org/
。
Mitre’s CAPEC 的官方网站是http://capec.mitre.org/
。
SANS-CWE的排名前25的软件高危错误列表的发布网站是http://www.sans.org/top25-software-errors/
。
如需详细了解 WASC-TC 及其评论,请访问官方网站:http://projects.webappsec.org/Threat-Classification
。
主要特性与优势
WASC-TC的主要特性与优势如下。
● WASC-TC 围绕常见攻击和常规弱点这一中心,深入讨论了 Web 应用程序运营系统的安全评估方法。
● 无论何种Web 应用程序平台,都可使用Kali Linux 的工具集验证、测试WASC-TC提出的常见攻击和常规弱点。
● 它提出了三种不同视图,即枚举视图、开发视图和交叉引用视图。枚举视图起到了基础数据库的作用,它列举了在 Web 应用中所有可能被发现的攻击方法和安全弱点。开发视图将这些攻击方法和安全弱点进行关联分析,整理成一系列漏洞,并根据它们在开发过程中的出现阶段进行分类。而开发阶段又可分为设计阶段、实现阶段和部署阶段。WASC-TC 标准的交叉引用视图用于对照、引用其他的应用程序安全标准。
● WASC-TC 标准已经得到了业界的广泛认可。在许多开源和商业解决方案里,特别是漏洞评估和管控产品中,都能看到WASC-TC的身影。
● WASC-TC 也可以和其他著名的应用安全标准兼容,例如OWASP 和SANS-CWE。
渗透测试执行标准(Penetration Testing Execution Standard,PTES)的先驱都是渗透测试行业的精英。这个标准由渗透测试7个阶段的标准组成,可在任意环境中进行富有成果的渗透测试。它的官方网站详细介绍了具体测试方法,有兴趣的读者可访问 http://www. pentest-standard.org/index.php/Main_Page
。
根据这一标准,标准的渗透测试可以分为下述7个阶段:
● 事前互动;
● 情报收集;
● 威胁建模;
● 漏洞分析;
● 漏洞利用;
● 深度利用;
● 书面报告。
PTES 的官方网站详细介绍了每个阶段的思维导图(mind maps)和组成步骤。这些内容有助于审计人员根据被测环境的测试要求,对PTES标准进行相应调整。只要在其官方网站上点击思维导图的构成节点,就可详细查看该节点的各个组成步骤。
主要特性与优势
PTES的主要特性与优势如下。
● 它是非常全面的渗透测试框架,涵盖了渗透测试的技术方面和其他重要的方面,如范围蔓延(scope creep)、报告,以及渗透测试人员保护自身的方法。
● 它介绍了多数测试任务的具体方法,可指导您准确测试目标系统的安全状态。
● 它汇聚了多名日行一“渗”的渗透测试专家的丰富经验。
● 它包含了最常用的以及很罕见的相关技术。
● 它浅显易懂,您可根据测试工作的需要对相应测试步骤进行调整。
Kali Linux 属于通用型操作系统,它配备有多种安全评估工具和渗透测试工具。在没有合适的测试理论指导的情况下冒然使用这些工具,可能会导致测试失败,测试结果可能无法让人满意。因此,从技术管理的角度来看,遵循正规的测试框架对安全测试极为重要。
这一小节将通过黑盒测试的具体方法和白盒测试的通用测试方法介绍通用测试框架。它涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段。评估人员可以根据被测目标的具体情况对上述测试方法进行相应调整。这一方法论由一系列相关步骤所组成。要想成功完成安全评估项目,必须在测试的初始化阶段、测试进行阶段以及测试结束阶段全面遵循这些步骤。这些步骤包括:
● 范围界定;
● 信息收集;
● 目标识别;
● 服务枚举;
● 漏洞映射;
● 社会工程学;
● 漏洞利用;
● 提升权限;
● 访问维护;
● 文档报告。
无论是进行白盒测试还是黑盒测试,选择和使用测试步骤都是测试人员的责任。在测试开始前,测试人员需要根据目标系统的实际环境和已掌握的关于目标系统的情况,制定最佳的测试策略。下文将会介绍每一个测试阶段,包括它们的简要描述、定义和可能适用的应用程序。虽然这种通用测试方法论可以配合其他的方法论同时使用,但是它只是一种指导建议,而不是全能的渗透测试解决方案。
在开始技术性安全评估之前,务必要观察、研究目标环境的被测范围。同时还要了解,这个范围牵扯到多少个单位,是单个单位还是多个单位会参与到安全评估的工作中来。在范围界定阶段,需要考虑的典型因素如下。
● 测试对象是什么?
● 应当采取何种测试方法?
● 有哪些在测试过程中需要满足的条件?
● 哪些因素可能会限制测试执行的过程?
● 需要多久才能完成测试?
● 此次测试应当达成什么任务目标?
审计人员只有确切理解被评估系统所使用的技术,理解其基本功能,以及相关技术与网络之间的相互影响,才能成功达成渗透测试的目标。因此,无论是进行什么类型的安全评估项目,审计人员的知识结构都将起着至关重要的作用。
在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透测试人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们从互联网上搜集信息的互联网渠道主要有:
● 论坛;
● 公告板;
● 新闻组;
● 媒体文章;
● 博客;
● 社交网络;
● 其他商业或非商业性的网站。
此外,他们也可借助各种搜索引擎中获取相关数据,例如谷歌、雅虎、MSN必应、百度等。进一步说,审计人员可以使用Kali Linux 收录的各种工具在测试目标的网络系统里挖掘信息。这些运用漏洞数据挖掘技术的工具能够收集可观信息,包括DNS服务器、路由关系、whois数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集到的信息越多,渗透测试成功的概率就越高。
这个阶段的主要任务是识别目标的网络状态、操作系统和网络架构。该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以帮助测试人员在接下来的工作里枚举目标网络的各种服务。Kali Linux 提供的一系列先进的网络工具,可以轻松探测到联网主机,识别这些主机运行的操作系统,并根据每个设备在网络系统中的不同角色对它们进行归类。这些工具通常采用了基于上层网络协议的主动和被动的检测技术。它们能够通过不同的方式巧妙地利用各种协议获取许多有用的信息,比如操作系统指纹等。
这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务。有很多扫描端口的技术,如全开(full-open)扫描、半开(half-open)扫描、隐蔽式(stealth)扫描等。这些技术都可用来检测端口的开放情况,甚至可以扫描处于防火墙或者入侵检测系统保护下的主机。主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。因此,这个阶段为其后的测试工作打下了基础,有助于测试人员继而发现各种网络设备上可能会造成严重危害的安全漏洞。Kali Linux收录的部分自动化工具可以辅助审计人员完成这一阶段的目标。
至此为止,我们已经充分收集了目标网络的各种信息。接下来,我们就可以根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞。Kali Linux 系统中提供的一系列自动化的网络和应用漏洞评估工具可以担任完成这个阶段的任务。当然,人工(手动)完成这些任务未尝不可,只是人工操作极为耗时,而且需要有关人员拥有专家级的知识。但是,如果能够将自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰、透彻,并能够仔细地检查任何已知和未知的漏洞。否则,被遗漏的漏洞将会一直残留在目标网络系统里。
如果目标网络没有直接的入口,欺骗的艺术将起到抛砖引玉的重要作用。对目标组织中的人员进行定向攻击,很有可能帮助我们找到渗透目标系统的入口。例如,诱使用户运行会安装后门的恶意程序,就可能为审计人员的渗透工作形成突破。社会工程学渗透分为多种不同实现形式。伪装成网络管理员,通过电话要求用户提供自己的账户信息;发送钓鱼邮件来劫持用户的银行账户;甚至是诱使某人出现在某个地点——这些都属于社会工程学攻击。在社会工程学中,达成同一既定目标的实现方式应有尽有。需要注意的是,在对目标实施欺骗以达成渗透目标之前,多数情况下需要长时间研究目标人员的心理。另外,在开展这个阶段的工作之前,您需要事先研究国内的法律是否有关于社会工程学的相关条款。
在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透。某些情况下不得不对漏洞利用程序(exploit)进行额外的研究和修改,否则它可能就无法正常工作。虽然这听起来就很麻烦,但是先进的漏洞利用(修改)工具可使这项工作容易得多,而且Kali Linux 已经收录了这种工具。此外,审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统。整个流程可以分为3步,涉及攻击前、攻击、攻击后的相关行动。
获取目标系统的控制权是渗透成功的标志。接下来,审计人员就可以依据其所拥有的访问权限,在被测系统中自由发挥。审计人员也可以使用适用于目标系统的本地漏洞来提升自己的权限。只要他们能够在目标系统上运行提权漏洞利用程序,就可以获得主机上的超级用户权限或者系统级权限。审计人员还可以以该主机为跳板,进一步攻击局域网络。根据之前对渗透范围的界定,审计人员接下来会开展的攻击可能是受限制的,也可能是不受限的。而后,他们很有可能以各种方式获得与被控制系统有关的更多信息。具体的说,他们可能使用嗅探手段截获网络数据包,破解各种服务的密码,在局域网络中使用网络欺骗手段。所以说,提升权限的最终目的是获得目标系统的最高访问权限。
多数情况下,审计人员需要在一段时间内维护他们对目标系统的访问权限。例如,在演示越权访问目标系统的时候,安装后门将节省重新渗透目标系统所耗费的大量时间。这些情况下,访问维护将节约获取目标系统访问权限所需要的时间、花费和资源。审计人员可以通过一些秘密的通信隧道,在既定时间内维持对目标的访问权限。这些隧道往往基于特定协议、代理或者点对点通信方法的后门程序。这种对系统的访问方法可以清楚地展示,入侵人员在目标系统实施攻击时隐匿行踪的具体方法。
在渗透测试的最后一个环节里,审计人员要记录、报告并现场演示那些已经识别、验证和利用了的安全漏洞。被测单位的管理和技术团队会检查渗透时使用的方法,并会根据这些文档修补所有存在的安全漏洞。所以从道德角度来看,文档报告的工作十分重要。为了帮助惯例人员和技术人员共同理解、分析当前IT基础架构中的薄弱环节,可能需要给不同的部门撰写不同措辞的书面报告。此外,这些报告还可以用来获取和比较渗透测试前后目标系统的完整性。
专业的、道德的、经过授权的安全测试服务,离不开由事先约定的规则所组成的安全测试道德准则。这些准则约定了安全测试服务的服务方式、安全实施的测试方法、合同和谈判所约定的法律条款、测试的范围、测试的准备、测试的流程,以及报告结构的一致性。要顾全上述因素,就要仔细地考察、设计在整个测试过程中都要遵循的正规的操作方法和相关流程。下面将介绍一些常见的到的准则。
● 审计人员不得在和客户达成正式协议之前对目标系统进行任何形式的渗透测试。这种不道德的营销方法有可能破坏客户的正常业务。在某些国家或地区,这种行为甚至可能是违法行为。
● 在测试过程中,在没有得到客户明确许可的情况下,测试人员不得进行超出测试范围越过已约定范畴的安全测试。
● 具有法律效力的正式合同可帮助测试人员避免承担不必要的法律责任。正式合同将会约定哪些渗透行为属于免责范围。这份合同必须清楚地说明测试的条款和条件、紧急联系信息、工作任务声明以及任何明显的利益冲突。
● 测试人员应当遵守测试计划所明确的安全评估的时间期限。渗透测试的时间应当避开正常生产业务的时间段,以避免造成相互影响。
● 测试人员应当遵循在测试流程里约定的必要步骤。这些规则以技术和管理不同角度,通过内部环境和相关人员来制约测试的流程。
● 在范围界定阶段,应当在合同书里明确说明安全评估业务涉及到的所有实体,以及他们在安全评估的过程中受到哪些制约。
● 测试结果和书面报告必须清晰,其顺序必须一致。报告中提及的所有已知的和未知的漏洞,必须以安全保密的方式递交给有权查看报告的相关责任人。