
Herramienta automatizada de MITM para WSUS que suplanta el tráfico de Windows Update a través de ARP, sirve un ejecutable firmado con carga útil de PowerShell y escala a administrador local.
Automatizando el ataque WSUS
Obtener acceso administrativo local a una máquina Windows unida a un dominio suele ser el primer paso durante una prueba de penetración. En muchos casos, el Windows Server Update Service (WSUS) está configurado para implementar actualizaciones a los clientes a través de la red local usando HTTP. Sin la seguridad de HTTPS, un atacante puede llevar a cabo un ataque de intermediario (machine-in-the-middle) para servir una actualización al cliente, que se ejecutará con privilegios SYSTEM. Cualquier ejecutable firmado por Microsoft puede servirse como actualización, incluido un comando personalizado con el que se ejecuta el ejecutable. Si un atacante puede obtener un certificado TLS para el servidor WSUS, esta técnica también puede realizarse a través de HTTPS (consulta ESC17 y nuestra entrada de blog).
Para explotar automáticamente el ataque WSUS, esta herramienta suplanta (spoofea) la dirección IP del servidor WSUS en la red mediante ARP y, cuando el cliente objetivo solicita actualizaciones de Windows, sirve PsExec64.exe con un script de PowerShell predefinido para obtener privilegios de administrador local. Tanto el archivo ejecutable que se sirve (por defecto: PsExec64.exe) como el comando que se ejecuta pueden cambiarse si es necesario.
Por defecto, un cliente de Windows buscará actualizaciones aproximadamente cada 24 horas.
Prerrequisitos:
Resultado:
Funcionalidades implementadas:
Usando pipx (recomendado):
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 debe ejecutarse como root❗
Con pipx, simplemente puedes ejecutar sudo wsuks ... en cualquier parte del sistema.
Si usas poetry, debes estar en la carpeta wsuks y comenzar cada comando con sudo poetry run wsuks ...
Esta herramienta requiere que el paquete nftables esté instalado, lo cual es el valor predeterminado en todos los sistemas basados en Debian.\
Hay 3 modos/escenarios de ataque diferentes en los que se puede ejecutar wsuks:
Si ya tienes un usuario de dominio, wsuks parseará los GPO en el controlador de dominio para encontrar el servidor WSUS.
Se ejecutará un script de PowerShell que agregará el usuario de dominio proporcionado al grupo de administradores locales.
sudo wsuks -t 10.0.0.10 -u User -p Password -d domain.local --dc-ip 10.0.0.1
Consejo: Si solo quieres comprobar si hay un servidor WSUS, puedes usar la opción --only-discover.
El script de PowerShell predefinido ejecutará las siguientes acciones:
⚠ Antes de establecer LocalAccountTokenFilterPolicy en 1, el valor original se almacena en el campo de descripción del usuario para que pueda restaurarse más tarde
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20
Si ya tienes un usuario de dominio y conoces la IP del servidor WSUS, wsuks simplemente agregará el usuario al grupo de Administradores locales.
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20 -u User -d domain.local
Si el tráfico ya está siendo redirigido a la máquina del atacante (por ejemplo, con control sobre DNS), wsuks se puede usar para servir únicamente el ejecutable malicioso y el comando, sin realizar la suplantación ARP ni el enrutamiento. Esto simplemente iniciará el servidor HTTP en la interfaz proporcionada.
sudo wsuks --serve-only
En el caso de que un atacante pueda obtener un certificado TLS (por ejemplo, mediante ESC17) para el servidor WSUS, el ataque también se puede realizar a través de HTTPS.
Se aplica a todos los escenarios anteriores; solo agrega la opción --tls-cert con la ruta al certificado.
sudo wsuks -t 10.0.0.10 --WSUS-Server secure.wsus.domain.local --tls-cert cert.pem
Aquí tienes una breve demostración del ataque con un servidor WSUS conocido:

En el repositorio PyWSUS de GoSecure puedes encontrar una excelente documentación sobre cómo detectar y mitigar este ataque. También escribieron una excelente guía que demuestra cómo funciona este ataque en detalle aquí.
Con respecto a ESC17, consulta la wiki de certipy para obtener recomendaciones de mitigación.
Partes de esta herramienta se basan en los siguientes proyectos: