📅 Source : matheuzsecurity.github.io, publié le 9 septembre 2026 par 0xMatheuZ. Article de recherche offensive décrivant une technique d’évasion avancée sur Linux.
🎯 Contexte
L’auteur présente Dntry, un outil de red team permettant l’exécution d’un binaire ELF de manière entièrement fileless sous Linux, sans jamais écrire sur le système de fichiers et sans invoquer les appels système execve ou execveat.
🔧 Mécanisme technique La technique repose sur le sous-système de gestion de clés du noyau Linux (keyring), disponible depuis le noyau 2.6 :
- Stockage du payload : Le binaire ELF est chargé en mémoire via
add_key(syscall 248), type"user", dans le keyring de session (KEY_SPEC_SESSION_KEYRING, valeur -3). Le payload est stocké viakmemdup()dans la mémoire slab du noyau, sans inode ni entrée dans/proc/self/fd/. - Récupération :
keyctl(KEYCTL_READ)(syscall 250) copie le payload depuis la slab vers un mapping anonyme (mmapavecMAP_PRIVATE|MAP_ANONYMOUS). - Révocation :
KEYCTL_REVOKE(opération 3) libère la slab ; le payload ne subsiste plus qu’en mémoire anonyme. - Exécution manuelle (userland exec) : Les segments
PT_LOADde l’ELF sont mappés manuellement en mémoire anonyme (MAP_FIXED_NOREPLACE), la pile est construite au format ABI x86-64, puis un saut direct (jmp) vers le point d’entrée est effectué — sans aucun appel execve. - Auto-suppression : Le loader peut se supprimer lui-même via
readlink("/proc/self/exe")+unlink().
⚠️ Considérations de détection
- Aucun événement de démarrage de processus n’est généré (pas d’execve).
/proc/self/fd/reste vide de tout fd lié au payload.- Le suffixe
(deleted)dans/proc/self/exeest un signal de détection connu (Elastic, Falco) ; l’auteur note que ne pas supprimer le loader est plus furtif. - La clé est visible dans
/proc/keyssous le nom_dntrypendant sa durée de vie. - Le payload est récupéré via HTTPS sans jamais être écrit sur disque.
🛠️ Outil associé
- Dntry (github.com/MatheuZSecurity/Dntry) : loader fileless implémentant cette chaîne complète.
📄 Type d’article : Publication de recherche offensive / red team, visant à documenter une technique d’évasion exploitant le keyring Linux pour contourner les détections basées sur le système de fichiers et les appels execve.
🧠 TTPs et IOCs détectés
TTP
- T1620 — Reflective Code Loading (Defense Evasion)
- T1055 — Process Injection (Defense Evasion)
- T1027.011 — Obfuscated Files or Information: Fileless Storage (Defense Evasion)
- T1059 — Command and Scripting Interpreter (Execution)
- T1140 — Deobfuscate/Decode Files or Information (Defense Evasion)
- T1070.004 — Indicator Removal: File Deletion (Defense Evasion)
- T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
IOC
- Domaines :
temp.sh— VT · URLhaus · ThreatFox - URLs :
https://temp.sh/aBcDe/payload— URLhaus - Fichiers :
dntry
⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 11 septembre 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.
Malware / Outils
- Dntry (loader)
🟡 Indice de vérification factuelle : 58/100 (moyenne)
- ⬜ matheuzsecurity.github.io — source non référencée (0pts)
- ✅ 7847 chars — texte complet (fulltext extrait) (15pts)
- ✅ 3 IOCs (IPs/domaines/CVEs) (10pts)
- ✅ 1/2 IOC(s) confirmé(s) (ThreatFox, URLhaus, VirusTotal) (8pts)
- ✅ 7 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
IOCs confirmés externellement :
temp.sh(domain) → VT (5/89 détections)
🔗 Source originale : https://matheuzsecurity.github.io/hacking/linux-kernel-keyring-fileless-exec/