Egg Hunter
hackingDéfinition
L'egg hunter est une technique d'exploitation pour les situations où le buffer disponible pour injecter un shellcode est trop petit pour contenir le shellcode complet, mais où l'attaquant peut injecter un shellcode plus large à un emplacement mémoire avec une adresse imprécise ou variable. L'egg hunter est un mini-shellcode (typiquement 30-60 octets) qui cherche en mémoire le 'shellcode complet' marqué par un 'egg' (séquence de 8 octets unique) et y transfère l'exécution. L'egg (généralement une valeur unique répétée deux fois comme 0xDEADBEEFDEADBEEF) est préfixé au shellcode principal. L'attaquant injecte l'egg + shellcode principal dans la mémoire de la cible (via un autre vecteur : champ de formulaire, paramètre différent, mémoire heap) à une adresse imprécise, puis déclenche l'exploitation avec l'egg hunter dans le petit buffer connu. L'egg hunter parcoure la mémoire du processus pour trouver la séquence egg. La version NtAccessCheckAndAuditAlarm de Skape (la référence standard de 32 octets) utilise des syscalls Windows pour parcourir la mémoire page par page de manière safe (en évitant les pages non mappées qui provoqueraient un access violation) : il appelle NtAccessCheckAndAuditAlarm avec chaque adresse, et si l'accès à cette page est refusé avec NTSTATUS STATUS_ACCESS_VIOLATION, passe à la page suivante ; sinon compare les 8 octets avec l'egg. Sur Linux, l'egg hunter utilise typiquement le syscall access() ou sigaction() pour scanner la mémoire de manière safe. La version Skape est de 39 octets pour Linux, utilisant int 0x80 pour les syscalls. Des outils comme mona.py pour Immunity Debugger et pwndbg automatisent la génération d'egg hunters adaptés à différents contextes. La contrainte principale est la vitesse : l'egg hunter doit parcourir potentiellement plusieurs centaines de MB de mémoire, ce qui peut prendre quelques secondes sur des systèmes avec peu de RAM.
Fonctionnement
Structure d'un exploit avec egg hunter : 1) injection du shellcode principal précédé de l'egg (0xDEADBEEFDEADBEEF + shellcode) via un autre vecteur (deuxième requête, champ différent), 2) exploitation du petit buffer avec l'egg hunter (32-60 bytes), 3) l'egg hunter parcourt la mémoire page par page, compare les 8 premiers octets de chaque zone avec l'egg, 4) match trouvé : JMP vers egg+8 (début du shellcode principal).
Exploitation offensive
L'egg hunter est indispensable quand le buffer exploitable est trop petit pour un shellcode fonctionnel mais qu'un autre mécanisme permet d'injecter des données arbitraires dans la mémoire du processus. Les exploitations de débordements de tampons dans des parsers avec deux phases (une phase small-buffer et une phase large-data) sont les cas d'usage classiques. Des CTF et des challenges OSCP utilisent régulièrement cette technique.
Détection et mitigation
L'egg hunter génère des patterns d'accès mémoire caractéristiques (scan séquentiel de la mémoire via des syscalls répétés) potentiellement détectables par des EDR avec surveillance des syscalls. Les mitigations standards (ASLR, NX/DEP, stack canary) limitent également l'efficacité des egg hunters. La protection principale reste le patching des vulnérabilités mémoire exploitées.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h