定义测试范围和获得授权

外部渗透测试是一种获得授权的安全评估活动,其中安全专家评估组织的外部网络和网络应用程序的安全状态。在开始任何工作之前,必须获得系统所有者的书面授权,并明确定义测试范围,包括目标主机、IP地址范围和允许的测试方法。缺乏明确的授权可能导致严重的法律后果。定义范围包括协议测试时间窗口、确定不可中断的关键系统,以及记录将要使用的所有方法。这种文档记录既保护测试人员,也确保参与活动能够实现目标而不对业务运营造成意外伤害。

范围定义必须精确,包括目标系统的具体地址、允许测试的具体时间、禁止的操作类型,以及与组织方的点对点沟通机制。书面协议应该明确规定测试人员有权执行的活动范围、不能触及的系统或数据,以及如何处理发现的敏感信息。此过程还应该确定负责人和应急联系方式,以便在出现问题时立即通知。

  • 获得系统所有者的书面授权
  • 明确定义目标系统和地址范围
  • 协议规定允许的测试方法和时间窗口
  • 以书面形式记录所有条件和限制

侦察与信息收集

外部渗透测试的第一阶段是被动侦察,在此阶段收集关于目标组织的信息,但不直接与其系统交互。这包括分析公开数据:域名注册记录、员工信息、公开文件、物理位置、联系方式和公司网站。在此阶段,不会进行主动扫描,也不会向目标服务器发送任何直接请求。被动侦察可能包括搜索泄漏的凭证、公开的源代码存储库中的敏感信息、社交媒体上的员工身份信息以及组织的历史安全事件。

被动侦察之后是主动扫描,在此阶段识别开放的端口、确定操作系统和软件版本,并发现网络服务和API。此阶段涉及使用网络扫描工具与目标主机的直接交互,所有操作都在协议范围内进行。主动扫描包括TCP和UDP端口扫描、服务版本识别、Web应用程序指纹识别和可能的默认凭证检查。整个过程必须谨慎进行,避免触发入侵检测系统或对目标系统造成意外影响。

  • 分析域名注册和WHOIS数据
  • 搜索公开来源中的信息泄漏
  • 使用TCP和UDP进行开放端口扫描
  • 识别操作系统和服务版本

漏洞和配置弱点识别

在测试阶段,既要识别过时软件中的已知漏洞,也要识别配置弱点。测试包括评估未受保护的服务、不充分的防火墙规则、弱加密实现和缺失的安全补丁。OWASP Top 10标准确定了最严重的网络应用程序安全风险,包括代码注入、身份验证失败、敏感数据暴露和其他攻击向量。这些类别代表了当前网络应用程序面临的最常见和最危险的威胁。

根据OWASP Web Security Testing Guide进行的网络应用程序测试包括分析用户输入处理、身份验证和授权机制、会话管理、错误处理和日志配置。特别关注HTTP头配置、缓存策略和访问控制,因为这些区域的配置错误经常导致数据泄露。HTTP协议本身定义了必须正确实现的消息结构和安全头。测试还应包括对跨域资源共享(CORS)政策、内容安全政策(CSP)和其他安全相关HTTP头的验证。

  • 检查已安装软件中的已知CVE
  • 分析OWASP Top 10关键漏洞
  • 测试身份验证和授权机制
  • 验证HTTP头配置和安全策略

利用尝试和风险确认

一旦识别出潜在漏洞,就进行控制的利用尝试以确认真实风险的存在。所有操作必须保持在协议范围内,并采取最大的谨慎措施以避免中断系统操作。每次利用尝试都必须记录下来,包括使用的方法和获得的结果的详细信息。渗透测试人员必须证明漏洞如何可能被利用来获得未授权访问或信息泄露,但同时避免对系统造成实际伤害。

区分理论上的漏洞和实际可利用性至关重要。测试人员应该创建尽可能详细的利用过程记录,包括使用的工具、执行的命令和获得的结果截图或日志。在某些情况下,可能需要展示如何利用一系列看似不相关的弱点来实现完整的系统妥协。所有在测试过程中获得的数据都必须得到保护,仅限于组织内部使用;未经授权的披露可能产生法律后果并损害信任。

  • 以受控方式尝试未授权访问
  • 验证绕过安全控制的可行性
  • 分析漏洞对业务的实际影响
  • 记录所有使用的方法和发现

文档编制和报告准备

测试结果必须在详细报告中进行记录,该报告包括对每个已识别漏洞的描述、其严重程度评级、分步利用方法以及补救建议。每个问题必须按风险级别分类:关键、高、中等或低,使组织能够根据业务影响对补救工作进行优先排序。报告应包括对每个漏洞的技术背景的解释,帮助技术人员理解其重要性。

有效的报告应提供上下文,解释每个漏洞为何对组织构成真实风险。建议应该是具体的和可行的,指定补救所需的具体步骤。报告必须被视为机密文件,包含足够的详细信息用于补救,但不能过于详细以至于会协助潜在攻击者破坏系统。报告还应包括对漏洞发现时间的总结、在授权范围内和范围外发现的问题的分解,以及对测试方法和发现模式的解释。

  • 描述每个漏洞并提供技术细节
  • 按严重程度和业务风险级别分类
  • 提供具体的补救建议
  • 评估对业务目标的潜在影响

补救支持和重新测试

报告交付后,组织开始工作以补救识别的问题。测试人员可能提供有关补救方法的咨询、澄清需求或协助验证提议的解决方案。在组织实现必要的更正后,进行重新测试以确认补救效果。重新测试应聚焦于先前识别的漏洞,并验证在补救期间没有引入新问题。

这是一个迭代过程,可能需要多个循环才能达到可接受的安全状态。对所有变更和重新测试的文档记录提供了安全改进过程的完整审计线索。在补救过程中,应该定期进行检查点评估,确保组织按照既定计划进行修复工作。测试人员应该跟踪每个漏洞的补救状态,并确认采取的措施确实解决了识别的问题。最终的验收测试应该与初始测试使用相同的方法,以确保可比性和真实的改进。

  • 就补救方法和最佳实践进行咨询
  • 验证实施的修复的有效性
  • 重新扫描已更正的系统以查找遗留问题
  • 记录每个发现的补救状态

最佳实践和持续改进

外部渗透测试应定期进行,至少每年一次,并在基础设施或应用程序发生重大变化后进行。此外,组织应实施持续安全监控、自动化漏洞扫描和正式的漏洞管理流程。安全文化的建立(其中开发人员和管理员接受安全编码基础知识培训)对于长期风险降低至关重要。实施来自OWASP Web Security Testing Guide等方法论框架的标准程序确保测试工作的一致性和全面性。

组织应维护所有测试参与、已识别漏洞和补救时间表的注册表,以便跟踪改进和证明监管合规性。常规外部测试、内部安全审计和员工培训的组合创造了深度防御方法来管理安全。此外,组织应建立漏洞披露计划,允许安全研究人员以负责任的方式报告发现的漏洞。定期的代码审查、架构审计和威胁建模会议应该与渗透测试一起进行,形成全面的安全评估计划。

  • 至少每年进行一次测试
  • 实施持续安全监控
  • 对开发人员进行安全编码培训
  • 维护漏洞注册表和补救跟踪

参考资料

PENTEST.RED / RED JOURNAL