针对近日出现的Windows打印机远程漏洞,由于其具备本地提权和远程代码执行的危害,且域环境下存在远程攻击域控的风险,针对Windows Printer远程漏洞微软已发布漏洞更新补丁,但黑客仍然能找到合理的利用方式。加之,在野利用脚本已广泛传播,未然实验室对该漏洞做了进一步的分析。
CVE-2021-1675漏洞是由于Windows Print Spooler打印机程序中存在权限绕过问题,进而导致远程代码执行。攻击者通过该漏洞可以完成本地权限提升或者远程代码执行。由于 SplAddPrinterDriver中存在鉴权缺陷,攻击者可以实现远程代码执行,如果在域环境中,攻击者可以利用域内已控制的普通用户权限,通过 RPC 触发 RpcAddPrinterDrive 绕过安全检查并在域控植入恶意驱动程序,实现远程代码执行,从而控制整个域环境。
根据微软官方文档,RpcAddPrinterDriver 函数是用于安装打印机驱动的,根据微软官方文档该函数原型如下。
DWORD RpcAddPrinterDriverEx(
[in, string, unique] STRING_HANDLE pName,
[in] DRIVER_CONTAINER* pDriverContainer,
[in] DWORD dwFileCopyFlags
);
其中最关键的是dwFileCopyFlags参数,根据微软的描述,dwFileCopyFlags 字段作用如下:
上图中的关键是APD_INSTALL_WARNED_DRIVER(0x8000)标志位,这个标志位是用于指示加载打印机驱动。而漏洞的利用过程恰恰通过设置APD_INSTALL_WARNED_DRIVER(0x8000)标志位,绕过了系统的权限检测,并加载打印机驱动,进而获得代码执行权限。
关键的漏洞利用代码见下图。
针对这个漏洞的补丁主要修复了RpcAddPrinterDriver函数,具体做法是限制了APD_INSTALL_WARNED_DRIVER(0x8000)标志位。补丁的关键修补位置见下图。
从以上分析可以看出该漏洞是在添加打印机驱动的时候触发的,通过特殊标志位绕过打印机权限验证,从而触发漏洞,完成攻击。
根据下图的进程行为监控截图可以看到,漏洞触发之后远程被攻击的机器的spoolsv.exe进程会从远程加载指定的恶意dll文件(artifact.dll),从而实现远程代码执行。
通过构造攻击数据报文,可以通过该漏洞实现远程攻击,可成功利用该漏洞获取域控SYSTEM权限,从而接管整个域环境。
攻击环境:Windows Server 2019
运行如下攻击脚本:
漏洞利用成功如图所示,域控机器成功通过木马上线。
目前微软官方已经针对该漏洞发布补丁,下载链接:
https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2021-1675,请及时更新补丁保持系统处于最新版本。
由于该漏洞风险较高,且仍存在变种攻击的风险,如无必要建议关闭打印机服务。
可以通过impacket中的rpcdump工具脚本检测网络中相关打印机服务是否开放
rpcdump.py 目标机器 | grep MS-RPRN
在系统服务应用中找到Print Spooler打印机服务,然后选择暂停打印机服务,如下图所示。
华为安全解决方案已支持对该漏洞的检测和防御,请及时更新最新版本。
华为未然实验室成立于2016年,由华为300多位顶尖安全技术专家组成,聚焦于安全行业漏洞挖掘、渗透测试、恶意流量检测与分析、威胁防御和威胁情报、人工智能安全技术以及攻防对抗演练技术研究,目前已拥有2000余项安全专利、万级漏洞库和亿级病毒库。未然实验室将持续跟踪Windows Printer Spooler漏洞,分析该漏洞更多细节。
原文始发于微信公众号(华为安全):深度丨Windows Printer Spooler远程代码执行漏洞跟踪分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论