Shellcode ( anglicky shellcode , spouštěcí kód shellu) je binární spustitelný kód , který obvykle přenáší řízení na příkazový procesor, například '/bin/sh' v unixovém shellu , 'command.com' v MS-DOS a 'cmd.exe' v operačních systémech Microsoft Windows . Shellcode může být použit jako exploit , který umožňuje útočníkovi získat přístup k shellu v počítačovém systému .
Při zneužití vzdálené zranitelnosti může shell kód otevřít předem určený TCP port zranitelného počítače, přes který bude proveden další přístup k příkazovému shellu, takový kód se nazývá port binding shellcode . Pokud se shell kód připojí k portu útočníkova počítače, což se děje za účelem obejití firewallu nebo NAT , pak se takový kód nazývá reverzní shell ( anglicky reverse shell shellcode ).
Shellcode je obvykle vložen do paměti běžícího programu, načež je do něj řízení přeneseno přetečením zásobníku nebo přetečením vyrovnávací paměti haldy nebo pomocí útoků formátovacích řetězců . Přenos řízení na shell kód se provádí přepsáním návratové adresy na zásobníku adresou vloženého kódu shellu, přepsáním adres volaných funkcí nebo změnou obsluhy přerušení. Výsledkem je provedení shell kódu, který otevře příkazový řádek pro použití útočníkem.
Crackery píší shell kódy a často používají triky, aby skryly svůj útok. Často se snaží zjistit, jak systémy detekce narušení (IDS) rozpoznají jakýkoli příchozí útok. Typický IDS obvykle prohledává všechny příchozí pakety a hledá strukturu specifickou pro shell kód (často velké pole nevyžádaných kódů, v nejjednodušším případě NOP ); pokud takovou strukturu nalezne, paket je zničen dříve, než dosáhne svého cíle. Slabou pozicí IDS je v tomto případě to, že nedělá opravdu dobré vyhledávání, jinak to bude trvat příliš dlouho a tím zpomalí připojení k internetu.
Shellcode téměř vždy obsahuje řetězec s názvem shellu . Všechny příchozí pakety obsahující takový řetězec jsou v očích IDS vždy považovány za podezřelé. Některé aplikace také nepřijímají nealfanumerický vstup (neakceptují znaky mimo rozsah az, AZ, 0-9 a několik dalších znaků.)
K překonání všech těchto opatření proti vniknutí používají crackeři šifrování , samomodifikační kód , polymorfní kód a alfanumerický kód .