
Waffenfähiger CobaltStrike BOF für CVE-2023-36874 Windows Error Reporting LPE
Dies ist eine ausgereifte und betriebsbereite CobaltStrike-BOF-Implementierung des CVE-2023-36874 Windows-Fehlerberichterstattung LPE Exploits von Filip Dragovic (@filip_dragovic). Er hat die Schwerarbeit beim Erstellen eines funktionierenden Exploits geleistet, indem er die verwundbare DLL reversierte und die undokumentierten COM-Strukturen erstellte, die für diesen Exploit entscheidend sind.
Diese BOF wird eine vom Benutzer angegebene EXE auf das Zielsystem legen und dann die Schwachstelle auslösen, sodass die EXE mit SYSTEM-Rechten ausgeführt wird.
Microsoft würdigt die Threat Analysis Group von Google für die Offenlegung dieser Schwachstelle, jedoch wurde ich durch CrowdStrikes veröffentlichte Forschung darauf aufmerksam.
Dieser Blogbeitrag listet viele verschiedene Artefakte im Zusammenhang mit diesem Exploit auf; basierend auf der Namenskonvention der Artefakte (8.exe, 2016.exe, 2019.exe, 10new+11.exe, etc.) sowie der Tatsache, dass Microsoft Patches dafür bis zurück zu Server 2008 veröffentlicht hat, kann geschlossen werden, dass diese Schwachstelle eine ganze Reihe von Windows-Versionen betrifft.
Diese BOF funktioniert nur unter Windows 10 und Windows 11 21H1 - 22H2; möglicherweise funktioniert sie auch unter 20H1/H2, aber ich habe keinen Testrechner. Bei früheren Windows-Versionen wird dieser Exploit den ausführenden Prozess zum Absturz bringen. Ich vermute, dass dies auf Unterschiede in den COM-Strukturen von wercplsupport.dll zurückzuführen ist und dass dies mit zusätzlicher Arbeit überwindbar sein sollte, aber es gibt viele andere Exploits für frühere Windows-Versionen, daher überlasse ich diese Aufgabe vorerst anderen.
Laden Sie wer_lpe.cna in CobaltStrike und der Befehl wer_lpe wird erscheinen.
Geben Sie den Pfad zu der EXE an, die Sie hochladen möchten, und optional ein Verzeichnis, auf das Ihr aktueller Benutzer mit niedrigen Rechten Schreibzugriff hat. Wenn kein Verzeichnis angegeben wird, versucht wer_lpe, in das aktuelle Verzeichnis von Beacon zu schreiben.


Einige zusätzliche Funktionen wurden zum ursprünglichen POC hinzugefügt, um OPSEC zu wahren / statische Signaturen zu vermeiden und nach der Ausnutzung automatisch zu bereinigen.
Im Rahmen des Exploits muss ein neuer Ordner im Verzeichnis C:\ProgramData\Microsoft\Windows\WER\ReportArchive erstellt werden. Dieser Ordner enthält die Datei Report.wer, die im Rahmen der Exploit-Kette auf die Festplatte geschrieben werden muss. Der ursprüngliche Exploit von Filip erstellt ein Verzeichnis namens 'MyFolder'. Durch Betrachten echter Ordner/Berichte im ReportArchive-Verzeichnis können wir eine bessere Vorstellung von einer Namenskonvention bekommen, die besser an einfachen Erkennungen vorbeischlüpft.

Die BOF enthält Stubs von zwei echten Ordnern, die im ReportArchive-Verzeichnis eines Rechners gefunden wurden (einer ist auskommentiert). Zur Laufzeit wird wer_lpe zufällig eine GUID generieren und an den ausgewählten Stub anhängen, um einen glaubwürdigen (und statistisch eindeutigen) Ordner zu erstellen, in dem die Datei Report.wer erstellt wird.

Die Datei report.wer ist ein weiterer einfacher statischer Indikator, anhand dessen dieser Exploit erkannt werden kann. Der ursprüngliche Exploit packt die Datei Report.wer als Ressource in die EXE; diese BOF sucht und liest 'Report.wer' aus dem Exploit-Verzeichnis auf dem Angriffsrechner und sendet sie an den Beacon, um sie auf die Festplatte zu schreiben. Dies eröffnet die Möglichkeit, die mitgelieferte Report.wer-Datei durch eine beliebige eigene zu ersetzen.
Mehrere der COM-Aufrufe innerhalb des Exploits erfordern willkürliche Zeichenfolgen, damit der Exploit fortgesetzt werden kann; auch diese wurden durch zur Laufzeit generierte Zufallszeichenfolgen ersetzt.
Da dieser Exploit eine beliebige EXE ausführt, kann die Bereinigung zum Problem werden, wenn die EXE kontinuierlich laufen soll (falls sie einen neuen Beacon startet), da die EXE dann auf der Festplatte gesperrt ist. Wer_lpe implementiert die Selbstlöschung von LloydLabs (von der ich weiterhin fantastische Nutzung habe), um dieses Problem zu bekämpfen. Wer_lpe wird versuchen, alle während des Exploits erstellten Dateien und Verzeichnisse zu löschen/bereinigen und einen Statusbericht über Erfolg/Misserfolg liefern.
Da der Versuch, im Jahr 2023 eine unsignierte, beliebige EXE auf einem Zielrechner auszuführen, oft sinnlos ist, habe ich untersucht, ob der Exploit die ECHTE wermgr.exe (in ein beliebiges Verzeichnis kopiert) ausführen kann, um DLL-Sideloading-Möglichkeiten zu nutzen. Aufgrund der Natur des Exploits ist dies nicht möglich. Siehe diesen Twitter-Thread für weitere Details.
Dieser Exploit wird fehlschlagen, wenn er von einem Benutzer mit lokalen Administratorrechten auf dem Rechner ausgeführt wird; dies liegt daran, dass der verwundbare Code den Benutzer mit (paraphrasiert) der 'höchsten verfügbaren Integrität' imitiert. Für einen Benutzer, der lokaler Administrator ist, bedeutet dies, dass sein Admin-Token imitiert wird, das eine separate DOS-Gerätezuordnung hat als sein Medium-Integritäts-Token, das die erforderliche Umleitung implementiert hat, um die Schwachstelle auszulösen. Dieser Exploit ist kein Ersatz für eine UAC-Umgehung.
Microsoft hat am 11. Juli 2023 einen Patch für diese Schwachstelle im Rahmen des monatlichen Sicherheitsupdates für fast alle denkbaren Betriebssysteme veröffentlicht, die Leute noch verwenden könnten; patcht eure Rechner, Leute.
Zuallererst ein riesiges Dankeschön an Filip Dragovic (@filip_dragovic) für seinen funktionierenden Code sowie seine Bereitschaft, mit mir zu chatten und mich über seinen Entwicklungsprozess für diesen Exploit zu informieren.
CrowdStrike für ihren Artikel.
LloydLabs für seinen Selbstlöschungs- Code.