渗透测试简介

目标

  • 找到基础设施或应用的安全漏洞,防止被利用从而造成损失
  • 评估安全性级别
  • 识别薄弱环节
  • 提出详细的带有建议的应对措施目录

合法性

  • 法律保障:需要书面形式的委托书,在哪一时间段对哪个目标执行哪些测试,明确测试范围和过程等。
  • 定义好的范围(defined scope)
  • 定义好的测试过程(defined test process)
    • 特定的测试点
    • 可复现的结果

范围定义

攻击者模型

描述可能的攻击者、他们的访问方式、权限、前提等。

确定攻击者模型:系统需要防范哪种攻击者?

  • 外部人员,无特权(最常见的攻击者类型,没有任何系统相关的密码,不知道IP对应的系统运行什么)
  • 外部人员,有特权
  • 内部人员,无特权
  • 内部人员,低权限
  • 内部人员,高权限(系统管理员)

测试计划中需要明确一个或多个角度,从而推导出测试覆盖面(test coverage)和测试深度(test depth)。

测试覆盖

确定有多少组件、哪些组件需要被测试,确定测试中被研究的测试对象,例如:

  • 单个组件(Web应用、服务器)
  • 单个接口(API、无线通信接口/Funkschnittstelle/air interface)
  • 端到端测试(从设备、API、到Web应用,检查系统中涉及到的所有组件和接口)

部分系统测试:例如构建新的组件时对不同供应商的产品进行评估。不够全面。

端到端测试:考虑系统整体。但是开销更大、更昂贵。

增量测试(delta test):适合对于经过少量更新的系统进行测试。

测试深度

确定考虑测试对象的详细程度,应该检查哪些测试用例以及哪些类别的测试用例。

根据已知系统相关信息、秘密的数量,划分测试中研究的测试用例和单个组件:

  • 黑盒:只拥有极少甚至完全没有系统内部结构的信息,未认证,未授权
  • 灰盒:已知系统内部结构的少量信息,但是有登陆数据用于认证和授权
  • 白盒:已知系统内部结构的详细信息,测试者能访问所有单个组件(可以查看源码)
  • 探索性的(explorative)或者有时间限制的(time-boxed):测试者在测试中决定,对哪些单个组件、以什么样的详细程度进行考察

黑盒测试更接近真实的攻击情况,开销相对较小,但是一些问题很有可能被忽略。测试覆盖面相对较小,更深层的薄弱点未被发现的风险较高。

白盒测试理论上应该更好,因为测试人员可以检查文档、网络方案、询问开发人员等。但由于更高的覆盖率,相应地也会更昂贵。

灰盒测试是黑盒与白盒的混合形式,相比白盒测试价格更低。但是不如白盒测试那么全面。

探索性测试也结合了黑盒与白盒,更关注基本方面。通常有确定的时间限制。尤其适合大型系统。

测试重点

测试重点指测试时关注的方面和测试点(aspect and test point)。不同类别的测试用例有不同的测试重点。

测试方法

以下方法都存在很多自动化执行的工具。

弱点扫描

使用端口扫描工具或弱点扫描工具扫描定义的IP地址以及应用。借助配置文件和模式(profile and pattern)可以找到系统和Web应用中的弱点,并记录下来。

半自动化的弱点扫描可以概述安全级别,因为典型的弱点可以快速地被找到。然后手动执行测试来寻找更多问题。

渗透测试

渗透测试是指,在给定时间段内使用攻击者的手段有针对性地尝试发现应用程序或系统的安全漏洞。

由于采用实际的方法,这些方法在很大程度上对应于潜在攻击者的方法。

渗透测试的过程模型基于联邦信息安全办公室(BSI, Bundesamts für Sicherheit in der Informationstecchnik)渗透测试的实施概念。

作为渗透测试的一部分,通过实施受控的攻击(controlled attack)来揭示系统中的弱点,从一开始就将真正的攻击可能在以后成功的风险降到最低。

测试点:系统化测试方法、标准化测试用例

源码分析

安全源代码分析审查源文本(source text)并服务于应用程序的改进和质量保证(quality control)。

作为自动分析的一部分,使用适当的工具借助所谓的指标检查程序代码是否存在特殊异常或违反适用的编程准则。

进行源代码分析的条件是由委托方向测试方交付可编译的、完整的源代码,包括所有使用的框架和库以及配置文件。

测试过程

过程模型(process model)

BSI定义的5阶段模型:

  1. 准备(与用户讨论)
    • 确定目标、范围、方法
    • 定义测试环境、测试前提条件
    • 阐明法律和组织方面的内容
    • 确定风险和必要的紧急措施
  2. 信息获取和定量评价(找出尽可能多的信息)
    • 已安装的系统和应用的概览
    • 研究所需的信息
    • 确定潜在的攻击点以及已知的安全缺陷
  3. 信息的定性评价/风险分析
    • 分析并评估收集到的信息,评估可能产生的风险
    • 按优先级排序,选择相关的测试模块
    • 选择测试用例
  4. 主动的入侵尝试
    • 尝试对选出的系统执行主动攻击
    • 验证并记录找到的薄弱点
  5. 总结分析
    • 准备最后的文档
    • 评估结果
    • 展示风险
    • 定义措施

测试工具

根据不同的被研究的测试对象选择特定的软硬件工具。

  • Kali Linux
  • Web: BurpSuite, Swagger (API)
  • 基础设施:nmap, WireShark, Metasploit, John the Ripper

结果评估

CVSS Score:https://www.first.org/cvss/calculator/3.1

  • 基础分
  • 时间分
  • 环境分

分数从0到10,漏洞从弱到严重。

发表评论

您的电子邮箱地址不会被公开。