不知有多少“曾梦想仗剑走天涯”的网络与信息安全从业者,是因为渗透测试的初心而步入这个行业的。不过,您是否对渗透测试及其漏洞扫描的相关概念感到既熟悉又陌生呢?您是否觉得自己还停留在从工作实践中积累的感性认识呢?下面,我们将为您梳理渗透测试的各个实施阶段,流程示例,典型工具,以及自动化开源方案。
从概念上说,渗透测试是一种通过模拟“友好的”黑客,来识别和利用安全漏洞的过程。作为一种标准化的系统性方法,它旨在提高目标系统与组织的安全态势。如下图所示,渗透测试往往从规划和收集信息开始,根据目标需求的不同,或是以报告发现到的漏洞、或是以保持访问控制作为结束。
计划阶段旨在获取目标的所有相关信息,例如通过网络钓鱼攻击捕获详细的技术数据。这些细节方面的信息,对于后续过程的开展,起到了至关重要的影响。
而侦察阶段主要是通过主动和被动两种基本方法,收集大量的基本数据。其中,主动侦查很容易引起目标组织的注意;而被动侦察则以更加隐蔽、难以识别的方式间接收集信息。不过,相比被动方法的复杂与耗时,主动方法虽不够细致,但效率更高。
扫描阶段的主要目的是以最小的被发现代价,深入挖掘目标,收集有价值的信息,如同从一堆乱七八糟的物品中筛选出隐藏的宝石。例如,针对Web应用,我们可以扫描 端点等。定位入侵点后,我们便可以调查该端口上运行的服务类型,进而判定其是否存在防火墙或 。下图展示了可开展的多种扫描类型。
作为渗透测试的重要一环,漏洞扫描往往被细化为分析评估数据,通过逆向工程研究漏洞和错误的成因。通常,漏洞扫描与评估需要我们投入大量的时间和精力,以了解不同信息之间的相互关系,进而准确地发现可能被利用的入侵点。当然,像 在线数据库,可以为我们提供针对 利用漏洞列表,以及相关的
一旦发现可被利用的漏洞,攻击者需要尽快谨慎地利用漏洞,对目标系统予以非法访问。其中,最常见的莫过于使用远程代码执行( )和后门。作为最危险的漏洞类型, 漏洞往往表现对输入与输出缺乏检查,以及存在可被篡改的代码逻辑。后门则有两类:自定义后门通常与欺骗目标下载恶意文件有关,而错误配置的后门则开放了开发者的隐蔽访问模式。
作为一名道德黑客,渗透测试的最后往往是撰写报告。在报告中,您需要阐述采取的步骤、发现的问题、可利用的漏洞、面临风险的资产、以及取得的成果等。这些有价值的信息可以协助组织确定针对攻击预防的优先级,从而有的放矢。
在不断变化的网络威胁领域,我们有必要根据上述不同的实施阶段,为渗透测试创建一套能够轻松集成各种工具的工作流程。例如,我们可以首先使用 收集Web应用系统的子域地址,接着利用 、端口等必要的数据,然后通过 进行基于脚本的漏洞分析。下图展示了一个典型的渗透测试流程模型:
该流程的特点是能够合理地整合各个测试工具之间的关联,让一种工具的输出能够影响另一种工具的配置,从而使得针对Web应用的枚举流程更加流畅和简化。当然,随着时间的推移、威胁的演化、以及Web环境的复杂化,安全专家需要通过持续关注细节和积累实战经验,来不断修订和完善该测试流程。
显然,渗透测试离不开工具的使用。让我们来试想一位安全专家被要求对某个Web应用开展渗透测试。那么他会根据自己的工作经验开展如下工作:
网络安全威胁的不断变化,渗透测试工具也应持续迭代、与时俱进。以 漏洞利用平台与框架不但能够提供友好的用户界面,而且可以支持更广泛的漏洞类型,为安全专家提供直观、高效的自动漏洞利用执行流程。目前,整合威胁情报信息已成为一项标准功能。有的工具甚至采用了人工智能和机器学习等技术,来提高对于新型网络威胁和漏洞的识别和排序的精确度和有效性。
随着越来越多的组织实现了持续、快速的软件交付,自动化渗透测试方案也在不断与 工作流进行整合。它可以在开发管道的不同阶段引入安全测试。同时,随着无服务器架构在云计算环境的普及,我们也可以通过创建或修改现有的自动化工具,以评估云基础架构的安全性。对此,安全专家可以将如下开源的工具与方案,整合到现有的测试流程中,以免去自己动手编写系统代码和脚本的烦恼:
上搜索可用于持续集成与持续部署的 等工具,可建立持续集成和测试的管道,以确保自动化测试流程的有效性、灵活性。
可以说,渗透测试流程的自动化使得安全团队能够从重复性任务中解脱出来,简化了资源的使用率,缩短了漏洞扫描与评估的时间,进而让组织能够动态地应对不断变化的威胁形势,保护自身
陈峻(Julian Chen),社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。