1.1.5 渗透测试
1.概述
渗透测试(Penetration Test)是指在已授权的情况下对计算机系统进行模拟网络攻击,以评估计算机系统的安全性。在渗透测试过程中,评估者会使用多种接近真实攻击者的手段或方法,尽可能多地发掘系统中存在的漏洞,最终输出为渗透测试报告,作为系统脆弱程度的评判标准。
进行渗透测试时,一般会确定目标系统的范围,并规定测试的目标,如获取服务器的最高权限。
根据客户提供的信息级别,可以将渗透测试分为三类。
• 白盒。渗透测试人员可以访问目标应用系统的源代码等,目标客户需保证渗透测试人员能够深入了解目标系统,以便于发现隐藏漏洞。
• 黑盒。渗透测试人员对目标系统的内部结构一无所知,需要根据公开的相关信息寻找进入目标系统的方法。
• 灰盒。渗透测试人员对目标系统的内部情况有一定了解,可能包括架构、技术体系、人员构成等。灰盒测试是白盒和黑盒相结合的测试方法。
渗透测试是全面性安全审计的一个重要组成部分,许多行业会定期进行渗透测试以保证系统安全性,如支付卡行业数据安全标准。
根据目标系统的不同,渗透测试可以分类为不同类型,如Web应用程序、App应用、社会工程等。
2.发展历程
“渗透”一词最早出现在1967年的春季联合国际计算机会议上,被用来描述对计算机系统的攻击,由RAND公司的计算机安全专家和美国国家安全局的相关专家提出。在这次会议上,计算机渗透被正式确定为在线计算机系统的主要威胁。
美国政府逐渐意识到计算机系统所面临的安全状况,为此组建了“tiger teams”,使用渗透测试的方式来评估计算机系统的安全性。
最早的渗透测试方法论是James P.Anderson提出的,他曾与美国国家安全局、RAND公司以及其他政府机构合作研究计算机系统安全,一次渗透测试应该至少包含以下步骤。
• 寻找一个可被利用的漏洞。
• 围绕此漏洞设计一次攻击。
• 测试该攻击方案。
• 获取一条正在使用的线路。
• 进入攻击行动。
• 利用入口点来还原信息。
目前,业界比较流行的渗透测试标准是PTES(Penetration Testing Execution Standard),该标准将渗透测试过程分为7个阶段,涵盖了与渗透测试有关的所有内容,包括最初的沟通和测试背后的原因;到情报收集和威胁建模阶段,测试人员在幕后工作,以便更好地了解被测组织;再到漏洞研究、利用和利用后阶段,测试人员的技术安全专业知识发挥作用,并与业务理解相结合;最后到报告阶段,以对客户有意义的方式演示还原整个过程,并为其提供最大价值。以下是该标准定义的7个阶段。
1)前期交互阶段。与客户进行讨论,确定渗透测试的范围与目标。
2)情报搜集阶段。采用各种可能的方法来收集将要攻击的客户系统的所有信息,包括它的行为模式、运行机理、实施了哪些安全防御机制、如何被攻击等。
3)威胁建模阶段。使用在情报搜集阶段所获取的信息来识别目标系统上可能存在的安全漏洞与弱点。
4)漏洞分析阶段。分析前面几个环节获取的信息,找出哪些攻击途径是可行的。
5)渗透攻击阶段。针对目标系统实施已经过深入研究和测试的渗透攻击。
6)后渗透攻击阶段。从已经攻陷了客户的一些系统或取得域管理员权限之后开始,以特定业务系统为目标,标识出关键的基础设施,寻找客户最具价值和尝试进行安全保护的信息与资产,给出能够对客户造成最重要业务影响的攻击途径。
7)报告阶段。报告是渗透测试过程中最为重要的因素,通过报告文档可以说明在渗透测试过程中做了哪些、如何做的以及如何修复所发现的安全漏洞与弱点。