
Automatisation de l'attaque MITM sur WSUS
Automatiser l'attaque WSUS
Obtenir un accès administratif local à une machine Windows jointe à un domaine est généralement la première étape d'un test d'intrusion. Dans de nombreux cas, le service Windows Server Update Service (WSUS) est configuré pour déployer des mises à jour vers les clients sur le réseau local en utilisant HTTP. Sans la sécurité de HTTPS, un attaquant peut monter une attaque de l'homme du milieu pour envoyer une mise à jour au client, qui s'exécutera alors avec les privilèges SYSTEM. Tout exécutable signé par Microsoft peut être servi comme mise à jour, y compris une commande personnalisée avec laquelle l'exécutable est lancé. Si un attaquant parvient à obtenir un certificat TLS pour le serveur WSUS, cette technique peut également être réalisée sur HTTPS (voir ESC17 et notre article de blog).
Pour exploiter automatiquement l'attaque WSUS, cet outil usurpe l'adresse IP du serveur WSUS sur le réseau à l'aide d'ARP, et lorsque le client ciblé demande des mises à jour Windows, il sert PsExec64.exe avec un script PowerShell prédéfini pour obtenir des privilèges d'administrateur local. Le fichier exécutable servi (par défaut : PsExec64.exe) et la commande exécutée peuvent être modifiés si nécessaire.
Par défaut, un client Windows recherche les mises à jour environ toutes les 24 heures.
Prérequis :
Résultat :
Fonctionnalités implémentées :
Avec pipx (recommandé) :
sudo apt install pipx python3-nftables
pipx ensurepath
pipx install wsuks --system-site-packages
sudo ln -s ~/.local/bin/wsuks /usr/sbin/wsuks
Avec 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 doit être exécuté en tant que root❗
Avec pipx, vous pouvez simplement exécuter sudo wsuks ... n'importe où sur le système.
Si vous utilisez poetry, vous devez être dans le dossier wsuks et commencer chaque commande par sudo poetry run wsuks ...
Cet outil nécessite que le paquet nftables soit installé, ce qui est le cas par défaut sur tous les systèmes basés sur Debian.\
Il existe 3 modes/scénarios d'attaque différents dans lesquels wsuks peut être exécuté :
Si vous avez déjà un utilisateur du domaine, wsuks analysera les GPO sur le contrôleur de domaine pour trouver le serveur WSUS.
Un script PowerShell est exécuté, qui ajoutera l'utilisateur du domaine fourni au groupe des administrateurs locaux.
sudo wsuks -t 10.0.0.10 -u User -p Password -d domain.local --dc-ip 10.0.0.1
Astuce : si vous souhaitez simplement vérifier la présence d'un serveur WSUS, vous pouvez utiliser l'option --only-discover.
Le script PowerShell prédéfini exécutera les actions suivantes :
⚠ Avant de définir LocalAccountTokenFilterPolicy sur 1, la valeur d'origine est stockée dans le champ de description de l'utilisateur afin qu'elle puisse être restaurée ultérieurement
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20
Si vous disposez déjà d'un utilisateur du domaine et que vous connaissez l'IP du serveur WSUS, wsuks ajoutera simplement l'utilisateur au groupe Administrateurs local.
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20 -u User -d domain.local
Si le trafic est déjà redirigé vers la machine de l'attaquant (par exemple avec un contrôle sur le DNS), wsuks peut être utilisé pour servir uniquement l'exécutable et la commande malveillants, sans effectuer l'usurpation ARP ni le routage lui-même. Cela lancera simplement le serveur HTTP sur l'interface fournie.
sudo wsuks --serve-only
Dans le cas où un attaquant est en mesure d'obtenir un certificat TLS (par exemple via ESC17) pour le serveur WSUS, l'attaque peut également être réalisée sur HTTPS.
Cela s'applique à tous les scénarios ci-dessus ; il suffit d'ajouter l'option --tls-cert avec le chemin du certificat.
sudo wsuks -t 10.0.0.10 --WSUS-Server secure.wsus.domain.local --tls-cert cert.pem
Voici une courte démo de l'attaque avec un serveur WSUS connu :

Dans le dépôt PyWSUS de GoSecure, vous trouverez une excellente documentation sur la façon de détecter et d'atténuer cette attaque. Ils ont également rédigé un excellent guide démontrant en détail le fonctionnement de cette attaque ici.
Concernant ESC17, veuillez consulter le wiki certipy pour des recommandations d'atténuation.
Certaines parties de cet outil sont basées sur les projets suivants :