CVE-2023-38831 - WinRAR
Questo repository contiene una logica di rilevamento per CVE-2023-38831 (spoofing di file ZIP WinRAR / exploit a doppia estensione) con query grezze/blocchi di codice e nomi di provider ETW specifici + ID evento. Una versione vulnerabile di WinRAR (< 6.23) sul sistema di destinazione
CVE-2023-38831 viene sfruttato quando:
L'utente apre un ZIP dannoso in WinRAR
L'archivio contiene:
● Un file esca (ad es., invoice.pdf )
● Una directory con lo stesso nome (ad es., invoice.pdf \ )
● All'interno della directory "due" file con lo stesso nome ma nomi leggermente diversi (per un file spazio e che termina con qualsiasi estensione, ad esempio se il 1° file è "invoice.pdf " allora il 2° potrebbe essere qualsiasi script o eseguibile come "invoice.pdf .cmd")
WinRAR esegue lo script o l'eseguibile invece di aprire il documento ("PDF" in questo caso)
Questa esecuzione viene attivata chiamando la funzione ShellExecuteExW per eseguire il file, passando shExecInfo (ShellExecute tramite Explorer)
WinRAR genera un processo figlio (cmd, powershell, mshta, wscript, exe come qualsiasi cosa presente nella cartella)
L'esecuzione avviene spesso da Temp / AppData / percorso di estrazione
Riepilogo del flusso L'utente apre l'archivio
↓
WinRAR mostra il file esca
↓
L'utente fa doppio clic sul documento
↓
WinRAR estrae la directory con lo stesso nome
↓
Eseguibile scritto in *.pdf\*.pdf .exe
↓
ShellExecute tramite Explorer
↓
ImageLoad dell'eseguibile
↓
Esecuzione del payload
Perché questo flusso è importante per il rilevamento
● Nessun utilizzo di macro
● Nessuna dipendenza dalla creazione di processi
● L'exploit si basa sul mascheramento del filesystem
● Segnale ad alta confidenza e basso rumore
Dettagli tecnici importanti
I file vengono scritti in una struttura speciale
Come avere due oggetti (File/Dir) con lo stesso nome e quando hai un file e una directory con lo stesso nome, in un file di archivio e vuoi aprire il file temporaneamente, facendo doppio clic su di esso (file di destinazione) nell'archivio aperto, WinRAR estrae questo file per te, estrae anche tutti i file che hanno lo stesso nome del file di destinazione. Tutti vengono scritti in una directory temporanea nel percorso %tmp%.
| Nome file/dir | Percorso di estrazione |
| ------------------------------------------------------ | --------------------------------------------------------------------------------- |
| CLASSIFIED_DOCUMENTS.txt <– file di destinazione su cui si è cliccato | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
| CLASSIFIED_DOCUMENTS.txt .cmd <– il file nella directory | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
Se ci sono due file in una directory temporanea (di decompressione) con lo stesso nome ma dimensioni diverse (ad esempio, 20k e 12k) e apri l'archivio e apri il primo file, 1.txt, che è di 20k byte, WinRAR ti chiederà di sostituire un file con il secondo file, 1.txt, che è di 10K. Se fai clic su "Sì", si aprirà solo il secondo file, 1.txt. Questa condizione può essere aggiunta per l'esclusione.
Punto importante per la logica di rilevamento
Esecuzione del processo avviata da un percorso di estrazione ZIP o directory temporanea, con un'estensione fuorviante o una cartella mascherata da file
Quando WinRAR rilascia un file per la decompressione nella directory temporanea, deve contenere due file con lo stesso nome ma nomi leggermente diversi (spazio e che termina con qualsiasi estensione), come nome del file principale con uno “ ” (CLASSIFIED_DOCUMENTS.pdf ) alla fine del suo nome e poi un “.cmd” (CLASSIFIED_DOCUMENTS.pdf .cmd).
Quando WinRAR carica una DLL e chiama la funzione ShellExecuteExA, il parametro "pExecInfo" ha un percorso con uno spazio e che termina con qualsiasi estensione, come "CLASSIFIED_DOCUMENTS.pdf .cmd."
Provider ETW e filosofia di rilevamento (solo ETW) Provider ETW
| Scopo | Provider ETW |
| -------------------------- | ------------------------------------- |
| Creazione processo | `Microsoft-Windows-Kernel-Process` |
| Visibilità riga di comando | `Microsoft-Windows-Security-Auditing` |
| Operazioni file (opzionale) | `Microsoft-Windows-Kernel-File` |
Il rilevamento si baserà su (se non è presente ProcessStart, CreateProcess o logica genitore/figlio stile EDR):
● ETW del file system
● ETW di Shell/Explorer
● ETW di caricamento immagine (opzionale, non create)
● ETW della riga di comando (opzionale)
Provider ETW principali
| Scopo | Provider ETW |
| -------------------------- | ------------------------------------- |
| Creazione directory | `Microsoft-Windows-Kernel-File` |
| Creazione EXE | `Microsoft-Windows-Kernel-File` |
| Esecuzione shell | `Microsoft.Windows.ShellExecute` |
| Caricamento immagine | `Microsoft-Windows-Kernel-Image` |
| Explorer | `Microsoft-Windows-Explorer` |
| Shell | `Microsoft-Windows-Shell-Core` |
Logica di rilevamento grezza
Ad alto livello, la logica rileva:
● WinRAR.exe che avvia scritture di file
● Creazione sia di una directory che di un file con lo stesso nome base
● Estensione eseguibile che si concretizza dopo ridenominazione o sovrascrittura
● Sequenza che si verifica in un intervallo di tempo ristretto (<2s)
Questo modello è estremamente raro nei flussi di lavoro benigni ma centrale nel percorso di esecuzione dell'exploit.
● La regola evita intenzionalmente:
● Ispezione della riga di comando
● Tracciamento dei processi figlio
● Hashing completo dei file
Il rilevamento della logica principale è menzionato di seguito, insieme a un livello di confidenza e una breve giustificazione.