渗透测试(Penetration Test,简称为 PenTest),是指通过尝试利用漏洞攻击来评估IT基础设施的安全性。这些漏洞可能存在于操作系统、服务和应用程序的缺陷、不当配置或有风险的用户行为中。这种评估也有助于验证防御机制的有效性以及最终用户是否遵守安全政策。
渗透测试通常使用手动或自动技术来系统地破坏服务器、端点、网络应用、无线网络、网络设备、移动设备和其他潜在的暴露点。一旦某个系统的漏洞被成功利用,测试人员会尝试利用被破坏的系统继续攻击其他内部资源,特别是,会通过权限升级逐步获取更高级别的安全许可和对电子虚拟资产和信息的更深入访问。
通过渗透测试成功暴露的任何安全漏洞信息通常会被汇总提交给 IT 和网络系统经理,以帮助这些专业人士做出战略性结论并调整修复工作的优先级。渗透测试的根本目的是衡量系统或终端客户被破坏的可能性,并评估此类事件可能对相关资源或操作产生的任何后果。
把渗透测试看成是试图通过自己动手来确认是否有人能闯入你的房子可能更好理解。渗透测试人员也被称为道德黑客,使用受控环境评估IT基础设施的安全性,以安全地攻击、识别和利用漏洞。区别在于他们不是检查门窗,而是测试服务器、网络、网络应用程序、移动设备和其他潜在的突破口,以发现整套系统的弱点。
渗透测试的整体流程可以分为5个阶段:规划和侦查、扫描、获取访问权限、维持访问权限、分析。
第一阶段主要包含以下两个内容:
- 定义测试的目标和范围,包括要处理的系统和要使用的测试方法
- 收集情报(例如,网络和域名、邮件服务器)以更好地了解目标的工作方式及其潜在漏洞
渗透测试人员会使用工具来检测目标网站或系统的弱点,包括开放的服务、应用安全问题以及开源漏洞。渗透测试人员根据他们在侦查和测试期间发现的内容使用各种工具。通常包含以下两类工具:
- 静态分析:检查应用程序的代码,以预估它在运行时的行为方式。这类工具可以一次性扫描整个代码。
- 动态分析:在运行状态下检查应用程序代码。这是一种更实际的扫描方式,因为它可以实时查看应用程序的性能。
攻击者的动机可能包括窃取、更改或删除数据,转移资金或是损害公司声誉等。因此,这一阶段会使用网络应用攻击,例如跨站脚本攻击、SQL注入和后门等攻击方式,以发现目标漏洞。渗透测试人员会确定最合适的工具和技术来获得对系统的访问,然后利用这些漏洞,以了解她们可能造成的损害。
这一阶段的目标是看这些漏洞是否可以在目标系统中保持足够长的时间以达成攻击者的目的。这是为了模拟复杂的持续性威胁,这些威胁通常在系统中停留数月以窃取企业中最敏感的数据。
渗透测试的结果随后会汇编成一份报告,包含以下内容:
- 被利用的具体漏洞
- 被访问的敏感数据
- 渗透测试人员能够留在系统中而不被发现的时间
安全人员对这些信息进行分析,以帮助配置企业的WAF设置和其他应用安全解决方案,以修补漏洞和阻止未来可能产生的攻击。
根据渗透测试的目标,测试人员能够获取不同等级的信息或是目标系统的访问权限。在某些情况下,渗透测试团队会在开始时采取某种方法并一直坚持下去。其他时候,随着渗透测试期间对系统认识的深入,测试团队也会迭代其测试策略。因此,有3个层次的渗透测试访问权限:
- Opaque Box:测试团队对目标系统的内部结构毫无了解。他们需要像黑客一样行事,探测可以从外部利用的任何弱点。
- Semi-opaque Box:团队掌握了一套或多套凭证。并且知道目标的内部数据结构、代码和算法。渗透测试人员可能会根据详细的设计文件,如目标系统的架构图,设计测试方案。
- Transparent Box:渗透测试人员拥有访问系统、系统组件(包括源代码、二进制、容器和其他运行在该系统上的服务器)的权限。这种方法可以在最短的时间内为目标系统提供最高级别的保障。
全面的渗透测试对于优化风险管理至关重要,这需要测试你所在环境中的所有区域:
-
Web App:测试人员检测安全控制的效率并查找隐藏的漏洞、攻击模式以及其他导致 Web App 被破坏的潜在安全缺口。
-
移动应用:利用自动化和扩展的手动测试,测试人员可以寻找在移动设备上运行的应用程序二进制文件和相应的服务器端功能的漏洞。服务器端的漏洞包括会话管理、加密问题、认证和授权问题以及其他常见的网络服务漏洞。
-
网络:这种测试可以确定外部网络和系统中的常见漏洞和关键漏洞。专家们会设置一个检查表,其中包括加密传输协议、SSL证书范围问题、管理服务的使用等测试用例。
-
云:云环境与传统本地环境存在巨大的差异。通常情况下,安全责任是由使用环境的企业和云服务提供商共同承担。正因为如此,渗透测试需要一套专门的技能和经验来仔细检查云的各个环节,如配置、API、各种数据库、加密方式、存储和安全控制。
-
容器:从 Docker 获得的容器往往存在漏洞,并且可以被大规模利用。错误配置也是与容器及其环境相关的常见风险。以上这两种风险都可以通过专业的渗透测试发现。
-
嵌入式设备(IoT):嵌入式或物联网设备(如医疗设备、汽车、智能家居、智能手表等)由于其较长的使用周期、电源限制、监管要求以及位置分散等特性,需要独特的软件测试方法。专家们在进行彻底的通信分析的同时,还需要进行客户端/服务器分析,以确定在相关使用场景中是否会出现漏洞。
-
API:采用自动和手动测试技术力求覆盖 QWASP API 安全 Top 10 名单。测试人员寻找的一些安全风险和漏洞包括 Broken Object Level Authorization(BOLA)、用户认证、过度的数据暴露、缺乏资源/速率限制等等。
-
CI/CD 流水线:现代 DevSecOps 实践将自动化和智能代码扫描工具整合到 CI/CD 流水线中。除了发现已知漏洞的静态工具外,自动渗透测试工具也可以被集成到 CI/CD 流水线中,以模拟黑客的行为方式来破坏应用程序的安全。自动化的 CI/CD 渗透测试可以发现隐藏的漏洞和攻击模式,这些漏洞和攻击模式在静态代码扫描中是无法发现的。
渗透测试评估了企业保护其网络、应用程序、端点和用户的能力,以防止外部或内部试图规避安全策略来获得对敏感数据的访问。
渗透测试会向企业提供关于可利用的安全威胁的实际信息。通过执行渗透测试,你可以主动识别哪些漏洞是致命的,哪些是不太重要的,哪些是假阳性。这使你的组织能够更明智地确定补救措施的有限次序、应用所需的安全补丁,并更有效地分配安全资源,以确保它们发挥最大优势。
没有对整个环境的适当可见性就贸然改变安全策略可能会导致你所解决的安全问题都是一些实质上不会造成任何伤害的问题。渗透测试不仅能告诉你组件是否在正常运行,它们还可以进行质量检查,所以通过渗透测试你也会发现什么策略是最有效的,什么工具可以提供最高的投资回报率。
渗透测试帮助企业解决审计和合规性问题。通过利用企业的基础设施,渗透测试可以准确地证明攻击者是如何获得敏感数据的。随着攻击策略的发展和演变,定期的强制测试可以确保企业在漏洞被利用之前发现并修复安全弱点,从而领先一步。
此外,对于审计人员来说,这些测试还可以验证其他规定的安全措施是否到位或者正常工作。渗透测试所生成的详细报告还可以帮助企业说明其在维护所需的安全控制方面做出了尽职的工作。