Kas yra Shellcode?

„Shellcode“ yra mašininio kodo arba vykdomųjų komandų seka, kuri įvedama į kompiuterio atmintį, siekiant perimti veikiančios programos valdymą. Tokios atakos metu vienas iš žingsnių yra valdyti programos skaitiklį, kuris identifikuoja kitą vykdytiną komandą. Tada programos srautas gali būti nukreiptas į įdėtą kodą. Intruzinis mašinos kodas vadinamas atakos naudinguoju krūviu ir yra elementas, paprastai vadinamas shellcode terminu. Šis metodas dažnai buvo naudojamas suteikti užpuolikui prieigą atidarant operacinės sistemos komandų apvalkalą, todėl kodo įpurškimo atakos apskritai buvo žinomos kaip apvalkalo kodas.

Išnaudojamas pažeidžiamumas paprastai apima tai, kaip programa priskiria atmintį, tikrina įvesties duomenų galiojimą ir tvarko atminties klaidas. Programinės įrangos kūrėjai paprastai gali išvengti šios grėsmės griežtai apibrėždami įvesties duomenis ir atmesdami netinkamas reikšmes. Jei nepažymėta, gali būti priimtos reikšmės, kurioms reikia daugiau vietos nei tai reikšmei skirta atmintis. Tai sukelia saugos spragą, vadinamą buferio perpildymu, kai dalis duomenų įrašoma į atminties vietas, esančias šalia reikšmei priskirtos vietos. Kruopščiai manipuliuojant ši anomalija gali leisti įvesti įkyrų kodą.

„Shellcode“ paprastai rašomas programavimo kalba su žemo lygio prieiga prie sistemos, pvz., asamblėjos, C arba C++. Tačiau, atsižvelgiant į tikslinį pažeidžiamumą, tas pats rezultatas gali būti pasiektas įterpus interpretuojamos scenarijų kalbos kodą, pvz., PERL, arba virtualios mašinos baitinį kodą, pvz., JAVA. Kodas gali būti implantuojamas prieš programos skaitiklio užgrobimą, jo metu arba po jo. Taigi, įsibrovęs kodas gali būti įtrauktas į failą tiksliniame kompiuteryje arba perduodamas tinklo ryšiu realiuoju laiku.

Vietinis apvalkalo kodo išnaudojimas skirtas suteikti užpuolikui valdyti įrenginį, prie kurio jis arba ji turi fizinę prieigą. Šiuo atveju tikslas gali būti, pavyzdžiui, sukurti paskyrą su administratoriaus teisėmis. Panašiai, jei vykdomas procesas turi aukštą privilegijų lygį, sėkmingas išnaudojimas laikinai suteiks tokio pat lygio prieigą įsibrovėliui.

Procesai, vykdomi nuotoliniame kompiuteryje, gali būti naudojami naudojant standartinius tinklo protokolus, kad būtų galima susisiekti su tiksliniu kompiuteriu. Connect-back shellcode nurodo tikslinei mašinai užmegzti ryšį su įsibrovėlio kompiuteriu. Jei įsibrovėlis inicijuoja ryšį, kodas vadinamas surišimo apvalkalu, nes jis bando perimti tinklo ryšį, vadinamą nuotolinio įrenginio prievadu. Prisijungimo metodas yra plačiau naudojamas, nes ugniasienės retai uždraudžia išeinančius ryšius.