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.

Heaven's Gate

hacking

Définition

Heaven's Gate est une technique d'évasion avancée permettant à un processus 32 bits s'exécutant sur un système Windows 64 bits (via le sous-système WoW64 — Windows on Windows 64) de basculer vers le mode d'exécution 64 bits pour appeler directement des syscalls 64 bits du kernel. Cette technique est utilisée pour contourner les hooks userland des EDR qui instrumentent uniquement le code 32 bits dans les processus WoW64. Sur Windows 64 bits, les processus 32 bits s'exécutent dans un émulateur WoW64 qui traduit les appels syscall 32 bits vers leurs équivalents 64 bits. WoW64 maintient deux tables de segments : cs=0x23 pour le mode 32 bits et cs=0x33 pour le mode 64 bits. En chargeant le sélecteur 0x33 dans CS via une instruction far jump ou far call, le code passe en mode 64 bits au sein du même processus. Une fois en mode 64 bits, le code peut appeler directement les syscalls 64 bits du kernel (en utilisant les SSN 64 bits corrects) sans passer par les APIs 32 bits de ntdll.dll WoW64, qui sont hookées par les EDR. Les hooks installés par les EDR dans le ntdll.dll 32 bits deviennent inutiles car le code les contourne entièrement. La technique est principalement utile dans les contextes où un processus 32 bits doit contourner les protections EDR pour des opérations de post-exploitation (injection de code, accès à la mémoire d'autres processus). Elle ne s'applique pas aux processus 64 bits natifs qui n'utilisent pas le subsystème WoW64.

Fonctionnement

Le code 32 bits exécute une instruction far jump vers le segment CS=0x33 : push 0x33; push [target_64bit_addr]; retf. Une fois en mode 64 bits, les registres R8-R15 et les registres 64 bits (RAX, RBX...) deviennent accessibles. Le syscall 64 bits est appelé directement : mov r10, rcx; mov eax, SSN_64; syscall; retf [back_to_32]. Les hooks EDR dans ntdll32 ne sont jamais appelés.

Exploitation offensive

Heaven's Gate permet à des payloads 32 bits (plus courants dans certains contextes legacy) de contourner les hooks EDR 32 bits. Des implants C2 compilés en 32 bits utilisent cette technique pour effectuer des opérations sensibles (allocation mémoire, injection) via le kernel 64 bits directement, contournant les couches de surveillance WoW64.

Détection et mitigation

Les EDR modernes installent également des hooks dans le ntdll 64 bits chargé dans les processus WoW64, rendant Heaven's Gate partiellement inefficace. L'utilisation de kernel callbacks (PsSetCreateProcessNotifyRoutine, ObRegisterCallbacks) plutôt que des hooks userland est une approche de détection plus robuste contre cette technique.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis