多读书多实践,勤思考善领悟

Kali linux渗透测试之 二.渗透测试前准备

本文于2017天之前发表,文中内容可能已经过时。

一. 简介

1. 渗透测试的种类

(1) 黑盒测试

定义:渗透测试人员除了知道被测试的目标之外,其余与目标相关的信息一无所知。

特点:这种类型的渗透测试属于外部渗透测试。在前期需要对目标进行大量的信息收集,耗时较长。但是这种类型的渗透测试更有利于挖掘出系统潜在的漏洞、以及脆弱环节、薄弱点等。

(2) 白盒测试

定义:渗透测试人员可以通过正常渠道向被测试单位取得各种资料,包括网络拓扑、员工资料甚至网站程序的代码片段,也可以和单位其他员工进行面对面沟通。

特点:这种类型的渗透测试在前期已经对目标系统有了一个初步的了解。这类测试的地点可以分为“从组织内部”与“从组织外部”两种大环境。在这种测试下可以充分发挥“社会工程学的力量”,对企业内部雇员的越权操作进行测试。

(3) 灰盒测试

定义:灰盒测试介于白盒测试与黑盒测试之间

特点:属于较为隐秘的测试。在测试当中,被测试单位只有少数人知晓测试的存在,因此能够较好的检验单位中的信息安全事件监控、响应等是否到位。

2. 脆弱性评估与渗透测试

脆弱性评估通过分析企业资产面临威胁的情况和程度,评估内部和外部的安全控制的安全性,这种技术上的信息系统评估不仅要揭露现有防范措施里存在的风险,而且要提出多重备选的补救策略,并将这些策略进行比较。内部脆弱性评估可以保证内部系统的安全性,而外部的脆弱性评估则用于验证边界防护的有效性。无论是内部脆弱性评估还是进行外部脆弱性评估,评估人员都会采用各种攻击模式严格测试网络资产的安全性,从而验证信息系统处理安全威胁的能力,进而确定应对措施的有效性。

脆弱性测试与渗透测试的区别在于:渗透测试不仅要识别目标的弱点,它还涉及在目标系统上进行漏洞利用、权限提升和访问维护。换句话说,脆弱性评估虽然可以充分的发现系统里的缺陷,但是不会考虑去衡量这些缺陷对系统造成的危害。另外,相对于脆弱性评估,渗透测试更倾向于入侵,会刻意的使用各种技术手段利用安全漏洞;所以渗透测试可能对生产环境带来实际的破坏性影响。而脆弱性评估则是以非入侵性的方式、定性、定量的识别已知的安全弱点。

3. 安全测试方法论

  • 开源安全测试方法论(OSSTMM)
  • 信息系统安全评估框架
  • 开放式Web应用程序安全项目
  • Web应用安全联合威胁分类

    4. 渗透测试执行标准

  • 事前互动
  • 情报收集
  • 威胁建模
  • 漏洞分析
  • 漏洞利用
  • 深度利用
  • 书面报告

    5. 通用渗透测试框架

  • 范围界定
  • 信息收集
  • 目标识别
  • 服务枚举
  • 漏洞映射
  • 社会工程学
  • 漏洞利用
  • 提升权限
  • 访问维护
  • 文档报告

二. 准备工作

1. 收集需求

这一步通常以问卷调查的形式从客户哪里收集目标基础设施的所有相关信息。接收问卷调查的对象可以是经被测单位正式授权的个人和业务伙伴。因此,要保证顺利完成渗透测试项目,关键是要在项目的早期找到所有内部和外部的干系人(stake holder),尽早分析他们对项目的关注程度、期望程度、重要程度以及影响程度。然后,依据各个干系人的需要和参与程度制定渗透策略,以在最大程度地发挥渗透测试的正面影响的同时,尽可能地避免潜在的负面影响。
收集需求的基本作用是:帮助渗透出测试人员通过真实可信的渠道获取测试工作所需要的必要信息。当完成明确需求的工作之后,应把测试需求分析书给客户审查,以免受到错误信息的误导。审查步骤可以保证最终测试结果的一致性和完整性。
需求调查问卷举例:

  • 收集公司的基本信息,例如公司的名称、注册地址、企业网站、联络人的详细资料、电子邮件以及电话号码等
  • 了解客户启动渗透测试项目的主要动机
  • 确定渗透测试的方法以及具体类型
  • 测试项目中涉及到多少服务器、工作站、网络设备
  • 基础设施架构支持什么操作系统技术
  • 需要测试什么类型的网络设备?防火墙、路由器、交换机等等
  • 项目周期
  • 项目预算
  • ………

    2. 筹划工作

  • 制定严谨的测试流程
  • 人员配置
  • 成本分析
  • 保密协议
  • 测试合同
  • 操作规则

2. 测试边界分析

有时候客户提出的项目需求,会有意或无意地提示出被测试环境的局限条件和测试边界。这些局限条件和测试边界,可分为技术上的、知识上的或者由客户设定的正规限制。因为这些约束条件可能会对测试造成重大影响,所以测试人员得通过其他可行方案规避这些问题。必须注意的是,有些限制是无法通融或修改的,因为客户要通过这些限制来管控整个渗透测试的过程。

4. 定义业务指标

在明确评估需求和签署服务协议之后,下一步工作就是定义业务指标。这将保证测试结果能够给客户的业务带来各个方面的好处。每一项业务指标都对应着相应的评估需求,吧安全评估的成功展现为业务的业绩。我们整理出一些普遍适用于各类渗透测试项目的业务指标。然而,你也可能根据客户的需求重新设计这份清单。这个工作很重要,审计人员应当能够观察、理解客户的业务出发点,在测试前、测试后、都满足最低程度的指标。管理团队和技术团队通力合作,以保证业务可靠性为命题,以增强信息系统的安全性为着手点,共同制定业务指标。

5. 项目管理和统筹调度

要管理好渗透测试项目,就要彻底了解范围界定流程中的各个部分,一旦明确了范围目标,项目主管就可以与渗透测试人鱼协作,共同开发一个拟定好项目计划和时间进度的正式大纲。虽然渗透测试人员通常可以独立完成这个任务,但是让客户参与进来更加好,因为他们会在有关的日程安排上给予积极的配合。项目管理和进度安排非常重要,因为在执行测试任务时必须要精确保持进度,避免超出预定的时间。在渗透测试过程中,一旦给出了相关任务明确指派了合适的资源之后,就更有必要给予与之相关的关键任务拟定进度安排。