
CVE-2023-38831 - WinRAR
Dieses Repository enthält eine Erkennungslogik für CVE-2023-38831 (WinRAR ZIP-Datei-Spoofing/Doppelerweiterungs-Exploit) mit rohen Abfragen/Code-Blöcken und ETW-spezifischen Providernamen + Ereignis-IDs. Eine anfällige Version von WinRAR (< 6.23) auf dem Zielsystem
CVE-2023-38831 wird ausgenutzt, wenn:
Der Benutzer eine bösartige ZIP in WinRAR öffnet
Das Archiv enthält:
● Eine Tarn-Datei (z. B. invoice.pdf)
● Ein Verzeichnis mit demselben Namen (z. B. invoice.pdf )
● Innerhalb des Verzeichnisses zwei Dateien mit demselben Namen, aber leicht unterschiedlichen Namen (bei einer Datei Leerzeichen und eine beliebige Erweiterung am Ende, z. B. wenn die erste Datei "invoice.pdf " ist, kann die zweite ein Skript oder eine ausführbare Datei wie "invoice.pdf .cmd" sein)
WinRAR führt das Skript oder die ausführbare Datei aus, anstatt das Dokument (in diesem Fall „PDF“) zu öffnen
Diese Ausführung wird durch den Aufruf der Funktion ShellExecuteExW ausgelöst, die die Datei ausführt, wobei shExecInfo übergeben wird (ShellExecute über Explorer)
WinRAR erzeugt einen untergeordneten Prozess (cmd, powershell, mshta, wscript, exe – je nachdem, was im Ordner vorhanden ist)
Die Ausführung erfolgt oft aus Temp / AppData / extrahiertem Pfad
Ablaufübersicht Benutzer öffnet Archiv
↓
WinRAR zeigt Tarn-Datei an
↓
Benutzer doppelklickt auf Dokument
↓
WinRAR extrahiert Verzeichnis mit demselben Namen
↓
Ausführbare Datei geschrieben nach *.pdf\*.pdf .exe
↓
ShellExecute über Explorer
↓
ImageLoad der ausführbaren Datei
↓
Payload-Ausführung
Warum dieser Ablauf für die Erkennung wichtig ist
● Keine Makro-Nutzung
● Keine Abhängigkeit von Prozesserzeugung
● Exploit basiert auf Dateisystem-Tarnung
● Hochzuverlässiges, rauscharmes Signal
Wichtige technische Details
Die Dateien werden in einer speziellen Struktur geschrieben
Wie wenn man zwei Objekte (Datei/Verzeichnis) mit demselben Namen hat. Wenn man in einer Archivdatei eine Datei und ein Verzeichnis mit demselben Namen hat und die Datei temporär öffnen möchte, indem man in der geöffneten Archivdatei darauf doppelklickt, extrahiert WinRAR diese Datei für Sie. Es extrahiert auch alle Dateien, die denselben Namen wie die Zieldatei haben. Alle werden in ein temporäres Verzeichnis im %tmp%-Pfad geschrieben.
| Datei-/Verzeichnisname | Extraktionspfad |
| ------------------------------------------------------ | --------------------------------------------------------------------------------- |
| CLASSIFIED_DOCUMENTS.txt <– darauf geklickt (Zieldatei) | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
| CLASSIFIED_DOCUMENTS.txt .cmd <– Datei im Verzeichnis | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
Wenn sich in einem temporären (Dekomprimierungs-) Verzeichnis zwei Dateien mit demselben Namen, aber unterschiedlicher Größe (z. B. 20k und 12k) befinden und Sie das Archiv öffnen und die erste Datei 1.txt (20k) öffnen, fordert WinRAR Sie auf, die Datei durch die zweite Datei 1.txt (10k) zu ersetzen. Wenn Sie auf "Ja" klicken, wird nur die zweite Datei 1.txt geöffnet. Diese Bedingung kann als Ausschluss hinzugefügt werden.
Wichtiger Punkt für die Erkennungslogik
Prozessausführung, die von einem ZIP-Extraktionspfad oder temporärem Verzeichnis ausgelöst wird, mit einer irreführenden Erweiterung oder einem Ordner, der sich als Datei tarnt
Wenn WinRAR eine Datei zur Dekomprimierung im temporären Verzeichnis freigibt, muss es zwei Dateien mit demselben Namen, aber leicht unterschiedlichen Namen enthalten (Leerzeichen und eine beliebige Erweiterung am Ende), z. B. den Namen der Hauptdatei mit einem " " (CLASSIFIED_DOCUMENTS.pdf ) am Ende und dann ".cmd" (CLASSIFIED_DOCUMENTS.pdf .cmd).
Wenn WinRAR eine DLL lädt und die Funktion ShellExecuteExA aufruft, hat der Parameter "pExecInfo" einen Pfad mit einem Leerzeichen und einer beliebigen Erweiterung am Ende, z. B. "CLASSIFIED_DOCUMENTS.pdf .cmd."
ETW-Anbieter und Erkennungsphilosophie (nur ETW) ETW-Anbieter
| Zweck | ETW-Anbieter |
| -------------------------- | ------------------------------------- |
| Prozesserstellung | `Microsoft-Windows-Kernel-Process` |
| Befehlszeilen-Sichtbarkeit | `Microsoft-Windows-Security-Auditing` |
| Dateioperationen (optional)| `Microsoft-Windows-Kernel-File` |
Die Erkennung basiert auf (falls keine ProcessStart-, CreateProcess- oder EDR-artige Eltern/Kind-Logik vorhanden ist):
● Dateisystem-ETW
● Shell / Explorer-ETW
● Image-Load-ETW (optional, nicht zur Erstellung)
● Befehlszeilen-ETW (optional)
Kern-ETW-Anbieter
| Zweck | ETW-Anbieter |
| -------------------------- | ------------------------------------- |
| Verzeichniserstellung | `Microsoft-Windows-Kernel-File` |
| EXE-Erstellung | `Microsoft-Windows-Kernel-File` |
| Shell-Ausführung | `Microsoft.Windows.ShellExecute` |
| Image Load | `Microsoft-Windows-Kernel-Image` |
| Explorer | `Microsoft-Windows-Explorer` |
| Shell | `Microsoft-Windows-Shell-Core` |
Rohe Erkennungslogik
Auf hoher Ebene erkennt die Logik:
● WinRAR.exe initiiert Dateischreibvorgänge
● Erstellung eines Verzeichnisses und einer Datei mit demselben Basisnamen
● Ausführbare Erweiterung nach Umbenennung oder Überschreibung
● Sequenz innerhalb eines engen Zeitfensters (<2s)
Dieses Muster ist in gutartigen Arbeitsabläufen äußerst selten, aber zentral für den Ausführungspfad des Exploits.
● Die Regel vermeidet absichtlich:
● Befehlszeileninspektion
● Verfolgung untergeordneter Prozesse
● Vollständiges Hashing der Datei
Die Erkennung der Kernlogik wird unten zusammen mit einem Konfidenzniveau und einer kurzen Begründung erwähnt.
1. Image Load (Ausführungsbestätigung)
Grund: Dies bestätigt die tatsächliche Ausführung ohne Telemetrie zur Prozesserstellung.
Erkennungslogik:
Windows-Lader:
● Bildet Invoice.pdf .exe in den Speicher ab
ETW-Signal:
● ImageLoad
● Bildpfad:
● *.pdf\*.pdf .exe
2. Erkennungsregel (API ShellExecuteExA) – Hochgenaue Regellogik
Allgemeine Erkennungsregel basierend auf folgender Telemetrie:
● Dateierstellungsereignisse durch WinRar.exe
● Image-Load-Ereignisse, wenn WinRar.exe eine DLL Shell32.dll lädt und eine API (ShellExecuteExA|W) mit den Parametern verwendet.
● Diese Funktion erhält lediglich ein Argument namens SHELLEXECUTEINFO, eine Struktur. Wie Sie sehen, hat diese Struktur viele Felder, aber zwei sind für uns wichtig: lpVerb und lpFile.
● lpVerb: Wenn Sie LpVerb auf NULL setzen, verwendet ShellExecuteExA|W das Standardverb, falls verfügbar, andernfalls wird das Verb „open“ ausgeführt. Das Verb „open“ öffnet oder führt die Datei aus.
● lpFile: lpFile ist der Pfad der Datei, die in ShellExecuteExA verwendet wird, um das Verb auszuführen. Beachten Sie das Leerzeichen (0x20) am Ende des Dateipfads.
Hinweis:
1- Shell32.dll: Hier ist ShellExecuteExA definiert. Es enthält die Logik zum Parsen der SHELLEXECUTEINFO-Struktur und zur Bestimmung, wie die Anforderung verarbeitet werden soll (z. B. Öffnen eines Dokuments, Ausführen einer EXE oder Anzeigen eines Eigenschaften-Dialogs).
2- So funktioniert die Schwachstelle: Die Schwachstelle liegt hier. WinRAR hat beim Schreiben das Leerzeichen aus dem Dateinamen entfernt, aber vergessen, diese Änderung in die Extraktionsliste zu übernehmen. Der Zieldateiname änderte sich also nicht und das Leerzeichen ist immer noch im Dateinamen enthalten. Man kann auch sagen, dass ShellExecuteExA die Datei „CLASSIFIED_DOCUMENTS.pdf .cmd“ öffnet. Die Erweiterung „.cmd“ spielt für ShellExecuteExA keine Rolle; es führt einfach eine Datei mit dem Namen „CLASSIFIED_DOCUMENTS.pdf “ in diesem Pfad aus.
Erkennungslogik (hochgenaue Regellogik):
● SQL-Based :\\Detection_Logic\\SQL-based-ShellExecute.txt
● KQL (ProcessCommandLine):\\Detection_Logic\\KQL-API-ProcessCommandLine.txt
● Pseudocode Detection Logic :\\Detection_Logic\\SQL-API-ShellExecute.txt
Hinweis: Sie können gemäß den obigen Standards eine Erkennungslogik erstellen. Ich füge auch ein einfaches Python-Skript bei, um Ereignisse zu erhalten, die beim Schreiben Ihrer Erkennungsregel hilfreich sind. Ebenfalls nützlich beim Erstellen einer ETW-basierten Regel.
| Anbieter | Ereignis-ID | Ereignis-ID / Aufgabe |
| ------------------------------------- | ----------------------------------------- | --------------------------- |
| `Microsoft-Windows-Shell-Core` | {30336983-0362-4540-9E69-14844E6A3B7A} | Ereignis-ID 1 (Ausführen) |
| `Microsoft-Windows-Kernel-Process` | {22FB2AD3-E163-4078-8C2A-801648437D2D} | Image Load / Prozessstart |
3. Hochgenaue Regellogik für die Ausnutzung von WinRAR CVE-2023-38831
- Grund: Warnung, wenn eine ausführbare Datei aus einem Verzeichnis erstellt oder geladen wird, dessen Name mit einer Dokumenterweiterung endet, und die Ausführung über Explorer/Shell-APIs initiiert wird.
- Pseudocode Detection Logic (High-Fidelity Rule Logic)- \\Detection_Logic\\WinRAR-CVE-2023-38831-Exploitation.txt
4. EDR-Erkennungsregel (ETW-basiert)
Allgemeine EDR-Erkennungsregel basierend auf folgender Telemetrie:
● Dateierstellungsereignisse
● Shell-Ausführung / Explorer-Aufruf
● Image-Load-Ereignisse (optional, aber aussagekräftig)
Erkennungslogik : \\Detection_Logic\\EDR-Detection-ETW-based.txt
5. KQL-Abfrage ohne DeviceProcessEvents (falls Endpunkt unterstützt)
Grund: Diese Version funktioniert ohne Abhängigkeit von DeviceProcessEvents.
Erkennungslogik : \\Detection_Logic\\KQL-Detection-without-DeviceProcessEvents.txt
6. Shell-Ausführungssignal (falls aktiviert und unterstützt)
Grund: Dies erhöht die Zuverlässigkeit in Verbindung mit Dateierstellung.
Erkennungslogik : \\Detection_Logic\\Shell-Execution-Signal.txt
7. SOC-freundlich (Triage-Ablauf)
Grund: Diese Regel wurde für jeden während eines Angriffs entdeckten Schritt erstellt.
Erkennungslogik : \\Detection_Logic\\SOC-Friendly.txt
(Warnung / falls ProcessStart, CreateProcess oder EDR-artige Eltern/Kind-Logik enthalten)
1. Erkennen, wenn winrar.exe ein verdächtiges Verzeichnis/eine verdächtige Datei erstellt, insbesondere aus Temp- oder Archiv-Extraktionspfaden, und eine verdächtige erstellte Datei mit einer anfälligen WinRAR-Version ausführt
Grund: Erstellen Sie Regeln basierend auf den Ereignissen, die Ihr Produkt verarbeitet, wie Zugriff, Ereignis oder cloudbasiert.
Erkennungslogik:\\Detection_Logic\\Gen-Pseudocode-Detection-Logic.txt
2. Erkennen, wenn winrar.exe einen verdächtigen untergeordneten Prozess erzeugt, insbesondere aus Temp- oder Archiv-Extraktionspfaden
Erkennungslogik:
EndPonit : \\Detection_Logic\\winrar-spawns-suspicious-child-process.txt
Sigma Rule : \\Detection_Logic\\Sigma-Rule-WinRAR Exploit.txt
3. Warnung basierend auf ETW-Anbieter (Prozesserstellung)
| Anbieter | Ereignis-ID |
| ------------------------------------- | --------------------------- |
| `Microsoft-Windows-Security-Auditing` | 4688 (Prozesserstellung) |
Erkennungslogik
● Übergeordneter Prozess = winrar.exe
● Neuer Prozess = Skript-Engine oder ausführbare Datei
● CommandLine enthält Temp/AppData
4. KQL-Abfrage mit DeviceProcessEvents (falls Endpunkt unterstützt)
Grund: Falls wir unter Verwendung von DeviceProcessEvents entwickeln möchten.
Erkennungslogik : \\Detection_Logic\\KQL-Detection-with-DeviceProcessEvents.txt
5. Angriffsindikator (Sie können eine hochzuverlässige Warnung hinzufügen)
Durch die Einhaltung der nachstehenden Bedingungen können Sie eine IOA- oder Watchlist-Regel zur Warnung hinzufügen.
| Indikator | Vertrauensstufe |
| ---------------------------------- | --------------- |
| winrar.exe erzeugt cmd/powershell | Hoch |
| Ausführung von Temp/AppData | Hoch |
| Ausführung von `.cmd/.bat/.exe ` | Hoch |
| Doppelerweiterungs-ZIP geöffnet | Mittel |
Erstellen Sie eine Watchlist für zwei Dateien mit demselben Namen in einem Verzeichnis, das von einer anfälligen Version von WinRAR (< 6.23) erstellt wurde:
Da Sie nicht zwei Dateien mit demselben Namen in einem Verzeichnis haben können. Sie können auch nicht ein Verzeichnis und eine Datei mit demselben Namen haben.
Dies ist jedoch in Komprimierungssoftware wie WinRar/7zip möglich. In einer komprimierten Datei spielt es keine Rolle, ob Sie Dateien mit demselben Namen haben; die Dateien werden in einer speziellen Struktur geschrieben.
So können Sie zwei Objekte (Datei/Verzeichnis) mit demselben Namen in einer ZIP/RAR-Datei haben.
Wahrscheinlich legitime Auslöser
● cmd.exe, erzeugt von 7-Zip/WinRAR-selbstextrahierenden Installationsprogrammen
● powershell.exe, gestartet von in RAR verpackten Unternehmenssoftware-Updateprogrammen
● rundll32.exe, verwendet von Druckertreiber- oder GPU-Treiber-Installationsprogrammen
Ausschlusslogik (Beispiel)
AND NOT (
ChildImage IN (cmd.exe, powershell.exe, rundll32.exe)
AND
CommandLine CONTAINS (
"setup.exe",
"install.cmd",
"driverinstall",
"vendorupdate"
)
)
Dies bewahrt die Erkennung von Exploits und unterdrückt gleichzeitig bekanntes Installationsverhalten.
Archivdatei-Telemetrie (Dateisystemereignisse) – Die Korrelation dieser Regel mit RAR/ZIP-Extraktionsaktivitäten (z. B. Dateierstellung von .cmd/.bat/.exe unmittelbar vor der Ausführung, insbesondere aus WinRAR-Extraktionsverzeichnissen wie Rar$EX*) würde die Zuverlässigkeit erheblich erhöhen und Fehlalarme reduzieren, indem nachgewiesen wird, dass die Ausführung direkt auf die Archiv-Extraktion folgte.
T1204.002 – Benutzerausführung: bösartige Datei
T1059 – Befehls- und Skriptinterpreter
T1036 – Tarnung (Doppelerweiterung)
Dieser Erkennungscode dient nur zu Bildungs- und autorisierten Testzwecken.
Verwenden Sie ihn nicht auf Systemen, die Sie nicht besitzen oder für die Sie keine ausdrückliche Genehmigung zum Testen haben.