Skip to main content

Co to jest kod skorupy?

ShellCode jest sekwencją kodu maszynowego lub instrukcjami wykonywalnymi, które są wstrzykiwane do pamięci komputerów z zamiarem przejęcia kontroli nad uruchamiają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 kod powłoki.

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 nie są sprawdzone, wartości wymagające większej przestrzeni pamięci niż pamięć przydzielona dla tej wartości mogą zostać zaakceptowane.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 pisany 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.

Lokalne exploits kodów skorupowych są zaprojektowane tak, aby zapewnić atakującemu kontrolę nad maszyną, do której ma on 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 zdalnej maszynie można wykorzystać przy użyciu standardowych protokołów sieciowych do komunikacji z komputerem docelowym.Connect-Back ShellCode instruuje maszynę docelową do zainicjowania połączenia z komputerem intruzów.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.