
Automatisiertes WSUS-MITM-Tool, das Windows-Update-Datenverkehr über ARP spoofet, ein signiertes ausführbares Programm mit PowerShell-Payload bereitstellt und zu lokalem Administrator eskaliert.
Automatisierung des WSUS-Angriffs
Der lokale administrative Zugriff auf einen einer Domäne beigetretenen Windows-Rechner ist typischerweise der erste Schritt während eines Penetrationstests. In vielen Fällen ist der Windows Server Update Service (WSUS) so konfiguriert, dass er Updates über das lokale Netzwerk per HTTP an Clients bereitstellt. Ohne die Sicherheit von HTTPS kann ein Angreifer einen Man-in-the-Middle-Angriff durchführen, um ein Update an den Client auszuliefern, das anschließend mit SYSTEM-Rechten ausgeführt wird. Jede von Microsoft signierte ausführbare Datei kann als Update bereitgestellt werden, einschließlich eines benutzerdefinierten Befehls, mit dem die ausführbare Datei ausgeführt wird. Sollte ein Angreifer in der Lage sein, ein TLS-Zertifikat für den WSUS-Server zu erlangen, kann diese Technik auch über HTTPS durchgeführt werden (siehe ESC17 und unseren Blogbeitrag).
Um den WSUS-Angriff automatisch auszunutzen, fälscht dieses Tool die IP-Adresse des WSUS-Servers im Netzwerk mittels ARP-Spoofing. Wenn der anvisierte Client Windows-Updates anfordert, liefert es PsExec64.exe mit einem vordefinierten PowerShell-Skript aus, um lokale Administratorrechte zu erlangen. Sowohl die bereitgestellte ausführbare Datei (Standard: PsExec64.exe) als auch der ausgeführte Befehl können bei Bedarf geändert werden.
Standardmäßig sucht ein Windows-Client ungefähr alle 24 Stunden nach Updates.
Voraussetzungen:
Ergebnis:
Implementierte Funktionen:
Mit pipx (empfohlen):
sudo apt install pipx python3-nftables
pipx ensurepath
pipx install wsuks --system-site-packages
sudo ln -s ~/.local/bin/wsuks /usr/sbin/wsuks
Mit poetry:
sudo apt install pipx git python3-nftables # poetry should still be installed with pipx, but apt will work as well
sudo pipx install poetry
sudo ln -s /root/.local/bin/poetry /usr/sbin/poetry
git clone https://github.com/NeffIsBack/wsuks
cd wsuks
sudo poetry install
❗wsuks muss als root ausgeführt werden❗
Mit pipx können Sie sudo wsuks ... einfach überall auf dem System ausführen.
Wenn Sie poetry verwenden, müssen Sie sich im wsuks-Ordner befinden und jeden Befehl mit sudo poetry run wsuks ... starten.
Dieses Tool erfordert, dass das Paket nftables installiert ist, was auf allen Debian-basierten Systemen standardmäßig der Fall ist.\
Es gibt 3 verschiedene Modi/Angriffsszenarien, in denen wsuks ausgeführt werden kann:
Wenn Sie bereits über einen Domänenbenutzer verfügen, analysiert wsuks die GPOs auf dem Domänencontroller, um den WSUS-Server zu finden.
Ein PowerShell-Skript wird ausgeführt, das den angegebenen Domänenbenutzer zur lokalen Administratorengruppe hinzufügt.
sudo wsuks -t 10.0.0.10 -u User -p Password -d domain.local --dc-ip 10.0.0.1
Tipp: Wenn Sie nur nach einem WSUS-Server suchen möchten, können Sie das Flag --only-discover verwenden.
Das vordefinierte PowerShell-Skript führt die folgenden Aktionen aus:
⚠ Bevor LocalAccountTokenFilterPolicy auf 1 gesetzt wird, wird der ursprüngliche Wert im Benutzerbeschreibungsfeld gespeichert, damit er später wiederhergestellt werden kann
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20
Wenn Sie bereits über einen Domänenbenutzer verfügen und die IP des WSUS-Servers kennen, fügt wsuks den Benutzer einfach zur lokalen Administratorengruppe hinzu.
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20 -u User -d domain.local
Wenn der Datenverkehr bereits auf die Maschine des Angreifers umgeleitet wird (z. B. mit Kontrolle über DNS), kann wsuks verwendet werden, um nur die schädliche ausführbare Datei und den Befehl bereitzustellen, ohne das ARP-Spoofing und das Routing selbst durchzuführen. Dadurch wird einfach der HTTP-Server auf der angegebenen Schnittstelle gestartet.
sudo wsuks --serve-only
Falls ein Angreifer in der Lage ist, ein TLS-Zertifikat (z. B. durch ESC17) für den WSUS-Server zu erlangen, kann der Angriff auch über HTTPS durchgeführt werden.
Gilt für alle oben genannten Szenarien; fügen Sie einfach das Flag --tls-cert mit dem Pfad zum Zertifikat hinzu.
sudo wsuks -t 10.0.0.10 --WSUS-Server secure.wsus.domain.local --tls-cert cert.pem
Hier ist eine kurze Demo des Angriffs mit einem bekannten WSUS-Server:

Im PyWSUS-Repository von GoSecure finden Sie eine großartige Dokumentation, wie Sie diesen Angriff erkennen und eindämmen können. Sie haben außerdem einen großartigen Leitfaden geschrieben, der zeigt, wie dieser Angriff im Detail funktioniert, hier.
Bezüglich ESC17 finden Sie im certipy-Wiki Empfehlungen zur Eindämmung.
Teile dieses Tools basieren auf den folgenden Projekten: