渗透测试流程详解
引言
渗透测试(Penetration Testing)是通过模拟恶意黑客的攻击方法,在授权情况下对目标系统进行安全性测试和评估的过程。它强调的是一套科学、规范的流程,而非不计后果的攻击行为或单纯的防御测试。建立全局观并逐步完善专业领域知识,是从入门走向精通的关键。
1. 前期交互 (Pre-engagement Interactions)
这是渗透测试的基石阶段,决定了测试的合法性和边界。
1.1 确定范围与目标
渗透测试团队需与客户组织进行深入讨论,明确测试的范围、目标系统、限制条件以及服务合同细节。定义范围是此阶段最重要的组成部分之一。客户可能并不完全清楚需要测试的具体内容,因此问卷调查是一种较好的形式,客户必须回答几个关键问题,以便正确估计参与范围。
1.2 规则制定与授权
该阶段通常涉及收集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。和客户对上述目标达成一致意见后,必须拿到正式的授权委托书(Authorization Letter)。这份文件是法律层面的保护伞,确保测试行为不被视为非法入侵。
关键产出:
- 测试范围文档(Scope Document)
- 规则书(Rules of Engagement, RoE)
- 正式授权书
2. 情报搜集 (Intelligence Gathering)
许多公司没有考虑到在公共场合有关于他们公司及员工的大量信息,而这些信息可能成为被人利用的弱点。此阶段的目标是尽可能多地收集关于目标的信息。
2.1 被动侦察
在不直接触碰目标系统的情况下收集信息。包括:
- 域名查询:使用 whois 查询域名注册信息、DNS 记录。
- 搜索引擎挖掘:利用 Google Hacking 技术查找暴露的敏感文件、后台入口。
- 社交媒体分析:查看公司官网、微信公众号、微博等公开渠道的员工信息和架构描述。
2.2 主动探测
在获得授权的前提下,进行网络扫描和探测。
- 端口扫描:使用 Nmap 等工具探测开放端口和服务版本。
- 网络拓扑发现:识别内部网络结构、防火墙策略。
- 指纹识别:确认 Web 服务器类型、CMS 版本、框架信息等。
常用工具示例:
# 基础端口扫描
nmap -sV -O target_ip
# 子网枚举
netdiscover -r 192.168.1.0/24
3. 威胁建模 (Threat Modeling)
在搜集到充分的情报信息之后,渗透测试团队成员要坐下来进行威胁建模与攻击规划。
3.1 资产分类
对客户公司的组织资产进行分类和罗列,例如:
- 公司的内部政策、商业计划、路线图
- 公司的产品信息和源代码
- 公司的财务信息(如银行、信贷、股权账户)
- 公司的技术信息如基础设施信息、系统配置信息和用户帐户凭据
- 员工数据和客户数据
3.2 风险识别
当识别出这些商业资产,分析不同资产的价值,便建立准确的威胁模型。通过团队的头脑风暴,进行缜密的情报分析与渗透思路整理,可以从大量的信息情报中理清头绪,确定出最可行的渗透通道。此步骤有助于优先处理高风险资产。
4. 漏洞分析 (Vulnerability Analysis)
在该阶段,高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全漏洞探测与挖掘,期望找出可被利用的未知安全漏洞,并开发出渗透代码,从而打开攻击通道上的关键路径。


