
PoC для CVE-2022-41120/CVE-2022-44704: произвольное удаление/запись файлов в Sysmon через ClipboardChange RPC, приводящее к локальному повышению привилегий в Windows.
Доказательство концепции для произвольного удаления/записи файлов в 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 (с помощью API CreateDirectory) и открывает дескриптор на него до вызова SetFileSecurity и изменения DACL на каталоге C:\Sysmon.
Все тестирование проводилось на Windows 10.
В моем PoC я объединил произвольное удаление/запись файлов, чтобы сначала удалить файл установочной информации драйвера принтера, а затем записать модифицированный .INF-файл (поскольку служба диспетчера очереди печати включена по умолчанию, и пользователи с низкими привилегиями могут переустанавливать драйверы принтеров на клиентских Windows). Файлы установочной информации могут быть использованы для выполнения всевозможных операций, таких как создание служб, изменение реестра, копирование файлов и т.д. Я решил скопировать некоторые стандартные DLL-библиотеки принтера в c:\windows\system32 и установить на них разрешения так, чтобы пользователи с низкими привилегиями могли их изменять; это делается с помощью директивы CopyFiles (https://learn.microsoft.com/en-us/windows-hardware/drivers/install/inf-copyfiles-directive). После копирования файл перезаписывается DLL-библиотекой, которая запускает процесс cmd.exe с повышенными привилегиями. Можно использовать только произвольное удаление файлов для повышения привилегий, злоупотребляя поведением установщика Windows (трюк найден @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.