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

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

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

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

Print Spooler权限提升

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

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

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

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

·执行一系列的RPC命令:

·RpcAsyncInstallPrinterDriverFromPackage(Opnum 62)—安装“Generic/Text”打印机驱动;

·RpcAsyncOpenPrinter(Opnum 0)

·RpcAsyncXcvData(Opnum 33)—添加端口

·RpcAsyncAddPrinter(Opnum 1)—用前面提到的驱动添加打印机;

·RpcAsyncStartDocPrinter(Opnum 10)—打开新文档;

·RpcAsyncWritePrinter(Opnum 12)—在新文档中写入内容。

2345截图20200908083720.png

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

补丁分析

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

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

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

2345截图20200908083720.png

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

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

2345截图20200908083720.png

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

如上图所示,HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPrint key中的REG_DWORD value RpcAuthnLevelPrivacyEnabled必须设置为1,否则其他的检查就不会执行,系统仍然会受到攻击。

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

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论