Payload Types in Metasploit
In Metasploit gibt es verschiedene Arten von Payloads, also kleine Code-Snippets, die auf einem Zielsystem ausgeführt werden, nachdem eine Schwachstelle ausgenutzt wurde. Diese Payloads ermöglichen es dem Angreifer, Kontrolle über das Zielsystem zu erlangen oder bestimmte Aktionen durchzuführen, wie das Öffnen einer Shell oder das Extrahieren von Informationen. Es gibt drei Haupttypen von Payloads in Metasploit:
Inline (Non-Staged) Payloads
Stager Payloads
Stage Payloads
Inline (Non-Staged) Payloads
Ein Inline-Payload ist ein einfacher, eigenständiger Payload, der alles in einem Schritt enthält: Den Exploit und den gesamten Shellcode (den Code, der auf dem Zielsystem ausgeführt wird). Diese Art von Payloads sind in der Regel stabiler, da sie nicht in mehreren Teilen gesendet werden müssen und keine weiteren Verbindungen nötig sind.
Vorteile:
Stabilität: Da der gesamte Code auf einmal ausgeführt wird, ist die Wahrscheinlichkeit geringer, dass etwas schiefgeht.
Einfachheit: Alles wird in einem Rutsch gesendet und ausgeführt.
Nachteil:
Größe: Da der gesamte Payload auf einmal gesendet wird, kann die Größe zu groß für manche Exploits sein, die nur kleine Payloads unterstützen.
Wann verwenden? Inline-Payloads eignen sich, wenn du eine einfache und stabile Verbindung zum Ziel herstellen möchtest und dir die Payload-Größe keine Probleme macht.
Beispiel:
$ windows/shell_bind_tcp
Dieser Payload öffnet eine TCP-Verbindung auf dem Zielsystem und ermöglicht es dir, darauf zuzugreifen.
Stager Payloads
Stager Payloads funktionieren in Kombination mit Stage Payloads. Ein Stager ist ein kleiner Code, der zuerst auf das Zielsystem übertragen wird und dann eine Verbindung zum Angreifer herstellt. Danach lädt der Stager den größeren, eigentlichen Payload (den Stage) nach. Dies ist besonders nützlich, wenn der Exploit nur kleine Payloads zulässt oder die Verbindung stückweise aufgebaut werden muss.
Vorteile:
Flexibilität: Der Stager ist klein und kann auch in Situationen eingesetzt werden, in denen die Payload-Größe begrenzt ist.
Netzwerk-Effizienz: Da der Payload in mehreren Schritten übertragen wird, kann dies in Netzwerken mit geringer Bandbreite vorteilhaft sein.
Nachteil:
Instabilität: Da der Payload in mehreren Schritten übertragen wird, kann es passieren, dass die Verbindung währenddessen abbricht, was den Angriff fehlschlagen lässt.
Wann verwenden? Stager-Payloads sind sinnvoll, wenn du mit kleinen Payloads arbeiten musst oder wenn du flexiblere Angriffe benötigst, z.B. wenn die Verbindung instabil sein könnte.
Beispiel:
$ windows/meterpreter/reverse_tcp
Dieser Stager öffnet eine Verbindung zurück zum Angreifer (Reverse Shell) und lädt anschließend den Meterpreter nach.
Meterpreter
Meterpreter ist ein sehr fortgeschrittener Payload in Metasploit. Es handelt sich um eine Art "Meta-Interpreter", der in den Speicher des Zielsystems injiziert wird und dort bleibt. Meterpreter läuft komplett im Arbeitsspeicher, wodurch keine Spuren auf der Festplatte hinterlassen werden. Dies macht es schwierig, den Angriff zu entdecken. Mit Meterpreter kannst du dynamisch weitere Befehle und Skripte auf das Zielsystem laden und so umfassende Kontrolle erlangen.
Vorteile:
Stealth: Meterpreter läuft nur im Speicher, was es schwer macht, den Angriff zu erkennen.
Vielseitigkeit: Du kannst verschiedene Module und Skripte nach Bedarf laden, z.B. um Dateien zu stehlen, Screenshots zu machen oder weitere Payloads zu starten.
Wann verwenden? Meterpreter eignet sich besonders gut für Situationen, in denen du eine lang anhaltende und versteckte Kontrolle über das Zielsystem aufbauen möchtest.
Beispiel:
$ windows/meterpreter/reverse_tcp
Dieser Payload stellt eine Rückverbindung zum Angreifer her, lädt Meterpreter in den Speicher des Ziels und ermöglicht dir dann die Steuerung.
PassiveX
PassiveX ist ein Payload, der es ermöglicht, restriktive Firewalls zu umgehen. In Netzwerken, die nur HTTP-Verkehr zulassen, nutzt PassiveX ActiveX-Steuerelemente, um eine versteckte Instanz des Internet Explorers zu starten. Über diese versteckte Instanz kann dann der Payload über HTTP-Kommunikation mit dem Angreifer interagieren.
Wann verwenden? PassiveX ist nützlich, wenn du mit sehr restriktiven Netzwerkumgebungen zu tun hast, in denen z.B. nur HTTP-Verbindungen erlaubt sind.
NoNX
NoNX Payloads umgehen eine Sicherheitsfunktion moderner Prozessoren namens "No Execute" (NX), die verhindern soll, dass Code in bestimmten Speicherbereichen ausgeführt wird. In Windows wird dies als "Data Execution Prevention" (DEP) bezeichnet. NoNX Payloads sind darauf ausgelegt, diese Schutzmaßnahme zu umgehen und trotzdem schädlichen Code auszuführen.
Wann verwenden? Wenn du auf ein Ziel triffst, das DEP aktiviert hat und andere Payloads blockiert.
Ordinal Payloads (Ord)
Ordinal Payloads sind sehr kleine, Windows-basierte Stager-Payloads, die ohne explizite Rücksprungadressen funktionieren. Sie sind winzig und funktionieren auf vielen verschiedenen Windows-Versionen, aber sie sind etwas weniger stabil und setzen voraus, dass eine bestimmte DLL (ws2_32.dll
) bereits im Speicher des Ziels geladen ist.
Wann verwenden? Ordinal-Payloads sind nützlich, wenn du ein älteres Windows-System oder ein System mit eingeschränkten Ressourcen angreifst und extrem kleine Payloads brauchst.
IPv6 Payloads
IPv6 Payloads sind speziell für Netzwerke, die das IPv6-Protokoll verwenden. Da IPv6 immer häufiger in modernen Netzwerken genutzt wird, bieten diese Payloads eine Möglichkeit, Angriffe auf IPv6-basierte Systeme durchzuführen.
Wann verwenden? Wenn du in einem Netzwerk mit IPv6 arbeitest und sicherstellen musst, dass dein Payload diese Protokollversion unterstützt.
Reflective DLL Injection
Reflective DLL Injection ist eine Methode, um eine DLL-Datei (Dynamic Link Library) direkt in den Speicher eines laufenden Prozesses zu injizieren, ohne die Festplatte zu berühren. Dadurch ist der Payload viel schwerer zu erkennen, da er nur im Speicher existiert. Diese Technik wird z.B. von Meterpreter und dem VNC-Payload genutzt.
Wann verwenden? Wenn du besonders stealthy sein willst und sicherstellen möchtest, dass keine Dateien auf dem Zielsystem zurückbleiben.
Wann welcher Payload-Typ verwendet werden sollte:
Inline (Non-Staged): Wenn du eine stabile Verbindung möchtest und die Payload-Größe kein Problem ist.
Stager + Stage: Wenn du kleine Payloads benötigst oder die Verbindung über einen längeren Zeitraum halten musst.
Meterpreter: Für umfassende Kontrolle und Stealth auf dem Zielsystem.
PassiveX: Wenn du Firewalls umgehen musst, die nur HTTP-Verkehr zulassen.
NoNX: Wenn du DEP oder NX umgehen musst.
Ordinal Payloads: Für extrem kleine Payloads auf älteren Windows-Systemen.
IPv6: Für Angriffe auf IPv6-Netzwerke.
Reflective DLL Injection: Für stealthy Angriffe, die keine Spuren auf der Festplatte hinterlassen.
Last updated