Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Ghostwriting

hacking

Définition

Le Ghostwriting est une technique d'injection de code qui modifie le code d'un thread existant et légitime dans un autre processus pour y faire exécuter un payload, sans créer de nouveaux threads (ce qui génère des événements de création de thread détectables). La modification est effectuée pendant que le thread est suspendu ou en attente, puis le thread reprend son exécution normale qui se retrouve déroutée vers le payload. La technique exploite des patterns de code prévisibles dans les bibliothèques système : des fonctions qui restent en attente pendant de longues périodes dans une boucle (WaitForSingleObject, NtWaitForSingleObject) avec un code NOP ou des instructions prévisibles. En modifiant quelques octets du code du thread pendant qu'il est en attente, l'attaquant peut rediriger son exécution vers le payload au prochain réveil du thread. Contrairement aux injections CreateRemoteThread (qui créent un nouveau thread visible dans les outils de surveillance) ou QueueUserAPC (qui génèrent des événements APC visibles), le Ghostwriting modifie uniquement des bytes du thread existant — le thread lui-même ne sait pas qu'il a été modifié et continue son exécution normale après le payload. Des variantes incluent : Thread Execution Hijacking (suspendre un thread avec SuspendThread, modifier ses registres avec SetThreadContext pour pointer vers le payload, reprendre avec ResumeThread), et les modifications de IAT/GOT dans les processus cibles pour rediriger des appels de fonctions légitimes vers du code malveillant.

Fonctionnement

Thread Hijacking : 1) OpenThread(THREAD_ALL_ACCESS, target_tid), 2) SuspendThread(thread_handle), 3) GetThreadContext(thread_handle, &ctx), 4) allocate payload : VirtualAllocEx + WriteProcessMemory, 5) ctx.Rip = payload_addr, 6) SetThreadContext(thread_handle, &ctx), 7) ResumeThread(thread_handle). Le thread reprend là où il était mais avec RIP pointant vers le payload. Pas de création de nouveau thread, pas d'événement de création de thread dans les logs.

Exploitation offensive

Ghostwriting et Thread Hijacking sont utilisés pour des injections très furtives dans des processus spécifiques (navigateurs pour hooker les APIs SSL, processus de sécurité pour les aveugler). L'absence de création de thread rend la détection plus difficile pour les outils qui surveillent principalement NtCreateThreadEx et CreateRemoteThread.

Détection et mitigation

Les EDR avec surveillance de SuspendThread + SetThreadContext sur des threads de processus tiers détectent cette technique. La protection mémoire (Guard Pages, ACG - Arbitrary Code Guard dans Windows Defender) empêche la modification du code des threads par des processus externes. Les heuristiques comportementales détectant les modifications de contexte de thread inter-processus sont efficaces.

Expert disponible

Ce terme vous interpelle ?

Nos experts interviennent sur toutes les thématiques de ce glossaire — pentest, conformité NIS 2 / ISO 27001, forensics, sécurité IA. Réponse sous 24h, devis gratuit et sans engagement.

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis