CVE-2023-38831 - WinRAR
Ce dépôt contient une logique de détection pour CVE-2023-38831 (exploit WinRAR de falsification de fichier ZIP / double extension) avec des requêtes brutes / blocs de code et des noms de fournisseurs ETW spécifiques + ID d'événements. Une version vulnérable de WinRAR (< 6.23) sur le système cible
CVE-2023-38831 est exploité lorsque :
L'utilisateur ouvre un ZIP malveillant dans WinRAR
L'archive contient :
● Un fichier leurre (par ex., invoice.pdf )
● Un répertoire avec le même nom (par ex., invoice.pdf \ )
● À l'intérieur du répertoire, "deux" fichiers avec le même nom mais des noms légèrement différents (pour un fichier, un espace et se terminant par n'importe quelle extension ; par exemple, si le 1er fichier est un "invoice.pdf " alors le 2e peut être un script ou exécutable comme "invoice.pdf .cmd")
WinRAR exécute le script ou l'exécutable au lieu d'ouvrir le document (“PDF” dans ce cas)
Cette exécution est déclenchée via l'appel de la fonction ShellExecuteExW pour exécuter le fichier, en passant shExecInfo (ShellExecute via Explorer)
WinRAR génère un processus enfant (cmd, powershell, mshta, wscript, exe, selon ce qui est présent dans le dossier)
L'exécution se produit souvent depuis Temp / AppData / le chemin d'extraction
Résumé du flux L'utilisateur ouvre l'archive
↓
WinRAR affiche le fichier leurre
↓
L'utilisateur double-clique sur le document
↓
WinRAR extrait le répertoire avec le même nom
↓
Exécutable écrit dans *.pdf\*.pdf .exe
↓
ShellExecute via Explorer
↓
ImageLoad de l'exécutable
↓
Exécution de la charge utile
Pourquoi ce flux est important pour la détection
● Aucune utilisation de macro
● Aucune dépendance à la création de processus
● L'exploit repose sur le masquage du système de fichiers
● Signal à haute confiance et faible bruit
Détails techniques importants
Les fichiers sont écrits dans une structure spéciale
Par exemple, avoir deux objets (fichier/répertoire) avec le même nom. Lorsque vous avez un fichier et un répertoire avec le même nom dans un fichier d'archive et que vous souhaitez ouvrir le fichier temporairement en double-cliquant dessus (fichier cible) dans le fichier d'archive ouvert, WinRAR extrait ce fichier pour vous. Il extrait également tous les fichiers ayant le même nom que le fichier cible. Tous sont écrits dans un répertoire temporaire dans le chemin %tmp%.
| Nom du fichier/répertoire | Chemin d'extraction |
| ------------------------------------------------------ | --------------------------------------------------------------------------------- |
| CLASSIFIED_DOCUMENTS.txt <–fichier cible cliqué dessus | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
| CLASSIFIED_DOCUMENTS.txt .cmd <– le fichier dans le répertoire | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
S'il y a deux fichiers dans un répertoire temporaire (décompression) avec le même nom mais des tailles différentes (par exemple, 20k et 12k) et que vous ouvrez l'archive et ouvrez le premier fichier, 1.txt, qui fait 20k octets, WinRAR vous demandera de remplacer un fichier par le second fichier, 1.txt, qui fait 10k. Si vous cliquez sur "Oui", seul le second fichier, 1.txt, s'ouvrira. Cette condition peut être ajoutée pour exclusion.
Point important pour la logique de détection
Exécution de processus déclenchée depuis un chemin d'extraction ZIP ou un répertoire temporaire, avec une extension trompeuse ou un dossier se faisant passer pour un fichier
Lorsque WinRAR libère un fichier pour décompression dans le répertoire temporaire, il doit contenir deux fichiers avec le même nom mais des noms légèrement différents (un espace et se terminant par n'importe quelle extension), comme le nom du fichier principal avec un “ ” (CLASSIFIED_DOCUMENTS.pdf ) à la fin de son nom, puis un “.cmd” (CLASSIFIED_DOCUMENTS.pdf .cmd).
Lorsque WinRAR charge une DLL et appelle la fonction ShellExecuteExA, le paramètre "pExecInfo" a un chemin avec un espace et se terminant par n'importe quelle extension, comme "CLASSIFIED_DOCUMENTS.pdf .cmd."
Fournisseurs ETW et philosophie de détection (ETW uniquement) Fournisseurs ETW
| But | Fournisseur ETW |
| -------------------------- | ------------------------------------- |
| Création de processus | `Microsoft-Windows-Kernel-Process` |
| Visibilité de la ligne de commande | `Microsoft-Windows-Security-Auditing` |
| Opérations sur les fichiers (optionnel) | `Microsoft-Windows-Kernel-File` |
La détection reposera sur (si pas de ProcessStart, CreateProcess ou logique parent/enfant de type EDR) :
● ETW du système de fichiers
● ETW du Shell / Explorer
● Chargement d'image ETW (optionnel, hors création)
● Ligne de commande ETW (optionnel)
Fournisseurs ETW principaux
| But | Fournisseur ETW |
| -------------------------- | ------------------------------------- |
| Création de répertoire | `Microsoft-Windows-Kernel-File` |
| Création d'EXE | `Microsoft-Windows-Kernel-File` |
| Exécution du Shell | `Microsoft.Windows.ShellExecute` |
| Chargement d'image | `Microsoft-Windows-Kernel-Image` |
| Explorateur | `Microsoft-Windows-Explorer` |
| Shell | `Microsoft-Windows-Shell-Core` |
Logique de détection brute
À un niveau élevé, la logique détecte :
● WinRAR.exe initiant des écritures de fichiers
● Création à la fois d'un répertoire et d'un fichier avec le même nom de base
● Extension exécutable apparaissant après renommage ou écrasement
● Séquence se produisant dans une fenêtre temporelle étroite (<2s)
Ce modèle est extrêmement rare dans les workflows bénins mais central dans le chemin d'exécution de l'exploit.
● La règle évite intentionnellement :
● L'inspection de la ligne de commande
● Le suivi des processus enfants
● Le hachage complet des fichiers
La détection de la logique de base est mentionnée ci-dessous, avec un niveau de confiance et une brève justification.