Glossary
Shellcode
Code machine autonome et indépendant de la position, injecté et exécuté dans un processus cible, généralement comme charge utile d'exploit.
Le shellcode est un petit bloc de code machine brut — ainsi nommé parce qu'il lançait historiquement un shell — conçu pour être injecté et exécuté au sein d'un processus en cours d'exécution. Il doit être indépendant de la position (aucune adresse absolue codée en dur), exempt d'octets nuls (pour survivre aux chemins d'injection basés sur strcpy) et autonome. Le shellcode est écrit directement en assembleur ou compilé avec des options spéciales, puis extrait sous forme de tableau d'octets. Analyser un shellcode consiste à fournir les octets bruts à un désassembleur, à comprendre ses opcodes et ses appels système, puis à l'exécuter dans une sandbox pour observer son comportement en toute sécurité.
; shellcode classique x86 Linux execve("/bin/sh") (simplifié)
xor eax, eax
push eax
push 0x68732f2f
push 0x6e69622f
mov ebx, esp
int 0x80