🔹¿Qué es Active Directory?
Active Directory es el sistema de gestión centralizada de identidad y recursos en una red. Es un conjunto de bases de datos y servicios que permiten organizar, almacenar y gestionar todos los objetos dentro de una red empresarial.
AD no solo organiza los recursos de la red, sino que también proporciona servicios como autenticación, autorización, políticas de seguridad, y gestión centralizada de los dispositivos y usuarios. Los Domain Controllers son los servidores que implementan y gestionan este servicio.
🔹¿Qué es un Domain Controller (DC)?
Un Domain Controller (DC) es un servidor que gestiona la autenticación y la autorización de los usuarios y dispositivos dentro de una red basada en Active Directory (AD). En otras palabras, un Domain Controller es un servidor que se encarga de verificar las credenciales de acceso y aplicar las políticas de seguridad para todos los usuarios y recursos que se encuentran en un dominio.
En un entorno de Active Directory, un Domain Controller realiza las siguientes funciones esenciales:
- Autenticación de usuarios: Verifica la identidad de los usuarios cuando intentan iniciar sesión en la red.
- Autorización: Determina qué recursos (archivos, impresoras, aplicaciones) puede acceder un usuario una vez autenticado.
- Gestión de políticas de seguridad: Aplica políticas como las contraseñas y restricciones de acceso definidas por los administradores.
- Replicación de datos: Los Domain Controllers replican la información contenida en el Active Directory a otros controladores de dominio, garantizando que todos los controladores tengan los mismos datos actualizados.
Los Domain Controllers generalmente exponen puertos específicos asociados con el Active Directory (AD) y otros servicios de Windows. Puedes usar Nmap para escanear los puertos más comunes de un DC.
🔹Puertos comunes de un DC:
- 53/UDP: DNS (Domain Name System) — El DNS es vital en un dominio y los DC suelen proporcionar servicios de resolución de nombres para los equipos del dominio.
- 88/TCP: Kerberos — Kerberos es un protocolo de autenticación usado por Active Directory.
- 135/TCP: MS RPC (Microsoft Remote Procedure Call) — Usado para varios servicios de administración remota.
- 389/TCP: LDAP (Lightweight Directory Access Protocol) — Utilizado para acceder al Active Directory.
- 636/TCP: LDAPS (LDAP Secure) — Versión segura de LDAP, cifrada.
- 445/TCP: Microsoft-DS (Direct-Hosted SMB) — Usado para compartir archivos, pero también para otros servicios de Windows.
- 3268/TCP: Global Catalog (GC) — Este puerto se usa para acceder a los Global Catalogs, que son una característica de Active Directory.
🔎 Fase de reconocimiento 🔍
Para los ejemplos de este artículo hemos utilizado la máquina Blazorized de la plataforma Hack The Box con la ip 10.10.11.22 y la dirección de DC blazorized.htb.
🤖 Rpcclient
Uso de la herramienta rpcclient para iniciar sesión sin autentificarse:
El comando rpcclient -U «» 10.10.11.22 -N se utiliza para conectarse a un servidor de la red mediante RPC (Remote Procedure Call), sin especificar un usuario (autenticación anónima o vacía).
rpcclient -U "" [Ip Víctima] -N
rpcclient -U "" 10.10.11.22 -N
Posibles resultados:
- Conexión exitosa: Si el servidor permite la conexión sin autenticación, ingresarás en un modo interactivo, donde podrás ejecutar varios comandos para interactuar con el servidor. Esto te permitirá obtener información sobre los recursos compartidos, usuarios, contraseñas, etc.
- Error de autenticación: Si el servidor requiere autenticación y no permite conexiones anónimas, recibirás un mensaje de error que indica que las credenciales son incorrectas o que la autenticación ha fallado.
- Conexión rechazada: Si el servidor no está expuesto a conexiones RPC o si el firewall está bloqueando el puerto adecuado, recibirás un error de conexión.
Algunos comandos útiles dentro de rpcclient:
Una vez dentro del modo interactivo, algunos comandos útiles que puedes ejecutar son:
- srvinfo: Obtiene información del servidor.
- netshareenum: Enumera los recursos compartidos del servidor.
- enumdomusers: Enumera los usuarios del dominio.
- enumgroups: Enumera los grupos en el dominio.
- getusername: Muestra el nombre de usuario actual.
- quit: Salir del modo interactivo.
🤖 CrackMapExec
Numerar usuarios mediante Crackmapexec:
CrackMapExec es una herramienta de automatización de tareas relacionadas con la explotación de SMB y otros servicios comunes de Windows. CME puede realizar diversas tareas, desde enumerar recursos y buscar vulnerabilidades hasta ejecutar comandos de manera remota en máquinas comprometidas.
crackmapexec smb [Dirección Víctima] -u '' --rid-brute
crackmapexec smb blazorized.htb -u '' --rid-brute
🤖 SmbClient
Intentar acceso sin credenciales mediante SmbClient:
El siguiente comando sirve para interactuar con un servidor SMB (Server Message Block) y obtener información sobre los recursos compartidos disponibles en una máquina remota sin proporcionar credenciales.
smbclient -L [Dirección Víctima]
smbclient -L 10.10.11.22 -N
Este comando enumera los recursos compartidos (carpetas, impresoras, etc.) en el servidor SMB que se encuentra en la dirección IP 10.10.11.22 sin necesidad de proporcionar un nombre de usuario o contraseña (por lo tanto, se intentará la autenticación anónima). Es una forma útil de obtener información sobre qué recursos SMB están disponibles en la red y si el servidor permite el acceso sin credenciales.
🤖 Smbmap
Listar información mediante Smbmap:
Otra forma de tratar de recopilar información a nivel de red es mediante la herramienta Smbmap.
smbmap -H [Dirección Víctima]
smbmap -H blazorized.htb
También podemos tratar de recopilar información sin credenciales mediante Smbmap especificando el usuario como null.
smbmap -H [Dirección Víctima] -u 'null'
smbmap -H blazorized.htb -u 'null'
🤖 Kerbrute
Enumerar usuario validos del dominio mediante Kerbrute:
Kerbrute es una herramienta que se especializa en realizar ataques de fuerza bruta a la autenticación Kerberos, específicamente para descubrir nombres de usuario válidos en un entorno de Active Directory.
Para tratar de listar usuario podemos utilizar la opción userenum de Kerbrute.
kerbrute userenum -d [Dominio] --dc [Ip Víctima] [Diccionario de Usuarios] -t 50
kerbrute userenum -d blazorized.htb --dc 10.10.11.22 /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt -t 50
En este caso utilizaremos el diccionario de Usuarios de la biblioteca Seclists y mediante la opción -t especificaremos que vamos a usar 50 hilos para agilizar el análisis.