Co je to shell kód?
ShellCode je sekvence strojového kódu nebo spustitelných pokynů, které se vstřikují do paměti počítače s úmyslem převzít kontrolu nad běžeckým programem. Při takovém útoku je jedním z kroků získat kontrolu nad čítačem programu, který identifikuje další instrukci, která má být provedena. Programový tok pak pak může být přesměrován na vložený kód. Zrušivý strojový kód se nazývá užitečné zatížení útoku a je prvkem, který se běžně označuje termínem shellcode. Tato metoda byla často používána k udělení přístupu útočníka otevřením shell příkazu operačního systému, takže útoky injekce kódu obecně se staly známými jako shellcode.
Využití zranitelnosti obvykle zahrnuje to, jak program přiřazuje paměť, kontroluje platnost vstupních dat a zpracovává chyby paměti. Vývojáři softwaru se obvykle mohou této hrozbě vyhnout přísně definováním vstupních dat a odmítnutím nesprávných hodnot. Pokud jsou nekontrolovány, hodnoty vyžadují více úložného prostoru než paměť allottED pro tuto hodnotu může být přijato. To způsobuje bezpečnostní závěr nazývaný přetečení vyrovnávací paměti, kde je část dat zapsána do míst paměti sousedící s přiřazeným prostorem hodnoty. Při pečlivém manipulaci může tato anomálie umožnit zavedení rušivého kódu.
Shellcode je obvykle psán v programovacím jazyce s přístupem systému nízké úrovně, jako je sestavení, C nebo C ++. V závislosti na cílené zranitelnosti však může být stejný výsledek realizován vložením kódu pro interpretovaný skriptovací jazyk, jako je Perl nebo bytecode pro virtuální počítač, jako je Java. Kód lze implantovat před, během únosu programu nebo po něm. Zrušivý kód tedy může být obsažen v souboru na cílovém počítači nebo přenášen přes síťové připojení v reálném čase.
Lokální exploity shellcode jsou navrženy tak, aby poskytovaly kontrolu útočníka nad strojem na WI.Ch on nebo ona má fyzický přístup. Cílem v tomto případě může být například vytvoření účtu s oprávněními správce. Podobně, pokud má provozní proces vysokou úroveň privilegií, úspěšný exploit by dočasně udělil stejnou úroveň přístupu k vetřelci.
Procesy spuštěné na vzdáleném počítači lze využít pomocí standardních síťových protokolů ke komunikaci s cílovým počítačem. Connect-Back ShellCode instruuje cílový stroj k zahájení připojení k počítači vetřelce. Pokud vetřelec iniciuje připojení, kód se nazývá Bindshell, protože se pokouší převzít kontrolu nad síťovým připojením nazývaném port na vzdáleném počítači. Metoda připojení je více používána, protože firewally jen zřídka zakazují odchozí připojení.