Co to jest kod skorupy?

ShellCode jest sekwencją kodu maszynowego lub instrukcjami wykonywalnymi, które są wstrzykiwane do pamięci komputera z zamiarem przejęcia kontroli nad działającym programem. W takim ataku jednym z kroków jest uzyskanie kontroli nad licznikiem programu, który identyfikuje następną instrukcję, która ma zostać wykonana. Przepływ programu można następnie przekierować do włożonego kodu. Invioral Machine Code nazywa się ładunkiem ataku i jest elementem powszechnie określanym przez termin shellCode. Ta metoda była często używana do przyznania dostępu atakującemu poprzez otwarcie powłoki poleceń systemu operacji, więc ogólnie ataki wtrysku kodu stały się znane jako shellcode.

Wykorzystanie podatności zwykle obejmuje, w jaki sposób program przypisuje pamięć, sprawdza ważność danych wejściowych i obsługuje błędy pamięci. Twórcy oprogramowania zwykle mogą uniknąć tego zagrożenia, ściśle definiując dane wejściowe i odrzucając niewłaściwe wartości. Jeśli są niezaznaczone, wartości wymagające większej przestrzeni pamięci niż pamięć Allotted za tę wartość może zostać zaakceptowana. Powoduje to zamek bezpieczeństwa o nazwie przepełnienie bufora, w którym część danych jest zapisywana w lokalizacjach pamięci przylegającej do przypisanej przestrzeni wartości. Po starannie manipulowaniu ta anomalia może pozwolić na wprowadzenie natrętnego kodu.

ShellCode jest zwykle napisany w języku programowania z dostępem do systemu niskiego poziomu, takiego jak montaż, C lub C ++. Jednak w zależności od ukierunkowanej wrażliwości ten sam wynik można zrealizować poprzez wstawienie kodu dla interpretowanego języka skryptowego, takiego jak Perl lub kod bajtowy dla maszyny wirtualnej, takiej jak Java. Kod można wszczepić przed, w trakcie lub po porwaniu licznika programu. Zatem kod natrętny może być zawarty w pliku na docelowym komputerze lub przesyłany przez połączenie sieciowe w czasie rzeczywistym.

Exploits lokalnych kodów skorupowych są zaprojektowane tak, aby zapewnić atakującemu kontrolę nad maszyną do WHIChe lub ona ma fizyczny dostęp. Celem w tym przypadku może być na przykład utworzenie konta z uprawnieniami administratora. Podobnie, jeśli proces działający ma wysoki poziom przywilejów, udany exploit tymczasowo zapewniłby ten sam poziom dostępu do intruza.

Procesy działające na zdalnym komputerze można wykorzystać za pomocą standardowych protokołów sieciowych do komunikacji z komputerem docelowym. Connect-Back ShellCode instruuje komputer docelowy do zainicjowania połączenia z komputerem intruza. Jeśli intruz inicjuje połączenie, kod nazywa się BindShell, ponieważ próbuje przejąć kontrolę nad połączeniem sieciowym o nazwie port na zdalnym komputerze. Metoda Connect-Back jest szerzej stosowana, ponieważ zapory ogniowe rzadko zabraniają połączeń wychodzących.

INNE JĘZYKI