API渗透测试与普通Web应用程序渗透测试类似,都是通过对资产暴露面的分析与模拟攻击,挖掘系统中存在的安全缺陷。其基本流程也遵循渗透测试执行标准,主要包含的步骤:前期准备、信息收集、漏洞分析、漏洞利用、报告编撰等。结合国内渗透测试工作开展的实际情况,这里将API渗透测试过程划分为3个阶段。
- 前期准备阶段:这一阶段的工作是为后续渗透测试工作的真正开展做准备,主要以甲乙双方的交流沟通为主,目前是明确渗透测试的目标和范围、开展的周期、相关干系人、配套资源以及渗透测试授权书等。
- 渗透执行阶段:在了解了本次渗透的主要信息并获得授权后,即可以开始进入渗透执行阶段。这一阶段的内容与上文所提及的渗透测试执行标准类似,主要包含API运行环境的基本信息收集(比如IP、域名、端口、Swagger文件、WSDL文件等)、攻击面分析、漏洞挖掘、漏洞利用、成果汇总等。
- 总结汇报阶段:在针对API的渗透测试工作结束后,渗透测试人员已经获得了一些成果(比如漏洞列表、被攻陷的系统、暴露的数据等),需要将这些成果进行汇总整理,结合业务情况进行分析,并与相关干系人进行沟通交流,达成共识,最后输出正式的渗透测试报告,并完成汇报。
一个渗透测试的过程其实可以对应于一个项目管理的过程。在开展渗透测试活动时,也可以采用项目管理的思想来管理整个过程,制订实施计划,识别和管理风险,以达到渗透测试的目的。为了保证渗透测试活动开展的成功性,渗透测试人员需要把握以下关键点。
- 渗透测试的目的:为什么要做渗透测试,渗透测试完成之后需要达到什么效果,这些是渗透测试活动开展前首先要考虑的。大多数渗透测试活动的开展都是有一定背景的,比如满足监管合规要求、配合开展安全审计、信息系统全面的安全风险评估。总之,都是有缘由的,这是整个事情的出发点和归宿。只有清楚了渗透测试的目的,才能在活动开展过程中,抓大放小,理解重点,达到渗透测试活动开展的预期效果。
- 根本原因分析:理解了渗透测试的目的,还需要做进一步的根本原因分析。根本原因分析的前提是识别问题,发现当前环境下需要渗透测试的信息系统或API服务存在哪些问题(比如管理上的问题、业务上的问题、技术架构上的问题等)。正是这些问题的存在使得管理者需要通过渗透测试来了解整体安全状况。
- 渗透测试范围:了解了渗透测试的目的和根本原因,接下来来了解渗透测试的范围,以便为后续具体执行方案的制定提供方向。渗透测试范围一般是大小合适最好,范围过大导致工作量和成本增加且无法把握重点,范围过小则达不到渗透测试的目的。渗透测试范围的界定通常是和业务管理者、技术管理者共同商讨的结果。业务管理者对高层关注度、业务方面的风险理解深刻,知道当前的重点和迫切需求是什么;技术管理者对信息系统的整体架构、技术选型、资产情况、历史安全事件理解深刻,可以提供很好的参考意见。一个成功的渗透测试范围的界定,是联合多个干系人共同协商并达成一致的结果。
- 可执行的实施计划:实施计划是基于根本原因分析后,为解决当前存在的问题或措施的落地而制定的解决方案。一个可落地、可执行的实施计划有利于早期发现问题,及时纠正;同时,也利于计划实施过程中的跟踪和分析。实施计划的制定可以参考项目管理过程中WBS(工作分解结构)分解的方式,先粗后细,先制定关键里程碑节点,再循序渐进细化各个环节。制定实施计划的过程也是熟悉计划落地的过程,通过计划制定明确进度、工期、人力、资源的投入情况。
- 渗透测试团队组建:再好的实施计划都要依赖人去执行,渗透测试团队的组建也是渗透测试过程中很关键的一项工作。团队成员除了专业的渗透测试人员外,一般还要有业务人员和信息系统研发或运维人员帮助渗透测试团队理解渗透测试环境、漏洞以及业务逻辑的相关问题。如果公司没有专门的渗透测试人员,则需要招募外部渗透测试人员,对于团队的管理、内外部协调也是很重要的一项工作内容。
- 沟通汇报:在渗透测试工作开展的过程中,沟通是一项必不可少的工作,沟通的目的是为了让相关干系人了解渗透测试工作的现状,同步关键信息,减少无意义的误解和歧义,增强管理层、团队人员对渗透测试工作的信心,促进渗透测试工作走向既定目标。沟通的方式有很多种,可以选择定期的会议、每天的日报、每周的周报、口头汇报以及即时通信工具等,通过沟通,让关系渗透测试工作的人了解他想了解的内容,统一目标和利益关系,达成共识,为最终目的助力。