
Proof-of-Concept-Code für CVE-2023-32353: Lokale Privilegienausweitung über iTunes unter Windows
Der MSI-Installer des Musikplayers Apple iTunes enthielt eine Schwachstelle, die es einem normalen, niedrig privilegierten Benutzer auf einem Microsoft Windows-Computer ermöglichte, erhöhte Berechtigungen im Kontext von NT AUTHORITY/SYSTEM zu erlangen. Dieses Repo enthält einen Proof of Concept (PoC), der zeigt, wie dies ausgenutzt werden kann, sowie weitere Informationen für Sicherheitsforscher und Entwickler, die mehr über diese Art von Schwachstelle erfahren möchten. Die Anwendbarkeit ist jedoch begrenzt, wie Sie im Abschnitt „Fragen und Antworten“ lesen können.
Ich habe keine SYSTEM-Shell erhalten. Was habe ich falsch gemacht?
Da es sich um einen Proof of Concept handelt, wurde nicht viel Wert auf Unentdeckbarkeit gelegt. Um dies zu nutzen, sollten Sie eine Installation von Windows 10 Home Edition vor dem Release 'Version 10.0.19041.572' ausführen, da in dieser Version diese Schwachstelle behoben wurde. Ich habe meine Tests mit Windows 10 1909 durchgeführt. Außerdem sollten Sie zu "Windows-Sicherheit" navigieren und alles deaktivieren, was mit Microsoft Defender / Windows Defender zu tun hat, da diese anscheinend die Symlink-Erstellung zu \RPC Control durch den Echtzeitschutz blockieren (der bei jedem Neustart automatisch wieder aktiviert wird, denken Sie daran!)
Sollte ich jetzt Angst haben, iTunes zu verwenden?
Nein, aktualisieren Sie einfach auf die neueste Version von iTunes, und alles sollte in Ordnung sein.
Kann ich das PoC ausführen, ohne es selbst bauen zu müssen?
Obwohl ich jedem dringend empfehle, keine .exe-Dateien aus dem Internet auszuführen, sollte das Ausführen der Privilege-Escalation-using-Music-Player.exe aus dem Verzeichnis ./x64/Release/ in einer virtuellen Maschine funktionieren. Wenn nicht, versuchen Sie, die neueste VC-Redistributable über die von Microsoft bereitgestellten Links zu installieren.
Was ist die eigentliche Schwachstelle hier?
Während der MSI-Reparatur erstellt der Installer einen niedrig privilegierten Ordner namens "SC Info" innerhalb von C:\ProgramData\Apple Computer\iTunes. Genauer gesagt erlaubt das Verzeichnis C:\ProgramData\Apple Computer\iTunes nicht jedem die vollständige Kontrolle. Aber der Unterordner namens "SC Info" gewährt Jeder (auch niedrig privilegierten/Standardbenutzern) die vollständige Kontrolle. Wenn Sie manuell den gesamten Inhalt des Ordners C:\ProgramData\Apple Computer\iTunes\ löschen (je nachdem, ob Sie iTunes zuvor ausgeführt haben, kann es mehr Ordner als nur "SC Info" geben), dann kann ein niedrig privilegierter Benutzer einen Mountpunkt von C:\ProgramData\Apple Computer\iTunes\ zu einem beliebigen anderen Verzeichnis erstellen, das von NT AUTHORITY/SYSTEM beschreibbar ist. In diesem Proof of Concept wurde die "wermgr.exe.local"-Technik verwendet, die in aktuellen Versionen von Windows 10 bereits entschärft ist und meines Wissens nur auf Windows 10 Home Edition zutrifft. Wenn Sie also einen Mountpunkt von C:\ProgramData\Apple Computer\iTunes\ zu \RPC Control erstellen und dann einen Symlink von \RPC Control\SC Info (denken Sie daran, SC Info ist der Name des Ordners, den der Installer innerhalb des iTunes-Ordners erstellt) zu ??\c:\windows\system32\wermgr.exe.local und dann die MSI-Reparaturoption des iTunes-Installers verwenden, erstellen Sie effektiv ein Verzeichnis namens wermgr.exe.local innerhalb von C:\Windows\System32, das jedem die vollständige Kontrolle gewährt. Dadurch wird die Erstellung des SC Info-Ordners effektiv zu \RPC Control umgeleitet, und RPC Control selbst leitet die Ordnererstellung zum System32-Verzeichnis um. Von dort aus (nochmals, das ist nicht Teil der eigentlichen Schwachstelle, sondern dient nur zum Abschluss der Privilege-Escalation-Kette) können Sie einen speziell benannten Unterordner mit einer manipulierten DLL erstellen, die ein Dienst, der als NT AUTHORITY/SYSTEM ausgeführt wird, auch wenn er von einem niedrig privilegierten Benutzer über einen geplanten Task aufgerufen wird, lädt und die darin enthaltenen Befehle ausführt (z.B. eine cmd, die als NT AUTHORITY/SYSTEM läuft). Weitere Details finden Sie im eigentlichen Code oder im Abschnitt „Schritte zur manuellen Reproduktion“ unten.
Da es sich um einen Proof of Concept handelt, deaktivieren Sie Windows Defender/Microsoft Defender (lesen Sie auch den Abschnitt „Fragen und Antworten“)
Installieren Sie iTunes vor Version 12.12.9 (z.B. 12.12.4.1)
Löschen Sie den gesamten Inhalt von C:\ProgramData\Apple Computer\iTunes, behalten Sie aber den iTunes-Ordner selbst
Erstellen Sie einen Mountpunkt von "C:\ProgramData\Apple Computer\iTunes" zu "\RPC Control", z.B. mit James Forshaws symboliclink-testing-tools:
CreateMountPoint.exe "C:\ProgramData\Apple Computer\iTunes" "\RPC Control"
Erstellen Sie einen Symlink von "\RPC Control\SC Info" zu "??\c:\windows\system32\wermgr.exe.local"
CreateDosDeviceSymlink.exe "\RPC Control\SC Info" "??\c:\windows\system32\wermgr.exe.local"
Verwenden Sie das iTunes MSI/iTunes Installer EXE, um Ihre iTunes-Installation zu "reparieren" (wenn Sie den Installer nicht mehr haben, finden Sie "iTunes64.msi" in diesem Ordner: C:\ProgramData\Apple Computer\Installer Cache\iTunes )
Navigieren Sie zu c:\windows\system32\wermgr.exe.local\
Erstellen Sie einen Unterordner namens "amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.418_none_e6c6b287130d565d" (dies kann auf Ihrem System anders sein, verwenden Sie den Namen des neuesten Ordners, der mit "amd64_microsoft.windows.common-controls_" beginnt, aus dem Verzeichnis C:\Windows\WinSxS)
Legen Sie eine DLL-Datei mit dem Namen "comctl32.dll" in den amd64_microsoft.windows.common-controls_*-Ordner
Führen Sie diesen Befehl aus:
schtasks.exe /Run /TN "\Microsoft\Windows\Windows Error Reporting\QueueReporting"
Die in Ihrer comctl32.dll-Datei festgelegte Aktion wird nun im Kontext von NT AUTHORITY/SYSTEM ausgeführt, z.B. öffnet sich ein cmd-Fenster