
PoC per CVE-2022-41120/CVE-2022-44704: eliminazione/scrittura arbitraria di file in Sysmon tramite ClipboardChange RPC che porta a elevazione dei privilegi locale su Windows.
Proof of Concept per l'eliminazione/scrittura arbitraria di file in Sysmon (CVE-2022-41120/CVE-2022-44704)
La vulnerabilità si trova nel codice responsabile dell'evento ClipboardChange, raggiungibile tramite RPC. Gli utenti locali possono inviare dati al server RPC, che verranno poi scritti nella directory C:\Sysmon (ArchiveDirectory predefinita) e successivamente eliminati. Nelle versioni precedenti alla 14.11, Sysmon non verificava se la directory fosse stata creata da un utente con privilegi ridotti o se si trattasse di un junction, il che può essere sfruttato per eseguire eliminazione/scrittura arbitraria di file (in modo piuttosto limitato, poiché è possibile scrivere solo stringhe) nel contesto dell'utente NT AUTHORITY\SYSTEM. Nella versione 14.11/14.12, dopo il fix iniziale, Sysmon controllava se la directory esistesse e rifiutava di scrivere/eliminare file se la directory esisteva. Questa patch è stata bypassata facendo sì che Sysmon creasse prima la directory C:\Sysmon (tramite l'API CreateDirectory) e aprisse un handle su di essa prima che SetFileSecurity venisse chiamato e modificasse le DACL sulla directory C:\Sysmon.
Tutti i test sono stati eseguiti su Windows 10.
Nel mio PoC ho concatenato l'eliminazione/scrittura arbitraria di file per eliminare prima il file delle informazioni di installazione del driver della stampante e poi scrivere un file .INF modificato (poiché il servizio spooler è abilitato per impostazione predefinita e gli utenti con privilegi ridotti possono reinstallare i driver della stampante sui client Windows). I file delle informazioni di installazione possono essere abusati per eseguire ogni tipo di operazione, come la creazione di servizi, la modifica del registro, la copia di file, ecc. Ho scelto di copiare alcune DLL predefinite della stampante in c:\windows\system32 e di impostare le relative autorizzazioni in modo che gli utenti con privilegi ridotti possano modificarle; questo viene fatto utilizzando la direttiva CopyFiles (https://learn.microsoft.com/en-us/windows-hardware/drivers/install/inf-copyfiles-directive). Una volta copiato, il file viene sovrascritto con una DLL che avvierà un processo cmd.exe elevato. È possibile abusare della sola eliminazione arbitraria di file per l'elevazione dei privilegi sfruttando il comportamento del programma di installazione di Windows (trucco trovato da @KLINIX5 e documentato da ZDI qui https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks).
Tutti i test sono stati eseguiti sulle versioni 13.34-14.12. Non so esattamente quale sia la versione più vecchia vulnerabile, ma credo che le versioni 12.0 - 14.12 siano vulnerabili, poiché l'evento ClipboardChange è stato introdotto nella versione 12.0. Per sfruttare questa vulnerabilità, gli eventi che utilizzano ArchiveDirectory non dovrebbero essere abilitati (ClipboardChange e FileDelete, credo), poiché se questi due vengono usati, ArchiveDirectory verrà creata con autorizzazioni sicure.
Se si utilizza una versione vulnerabile e non è possibile aggiornare, si può creare ArchiveDirectory (C:\Sysmon per impostazione predefinita) e impostare autorizzazioni che consentano l'accesso solo all'account NT AUTHORITY\SYSTEM.