Game of Active Directory (GOAD) en Windows

Creo que unas de las cosas más útiles cuando se quiere aprender y practicar Active Directory es tener tu propio laboratorio de pruebas. Además, mejor probar algo nuevo en un laboratorio que en producción, por tanto, la idea de este artículo es montar uno de los laboratorios mas completo de AD, el GOAD:

5 máquinas virtuales, 2 bosques, 3 dominios(Laboratorio GOAD completo)

No solo es un laboratorio super completo a nivel de infraestructura, sino también a nivel de vulnerabilidades:

  • Password reuse between computer (PTH)
  • Spray User = Password
  • Password in description
  • SMB share anonymous
  • SMB not signed
  • Responder
  • Zerologon
  • Windows defender
  • ASREPRoast
  • Kerberoasting
  • AD Acl abuse
  • Unconstraint delegation
  • Ntlm relay
  • Constrained delegation
  • Install MSSQL
  • MSSQL trusted link
  • MSSQL impersonate
  • Install IIS
  • Upload asp app
  • Multiples forest
  • Anonymous RPC user listing
  • Child parent domain
  • Generate certificate and enable ldaps
  • ADCS – ESC 1/2/3/4/6/8
  • Certifry
  • Samaccountname/nopac
  • Petitpotam unauthent
  • Printerbug
  • Drop the mic
  • Shadow credentials
  • Mitm6
  • Add LAPS
  • GPO abuse
  • Add Webdav
  • Add RDP bot
  • Add full proxmox integration
  • Add Gmsa (receipe created)
  • Add azure support
  • Refactoring lab and providers
  • Protected Users
  • Account is sensitive
  • Add PPL
  • Add Gmsa
  • Groups inside groups
  • Shares with secrets (all, sysvol)

Y dicho esto, después de esta gran introducción, vamos al grano, este laboratorio esta inicialmente pensado para que se monte en un sistema Linux:

Pero nosotros vamos a hacer exactamente lo que se menciona en el segundo párrafo.

En mi caso lo voy a montar en VMWare, sin embargo, siguiendo el mismo procedimiento es posible instalarlo también en VirtualBox. En cualquiera de los dos casos, los requisitos recomendados para el ordenador donde lo vamos a montar son los siguientes:

  • ~115GB de almacenamiento (puede que sea un poco mas)
  • 24 GB de RAM

Esto es lo RECOMENDADO, pero eso no quiere decir que no se pueda montar con menos (sobre todo por la parte de la RAM). En cualquier caso, este laboratorio tiene también su versión «Light» que posee menos máquinas y por tanto, tiene requisitos menores:

3 máquinas virtuales, 1 bosque, 2 dominios (Laboratorio GOAD Light)

Nosotros vamos a montar el laboratorio completo, aunque el procedimiento será el mismo sea cual sea el que instalemos.

Lo primero de todo será instalar Vagrant en nuestro Windows, para ello lo descargamos desde el siguiente enlace:

La instalación es muy sencilla, es un simple asistente de instalación normal. Una vez tengamos Vagrant instalado, tendremos que descargar un plugin en el caso de que vayamos a usar VMWare. Si vamos a usar VirtualBox no tendremos que instalar nada., depende de cual vayamos a usar:

La instalación del plugin de VMWare es otro simple asistente de instalación, lo seguimos y listo.

Una vez tengamos Vagrant y, en este caso, el plugin de VMWare instalado. Nos abriremos una PowerShell como Administrador:

Ahora, descargaremos el repositorio de GOAD:

Descomprimiremos el ZIP y moveremos la carpeta a la ruta donde queramos que se instale el laboratorio, ya que las máquinas se instalan en la propia carpeta del repositorio. Yo por ejemplo los guardaré en Documentos.

Una vez tenemos el repositorio en la ruta donde queramos que se quede, usando la PowerShell que abrimos antes, nos moveremos a esta ruta y, dentro del repositorio, a la siguiente carpeta:

  • .\ad\GOAD\providers\vmware

La ruta puede variar dependiendo del laboratorio que vayamos a instalar:

  • .\ad\GOAD
  • .\ad\GOAD-Light\

Asimismo, dependiendo del software de virtualización que usemos, también cambiará la ruta:

  • .\ad\GOAD\providers\vmware
  • .\ad\GOAD\providers\virtualbox

Son simples cambios que se ajustarán a lo que vayas a hacer tu. Por lo demás, siempre será igual todo.

Por asegurarnos, si lo vas a instalar en VMWare, puedes asegurarte de que el plugin de Vagrant esté instalado intentando de nuevo la instalación pero esta vez desde la propia terminal usando el comando de:

  • vagrant plugin install vagrant-vmware-desktop

Una vez estemos dentro de la ruta que corresponde, en mi caso, GOAD y vmware, la idea es lanzar Vagrant con el siguiente comando:

  • vagrant up

Aquí puede o no que te de un fallo como me sale en la imagen:

Esto puede ocurrir simplemente porque de la casualidad que otra interfaz de red que tengas, coincida ya con la dirección 192.168.56.0/24. A mi me falló por el hecho de que había hecho unas pruebas de instalación en VirtualBox y no había borrado la interfaz. Lo mas normal es que todo vaya genial.

Pero oye, suponiendo que nos ocurre y queremos solucionarlo, tendremos que dirigirnos a VMWare:

Y observar la dirección de la interfaz donde queremos que se instale el laboratorio, en mi caso VMnet1 (Host-only):

Al ver esto simplemente tendremos que modificar el siguiente archivo de Vagrant que establece las IP de las máquinas:

Pero de nuevo, todo esto es si simplemente te ha petado la instalación. En un caso normal, la instalación seguirá sin problemas:

Aquí simplemente esperaremos que se instalen todas las máquinas.

Una vez acabe el proceso, antes de encenderlas, tendremos que asegurarnos que todos los equipos tienen la interfaz bien puesta:

  • GOAD-DC01
  • GOAD-DC02
  • GOAD-DC03
  • GOAD-SRV02
  • GOAD-SRV03
Si no haces esto, puede que las máquinas no te salgan en VMWare

Una vez nos aseguramos que todas las máquinas tienen esta interfaz, podemos encenderlas todas.

Una vez todas las máquinas del GOAD estén encendidas, vamos a preparar la máquina que nos servirá como provisión, es decir, la máquina que configurará todo el directorio activo y lo hará vulnerable. Para ello nos hará falta un equipo Linux, puede ser desde el Kali o Parrot que usemos de normal o una nueva máquina, yo por ejemplo usaré una Ubuntu.

  • Tened en cuenta que la máquina que vayáis a usar como provisión debe de tener acceso a internet y, al mismo tiempo, acceso a las máquinas del GOAD. Por lo que quizás debéis de ponerle dos interfaces al Linux:

Entonces, lo primero de todo, es clonar el repositorio de GOAD en esta máquina y dirigirnos a la ruta GOAD/ansible:

  • git clone https://github.com/Orange-Cyberdefense/GOAD

Nos hará falta una versión concreta de Python para la configuración, por tanto, para manejar mejor las versiones de Python y no afectar a lo que ya tengamos, instalaremos Miniconda:

  • wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

Y ejecutaremos el instalador:

  • bash Miniconda3-latest-Linux-x86_64.sh
    • Yo coloco el argumento -u para forzar la instalación debido a que ya tenia una previa.

Ya tenemos Miniconda instalado, ahora, instalaremos la versión 3.8 de Python que es la que nos hará falta y crearemos un entorno virtual que se llame ansible:

  • conda create -n ansible python=3.8

Una vez creado lo activamos:

  • conda activate ansible

Y ya estando en el entorno virtual con Python 3.8, instalaremos los siguientes paquetes:

  • python -m pip install ansible-core==2.12.6
  • python -m pip install pywinrm

Con estos paquetes instalados, es hora de instalar algunas dependencias de ansible:

  • ansible-galaxy install -r requirements.yml

Una vez hecho esto, el siguiente paso es OPCIONAL. En el caso de que no estemos usando el rango por defecto (192.168.56.0/24), por el error que nos puede dar que vimos al principio, tendremos que modificar las IP de los equipos en el siguiente archivo de configuración:

  • ../ad/GOAD/providers/vmware/inventory

Si al principio no nos dio ningún error, pues esto no lo hacemos y listo.

Despues de hacer todos estos preparativos, es hora de provisionar los equipos del AD (configurarlos), para ello, es tan simple como ejecutar el siguiente comando de ansible:

  • ansible-playbook -i ../ad/GOAD/data/inventory -i ../ad/GOAD/providers/vmware/inventory main.yml
    • De nuevo, la ruta puede varias según el tipo de laboratorio y software de virtualización que usemos.

Aquí me ha dado un error en el SRV02 pero el script ha seguido sin interrumpirse. ¿Qué ha pasado con esto? Pues que en todas las configuraciones generales que quedaban, el SRV02 no se incluía en ninguna, mientras que el DC01, DC02, DC03 y SRV03 si. Asimismo, las configuraciones específicas del SRV02 o no se ejecutaban o daban error (de nuevo, sin interrumpir el script):

Aquí a cada persona le puede dar un error distinto o que por el contrario todo funcione genial, dependerá de cada uno y cada uno tendrá que buscar la solución (sería raro que no existiese un issue ya en GitHub con el error que te haya dado).

Sea lo que sea, en mi caso, simplemente me aseguré de que en el SRV02, de DNS estuviese el DC02, y así era. Habiendo comprobado esto, volví a ejecutar el mismo comando y esta vez funcionó todo genial.

¡OJO! Yo ejecuté toda la configuración entera por segunda vez para asegurarme que no se quedara nada. Si por ejemplo a ti te ha dado un error distinto y mas específico, por ejemplo, un error al agregar usuarios solo. Puedes en vez de ejecutarte toda la configuración de nuevo, ejecutar solo la parte que te interesa, para ello tenemos que ejecutar el mismo comando de antes, pero modificando el main.yml por el archivo de configuración que queramos:

Que por ejemplo en este caso el comando quedaría tal que:

  • ansible-playbook -i ../ad/GOAD-Light/data/inventory -i ../ad/GOAD-Light/providers/vmware/inventory ad-members.yml

Esto solo por si se te da esa situación.

Volviendo a la instalación, finalmente a la segunda vuelta de ejecutar la configuración todo me funcionó genial sin fallos:

  • ansible-playbook -i ../ad/GOAD-Light/data/inventory -i ../ad/GOAD-Light/providers/vmware/inventory main.yml

Y ya teniendo todos los equipos configurados y encendidos, todos funcionaban genial:

Recuerda que, como he mencionado previamente, para que el Kali tenga acceso, o cualquier maquina desde donde quieras atacar lo tenga. Debes de añadir una interfaz de red en la misma red que el AD, en mi caso VMnet1:

Asimismo, si ves que no tienes IP, configúrala estáticamente en /etc/networks/interfaces:

Y listo y hechooo, con esto ya tendremos totalmente operativo el laboratorio de GOAD en Windows para testear y aprender con él : )

Para finalizar, como último regalito, dejo un texto con todas las credenciales de GOAD para cada equipo:

Dominio: sevenkingdoms.local
- Usuarios y Contraseñas:
    - tywin.lannister:powerkingftw135
    - jaime.lannister:cersei
    - cersei.lannister:il0vejaime
    - tyron.lannister:Alc00L&S3x
    - robert.baratheon:iamthekingoftheworld
    - joffrey.baratheon:1killerlion
    - renly.baratheon:lorastyrell
    - stannis.baratheon:Drag0nst0ne
    - petyer.baelish:@littlefinger@
    - lord.varys:W1sper$
    - maester.pycelle:MaesterOfMaesters

- Grupos y Permisos:
    - Administradores en dc01 (kingslanding):
        - Permisos para: robert.baratheon, cersei.lannister

Dominio: north.sevenkingdoms.local
- Usuarios y Contraseñas:
    - eddard.stark:FightP3aceAndHonor!
    - catelyn.stark:robbsansabradonaryarickon
    - robb.stark:sexywolfy
    - sansa.stark:345etrdfg
    - brandon.stark:iseedeadpeople
    - rickon.stark:Winter2022
    - hodor:hodor
    - jon.snow:iknownothing
    - samwell.tarly:Heartsbane
    - jeor.mormont:L0ngCl@w

- Grupos y Permisos:
    - Administradores en dc02 (winterfell):
        - Permisos para: eddard.stark, catelyn.stark, robb.stark
    - Administradores en srv02 (castelblack):
        - Permisos para: jeor.mormont

Dominio: essos.local
- Usuarios y Contraseñas:
    - daenerys.targaryen:BurnThemAll!
    - viserys.targaryen:GoldCrown
    - khal.drogo:horse
    - jorah.mormont:H0nnor!
    - missandei:fr3edom
    - drogon:Dracarys

- Grupos y Permisos:
    - Administradores en dc03 (meereen):
        - Permisos para: daenerys.targaryen
    - Administradores en srv03 (braavos):
        - Permisos para: khal.drogo

Resumen de Permisos Específicos:
- sevenkingdoms.local: Varios usuarios tienen permisos de administrador en 
  distintos equipos y algunos tienen derechos sobre grupos o usuarios específicos, como lord.varys con permisos GenericAll sobre Domain Admins.

- north.sevenkingdoms.local: Incluye vulnerabilidades y scripts específicos que apuntan a permisos ampliados o debilidades en la configuración de seguridad.

- essos.local: Demuestra una estructura administrativa centralizada con daenerys.targaryen como usuario clave y administrador, además de configuraciones específicas 
  de MSSQL y permisos detallados a nivel de ACLs.

Referencias

Comentarios en “Game of Active Directory (GOAD) en Windows

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Subir para arriba