Shellcode
Auch bekannt als:Maschinencode-Payload
Shellcode: Kompakter Maschinencode, der nach erfolgreicher Ausnutzung direkt vom Zielprozess ausgeführt wird. Der Name stammt vom klassischen Ziel, eine Kommandozeile zu öffnen; die NutzlastPayloadTeil eines Angriffs oder Exploits, der die beabsichtigte schädliche Wirkung ausführt. kann aber beliebige Aktionen ausführen.
Funktionsweise und Einordnung
Shellcode ist positionsunabhängiger Maschinencode für eine bestimmte Architektur und ein bestimmtes Betriebssystem. Er löst typischerweise direkt Systemaufrufe aus, statt Bibliotheksfunktionen zu nutzen, und muss oft harte Randbedingungen erfüllen: eine feste Maximallänge, keine Null-Bytes, manchmal nur druckbare Zeichen. Ein execve("/bin/sh") benötigt je nach Architektur zwischen 20 und 40 Bytes; der eingebettete Pfadstring wird dabei häufig PC-relativ adressiert, um Platz zu sparen.
Bedeutung in der Praxis
Damit Shellcode überhaupt läuft, muss der Zielspeicher schreib- und ausführbar sein. Genau das verhindern nicht ausführbarer Speicher und die W^X-Regel, weshalb in gehärteten Umgebungen meist ROPReturn-Oriented ProgrammingExploit-Technik, die vorhandene Codeschnipsel verkettet, statt eigenen Code einzuschleusen. an die Stelle klassischen Shellcodes tritt. Als Befund bleibt Shellcode-Ausführung besonders kritisch, wenn eine Anwendung selbst RWX-Speicher anlegt und ungeprüfte Eingaben hineinliest — ein Muster, das in Debug- und Diagnosediensten eingebetteter Geräte immer wieder auftaucht.
Verwandte Begriffe
- Binary ExploitationBinary ExploitationAusnutzung von Speicher- oder Logikfehlern in kompilierten Anwendungen.: Ausnutzung von Speicher- oder Logikfehlern in kompilierten Anwendungen.
- Return-Oriented ProgrammingReturn-Oriented ProgrammingExploit-Technik, die vorhandene Codeschnipsel verkettet, statt eigenen Code einzuschleusen.: Exploit-Technik, die vorhandene Codeschnipsel verkettet, statt eigenen Code einzuschleusen.
- PayloadPayloadTeil eines Angriffs oder Exploits, der die beabsichtigte schädliche Wirkung ausführt.: Teil eines Angriffs oder Exploits, der die beabsichtigte schädliche Wirkung ausführt.
- Buffer OverflowBuffer OverflowSchreiben über die Grenze eines Speicherpuffers hinaus, wodurch benachbarte Daten überschrieben werden.: Schreiben über die Grenze eines Speicherpuffers hinaus, wodurch benachbarte Daten überschrieben werden.