Shellcode ( englanniksi shellcode , shell startup code) on binäärinen suoritettava koodi , joka yleensä siirtää ohjauksen komentoprosessorille, esimerkiksi '/bin/sh' Unix - kuoressa , 'command.com' MS-DOSissa ja 'cmd.exe'. Microsoft Windows -käyttöjärjestelmissä . Shellcodea voidaan käyttää hyötykuormana , jolloin hyökkääjä pääsee käsiksi tietokonejärjestelmän kuoreen .
Käytettäessä etähaavoittuvuutta shellkoodi voi avata haavoittuvan tietokoneen ennalta määritetyn TCP -portin , jonka kautta komentotulkkiin pääsee edelleen. Tällaista koodia kutsutaan portin sitovaksi shellkoodiksi . Jos shellkoodi muodostaa yhteyden hyökkääjän tietokoneen porttiin, mikä tehdään palomuurin tai NAT :n ohittamiseksi , tällaista koodia kutsutaan käänteiseksi shelliksi ( eng. reverse shell shellcode ).
Shellcode ruiskutetaan yleensä käynnissä olevan ohjelman muistiin, jonka jälkeen hallinta siirtyy siihen pinon ylivuodolla tai keon puskurin ylivuodolla tai muotomerkkijonohyökkäyksillä . Ohjauksen siirto shellkoodiin tapahtuu kirjoittamalla pinon paluuosoite päälle syötetyn shell-koodin osoitteella, ylikirjoittamalla kutsuttujen funktioiden osoitteet tai vaihtamalla keskeytyskäsittelijöitä. Tämän seurauksena suoritetaan shell-koodi, joka avaa komentorivin hyökkääjän käyttöön.
Crackerit kirjoittavat shell-koodeja ja käyttävät usein temppuja piilottaakseen hyökkäyksensä. He yrittävät usein selvittää, kuinka tunkeutumisen havainnointijärjestelmät (IDS) tunnistavat kaikki saapuvat hyökkäykset. Tyypillinen IDS skannaa yleensä kaikki saapuvat paketit etsiessään shell-koodikohtaista rakennetta (usein suuri joukko roskakoodeja , NOP :ita yksinkertaisimmassa tapauksessa ); jos se löytää tällaisen rakenteen, paketti tuhotaan ennen kuin se saavuttaa määränpäänsä. IDS:n heikko asema tässä tapauksessa on, että se ei tee todella hyvää hakua, muuten se kestää liian kauan ja siten hidastaa nettiyhteyttä.
Shellcode sisältää melkein aina merkkijonon, jossa on komentotulkin nimi . Kaikki tällaisen merkkijonon sisältävät saapuvat paketit katsotaan aina IDS:n silmissä epäilyttäviksi. Jotkin sovellukset eivät myöskään hyväksy muita kuin aakkosnumeerisia syöttöjä (ne eivät hyväksy merkkejä az, AZ, 0-9 ja muutamien muiden merkkien ulkopuolelta).
Saadakseen läpi kaikki nämä tunkeutumisenestotoimenpiteet krakkarit käyttävät salausta , itsemuovautuvaa koodia , polymorfista koodia ja aakkosnumeerista koodia .