¡Hola a todos! Hace tiempo que no subo nuevos posts.

Esta vez será una serie a manera de práctica y seguimiento del WriteUp de GOAD. Vamos a ir desde el reconocimiento hasta tomar control y análisis de una infraestructura de un Directorio Activo o Active Directory(AD). De manera general iré siguiendo la misma ruta pero modificando cosas que cambiaron y metiendo un poco de experiencia que tuve en el trabajo. No podré entrar en demasiado detalle técnico, o terminaría escribiendo un libro (¡o dos! 😄), así que tratare de poner recursos para que profundicen o busquen. Igual la sección de comentarios esta siempre disponible. Mi objetivo es introducir conceptos técnicos de forma clara y amigable para que cualquier principiante pueda seguir y aprender.

¿Qué es un AD?

Un directorio activo es una estructura jerárquica que almacena información sobre objetos en la red. Un servicio de directorio, como Active Directory Domain Services (AD DS), proporciona los métodos para almacenar datos de directorio y poner dichos datos a disposición de los usuarios y administradores de la red. Por ejemplo, AD DS almacena información acerca de las cuentas de usuario, como nombres, contraseñas, números de teléfono, etc., y permite que otros usuarios autorizados de la misma red tengan acceso a dicha información.

Un buen recurso y resumido sobre los AD pueden revisarlo en este link de HTB

Consideraciones Iniciales

Que es un Domain Controller(DC)?

Un controlador de dominio (Domain Controller) es un servidor clave en la infraestructura del Directorio Activo(AD) que gestiona la autenticación para los usuarios de la organización, así como las directivas de seguridad. En una infraestructura empresarial el controlador de dominio es uno de los elementos más críticos.

Los Controladores de Dominio son esenciales, ya que gestionan la autenticación y las políticas de seguridad en la red.

Estructura del laboratorio

  • Rango de Red: La red que exploraremos estará en el rango 192.168.56.0/24.

  • Estructura del AD:

  • 3 Dominios: Distribuidos en 2 bosques.

  • 3 Controladores de Dominio (DC): Cada uno correspondiente a un dominio.

    3 Dominios con dos bosques y en este caso teniendo tres Controladores de Dominio(Domain Controller o DC), osea un DC por cada Dominio.

Enumeración en la Red

Empecemos con un reconocimiento del laboratorio, buscando las IPs disponibles. Sin embargo, como se muestra en el writeup, existen dos formas de hacerlo. Mediante un escaneo directo a las IPs y otra un escaneo con NetExec.

Considerar que con el tipo de escaneo de NetExec solo se detectara si se tiene el protocolo respectivo activado. No como Nmap que escanea en busca de todos los puertos que se especifiquen.

Reconocimiento con NetExec(ex crackmapexec)

NetExec es una herramienta utilizada en el contexto de pruebas de penetración y auditorías de seguridad que permite entre otras cosas, ejecutar comandos de manera remota en máquinas de una red, incluyendo aquellas que forman parte de un dominio de Active Directory. Su función principal es facilitar la ejecución remota de comandos o scripts dentro de una red, especialmente en sistemas que forman parte de un dominio, todo ello a través de la red, sin necesidad de acceso físico.

*No iré muy a detalle de la sintaxis o todo lo que nos ayuda a hacer NetExec(ex crackmapexec), porque no es el objetivo del post. Si quieren una serie mas detallada solo de NetExec dejen en sus comentarios :)

Una técnica bastante rápida es usar este comando para poder ver las IPs de un rango en el que están maquinas del AD. Ademas de obtener nombres de los hosts, y dominios a los que pertenecen:

netexec smb 192.168.56.0/24

Este comando solo mostrará aquellos hosts con el protocolo SMB activo. Es ideal para empezar a conocer la red del AD.

Como mencioné al inicio, este resultado nos da mucha información útil. Con esto ahora sabemos:

  1. north.sevenkingdoms.local (2 IPs)
    • CASTELBLACK (windows server 2019) (signing false)
    • WINTERFELL (windows server 2019)
  2. sevenkingdoms.local (1 IP)
    • KINGSLANDING (windows server 2019)
  3. essos.local (2 IPs)
    • BRAAVOS (windows server 2016) (signing false)
    • MEEREEN (windows server 2016)

Mencionar que la configuración predeterminada de Microsoft asigna la firma de SMB como verdadera o requerida de forma predeterminada para los DCs. Por lo tanto, es probable que los servidores con esta opción activa sean los DC.

En un entorno seguro, la firma debe ser válida en todas partes para evitar la retransmisión NTLM o NTLM Relay.

Reconocimiento con NMAP

Nmap es una herramienta de escaneo de redes que nos ayuda a descubrir dispositivos o servicios activos en una red en la cual este a nuestro alcance. Al igual que con netexec no se entrara en mucho detalle sobre el funcionamiento, existen muchos blogs o recursos para aprender NMAP.

Un Controlador de Dominio(DC) suele tener los puertos 53 o 88 activos. Cual es el puerto 53? el de DNS y el 88 es de kerberos. Entonces nos basta con buscar hosts en nuestra red para encontrar los controladores de dominio escaneando uno de estos puertos:

nmap -Pn -p 53 192.168.56.0/24

En los resultados que obtenemos vemos 3 hosts con el puerto 53 abierto, por lo que serian muy posiblemente los DC.

Por que queremos identificar el DC? Es el principal objetivo dentro de una infraestructura de AD, por lo que si obtenemos un acceso de administración controlamos el dominio o con una cuenta de dominio podríamos sacar mayor información útil.

Ahora claro, siempre nos puede ayudar y servir un escaneo mas detallado con NMAP,pero en un entorno real puede no ser eficiente si buscas mantenerte sigiloso o si la red está muy saturada. Pero sino:

nmap -Pn -p- -sC -sV -oA full_scan_goad 192.168.56.10-12,22-23

Donde:

  • -Pn le dice a nmap que no haga ping durante el escaneo, para verificar que este vivo el host
  • -p- escanea los 65535 puertos en vez de los 1000 puertos por defecto que trae nmap
  • -sC ejecuta un script de reconocimiento básico sobre los hosts
  • -sV para obtener la versión del servicio
  • -oA escribe los resultados en 3 formatos de archivos (nmap clásico, grep, xml)
  • 192.168.56.10-12,22-23 le especificamos que escanee las IPs del 192.168.56.10 al 192.168.56.12, y luego del 192.168.56.22 al 192.168.56.23

Encontrando las IPs de los DCs con nslookup

Para confirmar si una IP corresponde a un DC, podemos utilizar nslookup. Por ejemplo, para el dominio sevenkingdoms(que lo vimos con netexec):

nslookup -type=srv _ldap._tcp.dc._msdcs.sevenkingdoms.local 192.168.56.10

Si recibes una respuesta, es una buena indicación de que se trata de un controlador de dominio.(DC). Como en la imagen:

Si este no responde como en la imagen, podríamos sugerir que no es un DC del dominio.

Ahora te toca hacerlo con el resto de servidores!

Configuración Básica en Linux

Ahora que ya identificamos los DC, debemos configurar su dirección en nuestra máquina para poder interactuar con ellos de manera eficiente.

Configurar DNS

Edita el archivo /etc/hosts para asociar direcciones IP con nombres de host:

# /etc/hosts
# GOAD
192.168.56.10   sevenkingdoms.local kingslanding.sevenkingdoms.local kingslanding
192.168.56.11   winterfell.north.sevenkingdoms.local north.sevenkingdoms.local winterfell
192.168.56.12   essos.local meereen.essos.local meereen
192.168.56.22   castelblack.north.sevenkingdoms.local castelblack
192.168.56.23   braavos.essos.local braavos

Configurar Kerberos

Para utilizar kerberos en nuestro entorno Linux haremos algunas configuraciones. Primero instalar un cliente de kerberos.

sudo apt update
sudo apt install krb5-user

Si krb5-user ya está instalado podemos reconfigurarlo con (dpkg-reconfigure o modificando /etc/krb5.conf). Sea como fuere para configurarlo podemos usar este comando.

dpkg-reconfigure krb5-config

Esto te permitirá integrar tu entorno Linux con los servicios de AD y Kerberos.

Durante la configuración nos pedirá datos para la relación de autenticacion que tendrá, en nuestro paso lo haremos para el dominio essos:

realm : ESSOS.LOCAL
el resto de servidores : MEEREEN.ESSOS.LOCAL

Hasta aquí llega esta primera parte del reconocimiento atacando a Active Directory 🔍🎯

Hemos dado los primeros pasos para entender el entorno y sentar las bases para los siguientes movimientos dentro del dominio.

En la próxima entrega, nos enfocaremos en la enumeración de usuarios, una fase clave para identificar objetivos dentro del AD y planear los siguientes vectores de ataque.

¡Nos vemos pronto en la siguiente parte!

-Hackers are people too 😜

Y si tienes dudas, sugerencias o simplemente quieres compartir tu experiencia, los comentarios están abiertos 👇💬