Windows NT LAN Manager (NTLM)安全特征绕过漏洞

番茄系统家园 · 2022-03-26 13:49:52

微软在本月的微软补丁日修复了一个Windows NT LANManager(NTLM)安全特征绕过漏洞。该漏洞CVE编号为CVE-2021-1678,CVSS评分为4.3分。攻击者利用该漏洞可以中继NTLM认证会话到攻击者的机器,使用printerspooler MSRPC 接口来在被攻击的机器上远程执行代码。

NTLM中继攻击是中间人攻击的一种,攻击者利用该攻击可以访问网络来拦截客户端和服务器之间合法的认证流量,并对经过验证的认证请求进行中继以访问相关的网络服务。

Windows NT LAN Manager (NTLM)安全特征绕过漏洞

Print Spooler 权限提升

漏洞利用中,攻击者使用了来自特权用户账户的NTLM 会话来执行一系列的RPC 操作。整个漏洞利用的步骤如下所示:

(1) 建立于攻击者控制的中继机器的NTLM 会话;

(2) 攻击者绑定目标的IRemoteWinspool 接口,选择RPC_C_AUTHN_LEVEL_CONNECT的认证级别;

(3) 攻击者通过建立的RPC 信道来中继NTLM 认证;

(4) 执行一系列的RPC命令:

  • RpcAsyncInstallPrinterDriverFromPackage (Opnum 62) —安装“Generic/Text”打印机驱动;
  • RpcAsyncOpenPrinter (Opnum 0)
  • RpcAsyncXcvData (Opnum 33) — 添加端口
  • RpcAsyncAddPrinter (Opnum 1) — 用前面提到的驱动添加打印机;
  • RpcAsyncStartDocPrinter(Opnum 10) — 打开新文档;
  • RpcAsyncWritePrinter (Opnum 12) — 在新文档中写入内容。

Windows NT LAN Manager (NTLM)安全特征绕过漏洞

图 CVE-2021-1678漏洞利用流图

补丁分析

微软在补丁中对定时任务服务使用的IfCallback加入了检查,同时对RPC运行时间没有太大的影响。研究人员逆行了Spoolsv.exe中IRemoteWinspool的实现,发现了一个名为RpcManager::VerifyRpcValidProtocolSequence的共享函数,该函数被多个不同的RPC接口所使用,其中就包括IRemoteWinSpool。

本来该函数会验证ncacn_ip_tcp协议序列是否用于IRemoteWinspool,以确保只有远程的TCP/IP客户端才会被接受。但是,在认证安全级中没有相关的检查。

在补丁中,二进制文件中加入了一个新的IfCallback 函数,伪代码如下所示:

Windows NT LAN Manager (NTLM)安全特征绕过漏洞

图 安装补丁后IRemoteWinspool使用的新的RPC 验证流

从中可以看出,验证协议序列的调用被扩展了,如下所示:

Windows NT LAN Manager (NTLM)安全特征绕过漏洞

图 安装补丁后安全级别验证

如上图所示,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Printkey中的REG_DWORDvalue RpcAuthnLevelPrivacyEnabled必须设置为1,否则其他的检查就不会执行,系统仍然会受到攻击。

更多技术细节参见:https://www.crowdstrike.com/blog/cve-2021-1678-printer-spooler-relay-security-advisory/

鸿蒙官方战略合作共建——HarmonyOS技术社区

免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/dngz/331209Jz2A1X.html
猜你喜欢
最新应用
热门应用