Sysmon 中任意文件删除/写入的概念验证(CVE-2022-41120/CVE-2022-44704)
漏洞位于负责 ClipboardChange 事件的代码中,该事件可通过 RPC 触达。 本地用户可以向 RPC 服务器发送数据,这些数据随后会被写入 C:\Sysmon 目录(默认的 ArchiveDirectory),并在之后被删除。 在 14.11 之前的版本中,Sysmon 不会检查该目录是否由低权限用户创建,或者是否是一个 junction(联接点),这可能在 NT AUTHORITY\SYSTEM 用户上下文中被滥用以执行任意文件删除/写入(由于只能写入字符串,所以有所限制)。 在修复后的 14.11/14.12 版本中,Sysmon 会检查目录是否存在,如果目录存在则拒绝写入/删除文件。 这个补丁可通过先让 Sysmon 创建 C:\Sysmon 目录(使用 CreateDirectory API),并在 SetFileSecurity 被调用之前获取该目录的句柄,然后修改 C:\Sysmon 目录上的 DACL 来绕过。
所有测试均在 Windows 10 上进行。
在我的 PoC 中,我将任意文件删除/写入链接起来,首先删除打印机驱动程序的安装信息文件,然后写入修改后的 .INF 文件(因为 spooler 服务默认启用,并且低权限用户可以在 Windows 客户端上重新安装打印机驱动程序)。 安装信息文件可被滥用来执行各种操作,例如服务创建、注册表修改、文件复制等。 我选择将一些打印机默认 DLL 复制到 c:\windows\system32,并对其设置权限,使低权限用户可以修改它们,这是通过 CopyFiles 指令完成的(https://learn.microsoft.com/en-us/windows-hardware/drivers/install/inf-copyfiles-directive)。文件复制后,会被一个将生成提权 cmd.exe 进程的 DLL 覆盖。 也可以仅滥用任意文件删除实现 LPE,通过滥用 Windows Installer 行为(此技巧由 @KLINIX5 发现,ZDI 在此记录:https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks)。
所有测试均在 13.34-14.12 版本上进行。 我不确定确切的最低受影响版本,但我认为 12.0 - 14.12 版本受影响,因为 ClipboardChange 事件是在 12.0 版本中引入的。 为了利用此漏洞,不应启用使用 ArchiveDirectory 的事件(我认为是 ClipboardChange 和 FileDelete),因为如果启用了这两个事件,ArchiveDirectory 会被创建并具有安全的权限。
如果您使用的是受影响版本且无法更新,可以创建 ArchiveDirectory(默认为 C:\Sysmon),并设置仅允许 NT AUTHORITY\SYSTEM 帐户访问的权限。