
Lab-Einführung in ZeroLogon
Ein Labor-Setup zum Testen einer Schwachstelle für den ZeroLogon-Exploit (CVE-2020-1472). Es enthält ein Python-Skript, das die Impacket-Bibliothek zum Testen der Schwachstelle verwendet, sowie eine virtuelle Maschine (VM) mit Windows Server 2019, die als Domänencontroller (DC) konfiguriert ist.
Das Skript versucht, die Netlogon-Authentifizierung zu umgehen. Es wird sofort beendet, wenn die Umgehung erfolgreich durchgeführt wurde, und führt keine Netlogon-Operationen durch. Wenn der DC gepatcht ist, gibt das Erkennungsskript nach dem Senden einer Reihe von RPC-Aufrufpaaren auf und kommt zu dem Schluss, dass das Ziel nicht verwundbar ist (mit einer Wahrscheinlichkeit für falsch-negative Ergebnisse von 0,04 %).
Optional
Geben Sie einfach vagrant up ein, um einen verwundbaren Build von Windows Server 2019 als VM zu laden.
Konfigurieren Sie die VM dann gemäß diesem Tutorial als Domänencontroller.
Starten Sie schließlich den Angriff auf den DC (zerologon_tester.py).
Es wird empfohlen, die dockerisierte Version dieses Angriffs oder eine virtuelle Umgebung zu verwenden.
Docker-Option. Ausführen:
# NOTE: On Windows, you may need to enable the `Hyper-V` Wiwndows feature.
# NOTE2: On Windows, you may need to switch to `Linux Containers`.
$ docker build -f Dockerfile . -t zerologon
# This command run the zerologon test on the DC with domain VAGRANT in the address 192.168.33.10
$ docker run zerologon VAGRANT 192.168.33.10
VirtualEnv-Option. Ausführen:
$ python3 -m virtualenv zerologon
$ zerologon/Scripts/Activate.ps1
# NOTE: This may give you some issues with your firewall!!
$ pip install git+https://github.com/SecureAuthCorp/impacket
$ pip install -r requirements.txt
$ python zerologon_tester.py VAGRANT 192.168.33.10
Die Ausgabe dieses Angriffs sollte ungefähr so aussehen:

Dieses Skript dient nur dazu, die Durchführbarkeit des Angriffs zu testen; es nutzt den Server in keiner anderen Weise aus. Das Skript nimmt keine Änderungen am DC vor. Wenn Sie wissen möchten, wie ein PoC-Angriff implementiert wird, lesen Sie diesen Artikel oder einen ähnlichen.
Das Skript kann verwendet werden, um einen DC oder Backup-DC anzugreifen. Es funktioniert wahrscheinlich auch gegen einen schreibgeschützten DC, aber das wurde nicht getestet. Der DC-Name sollte sein NetBIOS-Computername sein. Wenn dieser Name nicht korrekt ist, schlägt das Skript wahrscheinlich mit einem Fehler STATUS_INVALID_COMPUTER_NAME fehl. Ein Whitepaper zu dieser Schwachstelle wird hier veröffentlicht.
HINWEIS: Wenn etwas schiefgeht und Sie einen
STATUS_INVALID_COMPUTER_NAME-Fehler erhalten, führen Sienbtstat -A 192.168.33.10aus. Das gibt Ihnen Aufschluss darüber, was auf dieser Adresse vor sich geht. Alternativ können Sie jederzeit testen, ob die Maschine von Ihrem Host aus erreichbar ist, indem Sie sie anpingen (ping 192.168.33.10).HINWEIS 2: Wenn der Angriff fehlschlägt, kann es sein, dass die Maschine mit Sicherheitspatches aktualisiert wurde. Überprüfen Sie die Updates und entfernen Sie alles, das wie
Sicherheitspatchesaus dem Jahr 2020 oder später aussieht.