Was ist ein Shellcode?

2 Antworten

Shellcode ist ein Begriff aus der  Programmierung und bezeichnet einen zumeist sehr kleinen Patch von in  Opcodes umgewandelten  Assemblerbefehlen, mit denen beabsichtigt wird, ein Programm oder System zu manipulieren, oder für nicht vorgesehene Zwecke auszunutzen. Dabei wird oft versucht, eine  Shell zu starten, daher auch der Name. Shellcodes haben ihren Ursprung in  Pufferüberlauf- und anderen Code-Injektions-Attacken, sie können aber auch bei  Software-, insbesondere  Penetrationstests zum Einsatz kommen, beim Experimentieren und in der Didaktik.

Auf gut Deutsch ein Patch, den man manipuliert hat, um Befehle/Programme auszuführen und in das System zu gelangen oder selbst zu manipulieren.

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting

guenterhalt  27.05.2020, 12:30

das ist aber eine sehr eingeschränkte Sichtweise.

0

der Name Shell für bestimmte Programme ist gewählt worden, weil dieses Programm eine Schnittstelle zwischen einem Kern eines Betriebssystems und dem Anwender ist. Es liegt im übertragenen Sinne wie eine Schale um den Kern.

Eine Shell im genannten Sinne ist das Bindeglied über das ein Benutzer/Anwender mit dem Computer "redet". Sie kann aber auch benutzt werden, um ohne Anwesenheit einer Person (Benutzer) durch Programm-Befehle andere Aufgaben oder auch andere Programme auszuführen.

In solchen Fällen werden die Aufgaben durch Befehle, die so eine Shell beherrscht, formuliert und dann durch den Computer (besser durch sein Betriebssystem ) ausgeführt.

Wie die Befehle lauten, wie viele es gibt, welche Funktion sie haben, hängt von der Shell selbst ab.
Normalerweise werden solche Befehle dann in eine Datei geschrieben. Sie enthält dann den Shellcode.
Den gleichen Code (Folge von Befehlen in der betreffenden Shell-Sprache) könnte man auch einfach in ein Fenster zur Eingabe von Befehlen schreiben.
Microsoft nennt das, glaube ich, "Eingabeaufforderung" . Bei Unix/Linux-Systemen ist das eine Konsole, ein Terminal.

Hier ein kleines Beispiel für Shell-Code der bash (eine Linux-Shell):

if test -f /proc/mounts ; then
 if ! is=$(readlink /proc/$$/exe 2>/dev/null) ; then
   case "$0" in
   *pcksh)    is=ksh ;;
   *bash)     is=bash ;;
   *)         is=sh  ;;
   esac
Woher ich das weiß:Berufserfahrung – openSuSE seit 1995