Skip to main content

Was ist ein Shellcode?

ShellCode ist eine Abfolge von Maschinencode oder ausführbare Anweisungen, die in einen Computerspeicher injiziert werden, um die Kontrolle eines laufenden Programms zu übernehmen.Bei einem solchen Angriff besteht einer der Schritte darin, die Kontrolle über den Programmzähler zu erlangen, der den nächsten Anweisungen identifiziert.Der Programmfluss kann dann in den eingefügten Code umgeleitet werden.Der aufdringliche Maschinencode wird als Nutzlast des Angriffs bezeichnet und ist das Element, auf das der Begriff Shellcode üblicherweise bezeichnet wird.Diese Methode wurde häufig verwendet, um einen Angreiferzugriff zu gewähren, indem eine Operation System Command Shell geöffnet wird. Daher sind Code -Injektionsangriffe im Allgemeinen als ShellCode bezeichnet.

Die anfällige Notenpfeilbarkeit umfasst normalerweise, wie ein Programm Speicher zuweist, die Gültigkeit überprüft, überprüft die Gültigkeit überprüft, überprüft in der Regelvon Eingabedaten und behandelt Speicherfehler.Softwareentwickler können diese Bedrohung normalerweise vermeiden, indem sie strikt Eingabedaten definieren und unsachgemäße Werte ablehnen.Wenn Sie nicht kontrolliert werden, werden Werte, die mehr Speicherplatz benötigen als der für diesen Wert zugewiesene Speicher, akzeptiert werden.Dies führt zu einem Sicherheitsverschluss, der als Pufferüberlauf bezeichnet wird, wobei ein Teil der Daten an Speicherorten neben dem zugewiesenen Werte angrenzt.Wenn diese Anomalie sorgfältig manipuliert wird, kann ein aufdringlicher Code eingeführt werden.

Shellcode ist normalerweise in einer Programmiersprache mit Systemzugriff auf niedriger Ebene wie Montage, C oder C ++ geschrieben.Abhängig von der gezielten Sicherheitsanfälligkeit kann jedoch das gleiche Ergebnis realisiert werden, indem Code für eine interpretierte Skriptsprache wie Perl oder Bytecode für eine virtuelle Maschine wie Java eingefügt wird.Der Code kann vor, während oder nach dem Entwurf des Programmschalters implantiert werden.Daher kann der intrusive Code in einer Datei auf der Zielmaschine enthalten oder über eine Netzwerkverbindung in Echtzeit übertragen werden.

Lokale Shellcode -Exploits sind so konzipiert, dass sie einen Angreifer die Kontrolle über eine Maschine ermöglichen, zu der er oder sie physischen Zugang hat.Ein Ziel in diesem Fall könnte darin bestehen, beispielsweise ein Konto mit Administratorberechtigungen zu erstellen.In ähnlicher Weise würde ein erfolgreicher Exploit, wenn ein laufender Prozess einen hohen Privilegien -Niveau hat, vorübergehend den gleichen Zugang zum Eindringling gewähren.

Prozesse, die auf einem Remote -Computer ausgeführt werden, können mithilfe von Standard -Netzwerkprotokollen ausgenutzt werden, um mit dem Zielcomputer zu kommunizieren.Connect-Back-Shellcode weist die Zielmaschine an, eine Verbindung zum Eindringlinge-Computer zu initiieren.Wenn der Intruder die Verbindung initiiert, wird der Code als Bindshell bezeichnet, da er versucht, die Kontrolle über eine Netzwerkverbindung zu übernehmen, die als Port auf der Remote -Maschine bezeichnet wird.Die Verbindungs-Back-Methode wird stärker verwendet, da Firewalls ausgehende Verbindungen selten verbieten.