当前位置: 首页 > 科技观察

WindowsNTLANManager(NTLM)安全功能绕过漏洞

时间:2023-03-12 11:56:30 科技观察

Microsoft在本月的MicrosoftPatchDay中修复了一个WindowsNTLANManager(NTLM)安全功能绕过漏洞。该漏洞的CVE编号为CVE-2021-1678,CVSS评分为4.3分。攻击者利用此漏洞将NTLM身份验证会话中继到攻击者的机器,使用打印机假脱机程序MSRPC接口在受攻击的机器上远程执行代码。NTLM中继攻击是一种中间人攻击。攻击者可以利用这种攻击方式访问网络,拦截客户端和服务器之间的合法认证流量,并中继经过认证的认证请求以访问相关的网络服务。在PrintSpooler权限提升漏洞中,攻击者使用来自特权用户帐户的NTLM会话来执行一系列RPC操作。该漏洞的利用步骤如下:(1)在攻击者控制的中继机上建立NTLM会话;(2)攻击者绑定目标的IRemoteWinspool接口,选择RPC_C_AUTHN_LEVEL_CONNECT的认证级别;(3)攻击者建立一个(4)执行一系列RPC命令:RpcAsyncInstallPrinterDriverFromPackage(Opnum62)—安装“Generic/Text”打印机驱动程序;RpcAsyncOpenPrinter(Opnum0)RpcAsyncXcvData(Opnum33)—添加端口RpcAsyncAddPrinter(Opnum1)—添加带有前面提到的驱动程序的打印机;RpcAsyncStartDocPrinter(Opnum10)—打开一个新文档;RpcAsyncWritePrinter(Opnum12)—在新文档中写入内容。图CVE-2021-1678漏洞利用流程图补丁分析微软在补丁中对计划任务服务使用的IfCallback增加了检查,对RPC运行时间影响不大。研究人员逆行了Spoolsv.exe中IRemoteWinspool的实现,发现了一个名为RpcManager::VerifyRpcValidProtocolSequence的共享函数,它被包括IRemoteWinSpool在内的几个不同的RPC接口使用。最初此函数将验证ncacn_ip_tcp协议序列是否用于IRemoteWinspool以确保仅接受远程TCP/IP客户端。但是在认证安全级别没有相关的检查。补丁中在二进制文件中新增了一个IfCallback函数,伪代码如下:从图中可以看出安装补丁后IRemoteWinspool使用的新RPC校验流程,扩展了校验协议序列的调用,如下图:图安装补丁后的安全级别验证如上图,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print键中的REG_DWORD值RpcAuthnLevelPrivacyEnabled必须设置为1,否则不会进行其他检查,系统还是会被攻击。有关更多技术细节,请参阅:https://www.crowdstrike.com/blog/cve-2021-1678-printer-spooler-relay-security-advisory/