Comment générer un shellcode (3 méthodes comparées)
Comparaison des façons de générer un shellcode — msfvenom, assembleur écrit à la main et générateur dans le navigateur — avec les compromis et quand utiliser chacune.
« Générer un shellcode » peut désigner trois workflows très différents. Ils échangent du contrôle contre de la rapidité et placent une confiance variable dans les octets de quelqu'un d'autre. Si tu ne sais pas encore ce qu'est un shellcode, commence par le guide.
Option 1 : assembleur écrit à la main
Tu écris l'assembleur, tu l'assembles, tu extrais les octets.
- Pour : contrôle total, sortie la plus compacte, tu comprends chaque octet.
- Contre : lent, spécifique à l'architecture, facile d'introduire de mauvais octets par accident.
- Quand l'utiliser : la taille est serrée, tu as besoin d'une primitive exotique, ou tu apprends. Voir le shellcode Linux.
Option 2 : un framework (msfvenom)
Le framework gabarie un payload et l'encode pour toi.
- Pour : rapide, nombreuses combinaisons payload/encodeur.
- Contre : sortie plus volumineuse, signaturée par les défenseurs, et elle vit sur un jump box partagé dont tu ne veux peut-être pas dépendre. Sortir ce workflow du jump box est un sujet à part : navigateur vs msfvenom.
- Quand l'utiliser : tu as besoin d'un payload standard rapidement et la signature n'est pas un problème.
Option 3 : un générateur dans le navigateur
Un générateur côté client assemble et encode dans ton navigateur — rien ne quitte la machine.
- Pour : aucune installation, rien n'est envoyé, itération rapide sur le format et les jeux de bad chars. Ce qui reste local et ce qui ne l'est pas est documenté dans le modèle de menace.
- Contre : tu dois quand même vérifier la sortie toi-même (vrai pour chaque option).
- Quand l'utiliser : tu veux de la rapidité sans monter d'outillage, ou tu travailles depuis un poste restreint.
Choisir le format et les encodeurs
Quelle que soit la voie, deux choix suivent : le format de sortie (\x, 0x, brut, base64) pour correspondre à l'endroit où vivront les octets, et les encodeurs pour esquiver les valeurs d'octets interdites. L'ordre des encodeurs compte — voir l'ordre du pipeline d'encodeurs.
Générer un shellcode maintenant
Construis, encode et exporte un payload entièrement côté client dans le builder Shellcodes — choisis l'architecture, sélectionne un preset, définis tes bad chars et exporte dans le format voulu. Ensuite désassemble-le pour confirmer les octets avant d'exécuter quoi que ce soit. Tests autorisés uniquement : usage responsable.