
Strumento MITM WSUS automatizzato che spoofa il traffico di Windows Update tramite ARP, serve un eseguibile firmato con un payload PowerShell e scala a privilegi di amministratore locale.
Automatizzare l'attacco WSUS
Ottenere l'accesso amministrativo locale a una macchina Windows aggiunta al dominio è in genere il primo passo durante un penetration test. In molti casi, il Servizio di aggiornamento di Windows (WSUS) è configurato per distribuire gli aggiornamenti ai client tramite la rete locale usando HTTP. Senza la sicurezza di HTTPS, un attaccante può mettere in atto un attacco man-in-the-middle per servire un aggiornamento al client, che verrà poi eseguito con privilegi SYSTEM. Qualsiasi eseguibile firmato Microsoft può essere servito come aggiornamento, incluso un comando personalizzato con cui viene eseguito l'eseguibile. Se un attaccante riesce a ottenere un certificato TLS per il server WSUS, questa tecnica può essere eseguita anche su HTTPS (vedi ESC17 e il nostro post del blog).
Per sfruttare automaticamente l'attacco WSUS, questo strumento spoofa l'indirizzo IP del server WSUS sulla rete usando ARP e, quando il client target richiede gli aggiornamenti di Windows, serve PsExec64.exe con uno script PowerShell predefinito per ottenere privilegi di amministratore locale. Sia il file eseguibile servito (predefinito: PsExec64.exe) sia il comando eseguito possono essere modificati se necessario.
Per impostazione predefinita, un client Windows cerca gli aggiornamenti circa ogni 24 ore.
Prerequisiti:
Risultato:
Funzionalità implementate:
Usando pipx (consigliato):
sudo apt install pipx python3-nftables
pipx ensurepath
pipx install wsuks --system-site-packages
sudo ln -s ~/.local/bin/wsuks /usr/sbin/wsuks
Usando 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 deve essere eseguito come root❗
Con pipx puoi semplicemente eseguire sudo wsuks ... ovunque sul sistema.
Se stai usando poetry, devi trovarti nella cartella wsuks e iniziare ogni comando con sudo poetry run wsuks ...
Questo strumento richiede che il pacchetto nftables sia installato, com'è per impostazione predefinita su tutti i sistemi basati su Debian.\
Ci sono 3 diverse modalità/scenari di attacco in cui wsuks può essere eseguito:
Se hai già un utente di dominio, wsuks analizzerà i GPO sul domain controller per trovare il server WSUS.
Viene eseguito uno script PowerShell che aggiungerà l'utente di dominio fornito al gruppo degli amministratori locali.
sudo wsuks -t 10.0.0.10 -u User -p Password -d domain.local --dc-ip 10.0.0.1
Suggerimento: Se vuoi solo verificare la presenza di un server WSUS, puoi usare il flag --only-discover.
Lo script PowerShell predefinito eseguirà le seguenti azioni:
⚠ Prima di impostare LocalAccountTokenFilterPolicy a 1, il valore originale viene memorizzato nel campo descrizione dell'utente, così da poterlo ripristinare in seguito
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20
Se hai già un utente di dominio e conosci l'IP del server WSUS, wsuks aggiungerà semplicemente l'utente al gruppo Administrators locale.
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20 -u User -d domain.local
Se il traffico è già stato reindirizzato alla macchina dell'attaccante (ad es. con il controllo sul DNS), wsuks può essere usato solo per servire l'eseguibile e il comando dannosi, senza eseguire lo spoofing ARP e l'instradamento. Questo avvierà semplicemente il server HTTP sull'interfaccia fornita.
sudo wsuks --serve-only
Nel caso in cui un attaccante riesca a ottenere un certificato TLS (ad es. tramite ESC17) per il server WSUS, l'attacco può essere eseguito anche su HTTPS.
Si applica a tutti gli scenari precedenti: basta aggiungere il flag --tls-cert con il percorso del certificato.
sudo wsuks -t 10.0.0.10 --WSUS-Server secure.wsus.domain.local --tls-cert cert.pem
Ecco una breve demo dell'attacco con un server WSUS noto:

Nel repository PyWSUS di GoSecure puoi trovare un'ottima documentazione su come rilevare e mitigare questo attacco. Hanno anche scritto un'ottima guida che dimostra in dettaglio come funziona questo attacco qui.
Per quanto riguarda ESC17, consulta la wiki di certipy per le raccomandazioni di mitigazione.
Parti di questo strumento sono basate sui seguenti progetti: