Desplegar GOAD-Light con Ludus

Qué es GOAD-Light

GOAD (Game Of Active Directory) es un laboratorio de AD vulnerable de Orange Cyberdefense. La variante Light son 3 máquinas Windows Server 2019 y es la que cabe en un servidor casero.
  • kingslanding → controlador de sevenkingdoms.local
  • winterfell → controlador de north.sevenkingdoms.local
  • castelblack → servidor miembro de north con IIS y SQL Server
GOAD no te da credenciales de partida. Se practica como caja negra: descubrir equipos, enumerar y avanzar. Los detalles de cada laboratorio están en su documentación.

Clonar GOAD

En el host Proxmox, en el disco con espacio:
terminal
$ cd /mnt/pve/<disco-grande>$ git clone https://github.com/Orange-Cyberdefense/GOAD.git$ cd GOAD

Comprobar y desplegar

Primero comprueba que el entorno cumple los requisitos (dependencias de Python y Ansible, espacio, plantillas).
terminal
$ ./goad.sh -t check -l GOAD-Light -p ludus
Después instala. GOAD crea un usuario y un rango en Ludus y los identifica con un ID de instancia.
terminal
$ ./goad.sh -t install -l GOAD-Light -p ludus
Al hacerlo, GOAD crea en Ludus un usuario propio para ese laboratorio, con nombre GOADLight más un sufijo aleatorio (por ejemplo GOADLight383ff8), y mete ahí el rango. En el resto de la guía aparece como <usuario-del-rango>. Es distinto del administrador de Ludus que se creó al instalar. Puedes ver cuál es el tuyo con:
terminal
ludus users list
Los comandos que tocan el laboratorio (configuración del rango, despliegues, WireGuard) se lanzan con --user <usuario-del-rango>.
El proceso tiene dos fases:
  • Ludus crea el router y las tres VMs, les pone IP y las deja listas (Sysprep, reinicios, WinRM). Verás las IP 10.2.10.10, .11 y .22
  • GOAD ejecuta sus playbooks de Ansible: dominio principal, dominio hijo, usuarios, grupos, ADCS, ACL y la configuración vulnerable de cada servidor
Tarda horas en una CPU modesta. Hay tramos largos sin salida por pantalla y una pausa de 5 minutos que mete el propio playbook para que AD replique.

Que no se corte la sesión SSH

Si lo lanzas por SSH y la sesión se cae, Ansible muere con ella y la provisión queda a medias. Lánzalo en segundo plano con registro:
terminal
nohup env PYTHONUNBUFFERED=1 ./goad.sh -t install -i <ID-de-instancia> -p ludus -a true \  > goad-provision.log 2>&1 < /dev/null &tail -f goad-provision.log
<ID-de-instancia> es el nombre con el que GOAD identifica tu laboratorio. Lo crea al empezar la instalación y tiene la forma <sufijo>-goad-light-ludus, por ejemplo 383ff8-goad-light-ludus. El sufijo es el mismo que lleva el usuario de Ludus (GOADLight383ff8). Apúntalo al empezar.
Con -i reanudas la misma instancia sin crear un laboratorio duplicado. Para ver el estado:
terminal
$ ./goad.sh -t status -i <ID-de-instancia> -p ludus

Comprobar el resultado

Al terminar, el resumen de Ansible debe dar failed=0 en dc01, dc02 y srv02. Los fallos que me aparecieron a mí (SQL Server, SSMS) están en Problemas y soluciones.
Resumen final de Ansible (PLAY RECAP): dc01, dc02 y srv02 con failed=0
Resumen final de Ansible (PLAY RECAP): dc01, dc02 y srv02 con failed=0