
PoC para CVE-2022-41120/CVE-2022-44704: borrado/escritura arbitraria de archivos en Sysmon a través de ClipboardChange RPC que conduce a una escalada de privilegios local en Windows.
Prueba de concepto para el borrado/escritura arbitrario de archivos en Sysmon (CVE-2022-41120/CVE-2022-44704)
La vulnerabilidad se encuentra en el código responsable del evento ClipboardChange, al que se puede acceder a través de RPC. Los usuarios locales pueden enviar datos al servidor RPC, que luego se escribirán en el directorio C:\Sysmon (ArchiveDirectory por defecto) y se eliminarán después. En versiones anteriores a la 14.11, Sysmon no comprobaba si el directorio había sido creado por un usuario con pocos privilegios o si se trata de un junction, lo que puede ser aprovechado para realizar un borrado/escritura arbitrario de archivos (algo limitado, ya que solo se pueden escribir cadenas) en el contexto del usuario NT AUTHORITY\SYSTEM. En las versiones 14.11/14.12, tras el parche inicial, Sysmon comprobaba si el directorio existía y se negaba a escribir/eliminar archivos si el directorio existía. Este parche se omitió dejando que Sysmon creara primero el directorio C:\Sysmon (mediante la API CreateDirectory) y abriendo un identificador sobre él antes de que se llame a SetFileSecurity y se cambien las DACL del directorio C:\Sysmon.
Todas las pruebas se realizaron en Windows 10.
En mi PoC he encadenado el borrado/escritura arbitrario de archivos para, primero, eliminar el archivo de información de configuración del controlador de impresora y, después, escribir un archivo .INF modificado (ya que el servicio de cola de impresión está habilitado por defecto y los usuarios con pocos privilegios pueden reinstalar controladores de impresora en clientes Windows). Los archivos de información de configuración se pueden abusar para realizar todo tipo de operaciones, como creación de servicios, modificación del registro, copia de archivos, etc. He elegido copiar algunas DLL predeterminadas de la impresora en c:\windows\system32 y establecer permisos sobre ellas para que los usuarios con pocos privilegios puedan modificarlas; esto se hace mediante la directiva CopyFiles (https://learn.microsoft.com/en-us/windows-hardware/drivers/install/inf-copyfiles-directive). Una vez que el archivo se copia, se sobrescribe con una DLL que lanzará un proceso cmd.exe elevado. Es posible abusar únicamente del borrado arbitrario de archivos para escalar privilegios abusando del comportamiento del instalador de Windows (truco encontrado por @KLINIX5 y documentado por ZDI aquí: https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks).
Todas las pruebas se realizaron en las versiones 13.34-14.12. No sé exactamente cuál es la versión más antigua vulnerable, pero creo que las versiones 12.0 - 14.12 son vulnerables, ya que el evento ClipboardChange se introdujo en la versión 12.0. Para explotar esta vulnerabilidad, los eventos que usan ArchiveDirectory no deben estar habilitados (ClipboardChange y FileDelete, creo), ya que si se usan esos dos, ArchiveDirectory se creará y tendrá permisos seguros.
Si está utilizando una versión vulnerable y no puede actualizar, puede crear ArchiveDirectory (C:\Sysmon por defecto) y establecer permisos que solo permitan el acceso a la cuenta NT AUTHORITY\SYSTEM.