🔍 Contexte
Présentation publiée le 11 juin 2026 par Dominik Phillips et Sebastian Feldmann, membres du CSIRT de Deutsche Bahn AG, dans le cadre de la conférence x33fcon 2026. Le contenu est disponible sur GitHub (threathunters-io). L’objectif est de décrire une approche de fingerprinting d’implants C2 modernes à l’exécution, avec un bon rapport performance/confiance.
🎯 Problématique
Les équipes Blue Team détectent aujourd’hui les opérateurs (activité post-compromission) mais rarement l’implant lui-même. Les outils de scan mémoire comme Moneta, PE-Sieve ou Hunt-Sleeping-Beacons sont efficaces mais nécessitent une exécution manuelle et sont déclenchés après détection de l’opérateur. Les artefacts révélateurs (allocations RWX, modules stomped, hooks ntdll, abus de timers/APC, threads anormaux) ne sont pas exposés par les capteurs de sécurité classiques.
🛠️ Approche technique
Les auteurs proposent d’exploiter ETW (Event Tracing for Windows) pour surveiller en continu les artefacts d’évasion des implants :
- Sleep masking via thread pool : surveillance des événements
TP_V2_CBEnqueue(EventType{34}, GUIDc861d0e2-a2c1-4d36-9f9c-970bab943a12) pour détecter des callbacks versntdll!NtContinue,kernel32!LoadLibraryou des régions de code dynamique. - Code dynamique : corrélation des événements
PageFault_VirtualAllocetPageFault_TypeGroup1(DemandZeroFault, CopyOnWrite, TransitionFault) avec des callstacks viaStackWalk_Eventpour identifier l’exécution depuis des régions non mappées à un module légitime. - Code dynamique imbriqué (nested dynamic code) : détection de chaînes d’unpacking où du code dynamique alloue d’autres régions dynamiques — IOC fort, rare dans les logiciels légitimes.
- Tunneling réseau suspect : agrégation par processus des connexions vers des services internes (Kerberos, LDAP, SMB, RDP) combinées à des connexions externes, via
TcpIp_SendIPV4(EventType{10}). - Combinaisons suspectes de DLLs administratives : suivi des DLLs chargées dans le temps via
Image_V1_Loadpour détecter des combinaisons typiques de BOFs (netenum, adcs_enum, ldapsearch…).
📊 Système de scoring
Chaque technique émet un tag pondéré. Les tags sont agrégés par processus dans le temps pour produire un score de sévérité (implant fingerprint). Les techniques couvertes par l’outil PoC :
Network_public, Network_private, Network_tunneling, Dynamic_code, Dynamic_code_nested, Sleep_tp_callback, Proxy_tp_callback, Module_ballooning, High_num_of_common_service_port.
⚔️ Limites et contournements
- L’ajout d’unwind info via
RtlAddFunctionTablecasse la détection basée sur les callstacks brisés. - L’exécution asynchrone sans timers (ex: Process-Splitting) contourne la détection des sleepmasks.
- Les JIT engines (.NET, V8, Java) génèrent des faux positifs sur le code dynamique seul.
📄 Nature de l’article
Publication de recherche technique présentée en conférence, accompagnée d’un outil PoC open source. But principal : proposer un modèle de détection proactif des implants C2 basé sur la télémétrie ETW continue, en complément des approches réactives existantes.
🧠 TTPs et IOCs détectés
TTP
- T1055 — Process Injection (Defense Evasion)
- T1620 — Reflective Code Loading (Defense Evasion)
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1071 — Application Layer Protocol (Command and Control)
- T1059 — Command and Scripting Interpreter (Execution)
- T1497.003 — Virtualization/Sandbox Evasion: Time Based Evasion (Defense Evasion)
- T1218 — System Binary Proxy Execution (Defense Evasion)
Malware / Outils
- Moneta (tool)
- PE-Sieve (tool)
- Hunt-Sleeping-Beacons (tool)
- COFFLoader (loader)
- tracebit (tool)
🟡 Indice de vérification factuelle : 40/100 (moyenne)
- ⬜ github.com — source non référencée (0pts)
- ✅ 17596 chars — texte complet (fulltext extrait) (15pts)
- ⬜ aucun IOC extrait (0pts)
- ⬜ pas d’IOC à vérifier (0pts)
- ✅ 7 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://github.com/threathunters-io/kassandra_x33fcon_2026