仅限授权使用:本技能仅用于授权的安全评估、防御性验证或受控教育环境。
渗透测试清单
目的
提供渗透测试规划、执行和后续跟进的完整清单。确保充分准备、合理界定范围、有效修复发现的漏洞。
前置条件
- 明确的测试业务目标
- 目标环境信息
- 预算和时间约束
- 利益相关者联系方式和授权
- 法律协议和范围文档
输出/交付物
- 界定的渗透测试范围和目标
- 准备好的测试环境
- 安全监控数据
- 漏洞发现报告
- 修复计划和验证
核心工作流
阶段1:范围界定
定义目标
- 明确测试目的 - 确定目标(发现漏洞、合规性、客户保障)
- 验证渗透测试必要性 - 确保渗透测试是正确的解决方案
- 对齐结果与目标 - 定义成功标准
参考问题:
- 为什么要做这次渗透测试?
- 期望得到什么具体结果?
- 如何处理发现的问题?
了解测试类型
| 类型 | 目的 | 范围 |
|---|---|---|
| 外部渗透测试 | 评估外部攻击面 | 面向公众的系统 |
| 内部渗透测试 | 评估内部威胁风险 | 内部网络 |
| Web应用测试 | 发现应用漏洞 | 特定应用程序 |
| 社会工程 | 测试人员安全 | 员工、流程 |
| 红队演练 | 完整对抗模拟 | 整个组织 |
枚举可能的威胁
- 识别高风险区域 - 哪里可能发生损害?
- 评估数据敏感性 - 哪些数据可能被泄露?
- 审查遗留系统 - 旧系统通常存在漏洞
- 映射关键资产 - 优先确定测试目标
定义范围
- 列出范围内系统 - IP、域名、应用程序
- 定义范围外项目 - 需要避开的系统
- 设定测试边界 - 允许使用哪些技术?
- 记录排除项 - 第三方系统、生产数据
预算规划
| 因素 | 考量 |
|---|---|
| 资产价值 | 价值越高 = 投入越大 |
| 复杂度 | 系统越多 = 时间越长 |
| 所需深度 | 全面测试成本更高 |
| 品牌价值 | 知名公司收费更高 |
预算现实检查:
- 廉价渗透测试通常效果不佳
- 预算应与资产关键性匹配
- 考虑持续测试 vs 一次性测试
阶段2:环境准备
准备测试环境
- 生产环境 vs 测试环境决策 - 确定在哪里测试
- 设定测试限制 - 生产环境禁止DoS测试
- 安排测试时间窗口 - 最小化业务影响
- 创建测试账户 - 提供适当的访问级别
环境选项:
Production - Realistic but risky
Staging - Safer but may differ from production
Clone - Ideal but resource-intensive
运行初步扫描
- 执行漏洞扫描器 - 先发现已知问题
- 修复明显漏洞 - 不要浪费渗透测试时间
- 记录现有问题 - 与测试人员共享
常用预扫描工具:
# Network vulnerability scan
nmap -sV --script vuln TARGET
# Web vulnerability scan
nikto -h http://TARGET
审查安全策略
- 验证合规要求 - GDPR、PCI-DSS、HIPAA
- 记录数据处理规则 - 敏感数据处理流程
- 确认法律授权 - 获得书面许可
通知托管提供商
- 检查提供商政策 - 允许哪些测试?
- 提交授权请求 - AWS、Azure、GCP要求
- 记录批准 - 保留记录
云提供商政策:
- AWS: https://aws.amazon.com/security/penetration-testing/
- Azure: https://docs.microsoft.com/security/pentest
- GCP: https://cloud.google.com/security/overview
冻结开发
- 测试期间停止部署 - 保持环境一致
- 记录当前版本 - 记录系统状态
- 避免关键补丁 - 除非安全紧急情况
阶段3:专业能力选择
寻找合格的渗透测试人员
- 寻求推荐 - 向可信赖的来源咨询
- 验证资质 - OSCP、GPEN、CEH、CREST
- 检查参考 - 与以前的客户交流
- 匹配专业领域与范围 - Web、网络、移动端专家
评估标准:
| 因素 | 需要询问的问题 |
|---|---|
| 经验 | 从业年限、类似项目经验 |
| 方法论 | OWASP、PTES、自定义方法 |
| 报告 | 报告样本、详细程度 |
| 沟通 | 可用性、更新频率 |
定义方法论
- 选择测试标准 - PTES、OWASP、NIST
- 确定访问级别 - 黑盒、灰盒、白盒
- 商定技术 - 手动测试 vs 自动化测试
- 设定沟通计划 - 更新和升级流程
测试方法:
| 类型 | 访问级别 | 模拟场景 |
|---|---|---|
| 黑盒 | 无信息 | 外部攻击者 |
| 灰盒 | 部分访问 | 有限权限的内部人员 |
| 白盒 | 完全访问 | 内部人员/详细审计 |
定义报告格式
- 审查样本报告 - 确保质量满足需求
- 指定必需章节 - 执行摘要、技术细节
- 要求机器可读输出 - CSV、XML用于跟踪
- 商定风险评级 - CVSS、自定义评分
报告应包含:
- 面向管理层的执行摘要
- 带证据的技术发现
- 风险评级和优先级排序
- 修复建议
- 复测指导
阶段4:监控
实施安全监控
- 部署IDS/IPS - 入侵检测系统
- 启用日志记录 - 全面的审计跟踪
- 配置SIEM - 集中式日志分析
- 设置告警 - 实时通知
监控工具:
# Check security logs
tail -f /var/log/auth.log
tail -f /var/log/apache2/access.log
# Monitor network
tcpdump -i eth0 -w capture.pcap
配置日志记录
- 集中日志 - 从所有系统聚合
- 设定保留期限 - 保留日志用于分析
- 启用详细日志 - 应用程序和系统级别
- 测试日志收集 - 验证所有源正常工作
需要监控的关键日志:
- 认证事件
- 应用程序错误
- 网络连接
- 文件访问
- 系统变更
监控异常工具
- 跟踪错误率 - 异常峰值表明正在测试
- 简报运维团队 - 区分测试和攻击
- 记录基线 - 正常活动 vs 渗透测试活动
监视安全工具
- 审查IDS告警 - 区分渗透测试和真实攻击
- 监控WAF日志 - 跟踪被阻止的尝试
- 检查端点防护 - 杀毒软件检测
阶段5:修复
确保备份
- 验证备份完整性 - 测试恢复
- 记录恢复流程 - 了解如何恢复
- 分离备份访问 - 保护免受测试影响
预留修复时间
- 安排团队可用性 - 渗透测试后分析
- 安排修复实施 - 处理发现的问题
- 计划验证测试 - 确认修复有效
测试期间补丁策略
- 通常避免打补丁 - 保持环境一致
- 关键问题例外 - 仅限安全紧急情况
- 沟通变更 - 通知渗透测试人员任何变更
清理流程
- 删除测试产物 - 后门、脚本、文件
- 删除测试账户 - 移除渗透测试人员访问权限
- 恢复配置 - 返回原始状态
- 验证清理完成 - 审计所有变更
安排下次渗透测试
- 确定频率 - 年度、季度、变更后
- 考虑持续测试 - 漏洞赏金、持续评估
- 为未来测试做预算 - 提前规划
测试频率因素:
- 发布频率
- 监管要求
- 风险容忍度
- 过往发现的严重程度
快速参考
渗透测试前清单
□ 范围已定义并记录
□ 已获得授权
□ 环境已准备
□ 已通知托管提供商
□ 团队已简报
□ 监控已启用
□ 备份已验证
渗透测试后清单
□ 报告已收到并审查
□ 发现已排定优先级
□ 修复已分配
□ 修复已实施
□ 验证测试已安排
□ 环境已清理
□ 下次测试已安排
约束
- 生产环境测试存在固有风险
- 预算限制影响测试深度
- 时间约束可能限制覆盖范围
- 测试人员专业水平差异显著
- 发现结果会快速过时
示例
示例1:快速范围界定
**Target:** Corporate web application (app.company.com)
**Type:** Gray box web application pentest
**Duration:** 5 business days
**Excluded:** DoS testing, production database access
**Access:** Standard user account provided
示例2:监控设置
# Enable comprehensive logging
sudo systemctl restart rsyslog
sudo systemctl restart auditd
# Start packet capture
tcpdump -i eth0 -w /tmp/pentest_capture.pcap &
故障排除
| 问题 | 解决方案 |
|---|---|
| 范围蔓延 | 记录并要求变更审批 |
| 测试影响生产 | 安排非工作时间,使用测试环境 |
| 发现有争议 | 提供详细证据,重新测试 |
| 修复延迟 | 按风险优先排序,设定截止日期 |
| 预算超支 | 明确定义范围,固定价格合同 |
何时使用
本技能适用于执行概述中描述的工作流或操作。