Skip to main content

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čů 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 se obecně staly známými jako shell kód.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 nejsou zaškrtnuté, mohou být hodnoty vyžadovány více úložného prostoru než paměť přidělená pro tuto hodnotu.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ích s přiřazenými hodnotami.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 nízkým přístupem systému, jako je montáž, 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.

Místní exploity shellcode jsou navrženy tak, aby poskytovaly kontrolu útočníka nad strojem, ke kterému 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 běžící na vzdáleném počítači lze využít pomocí standardních síťových protokolů pro 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řelců.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 pro připojení je více používána, protože firewally jen zřídka zakazují odchozí připojení.