Initial Enumeration of the Domain
Tareas
Nuestras tareas a realizar para esta sección son:
Enumere la red interna, identificando hosts, servicios críticos y posibles vías para establecerse.
Esto puede incluir medidas activas y pasivas para identificar usuarios, hosts y vulnerabilidades que podamos aprovechar para mejorar nuestro acceso.
Documentar cualquier hallazgo que encontremos para su posterior uso. ¡Extremadamente importante!
Comenzaremos desde nuestro host de ataque Linux sin credenciales de usuario de dominio. Es común iniciar una prueba de penetración de esta manera. Muchas organizaciones querrán ver qué puede hacer desde una perspectiva ciega, como esta, antes de proporcionarle más información para la prueba. Esto ofrece una visión más realista de las posibles vías que un adversario podría usar para infiltrarse en el dominio. Puede ayudarles a ver qué podría hacer un atacante si obtiene acceso no autorizado a través de internet (es decir, un ataque de phishing), acceso físico al edificio, acceso inalámbrico externo (si la red inalámbrica toca el entorno de AD) o incluso un empleado deshonesto. Dependiendo del éxito de esta fase, el cliente podría proporcionarnos acceso a un host unido al dominio o a un conjunto de credenciales para la red para agilizar las pruebas y permitirnos cubrir la mayor cantidad de terreno posible.
A continuación, se presentan algunos de los puntos de datos clave que debemos buscar en este momento y anotar en nuestra herramienta de toma de notas preferida y guardar la salida del escaneo/herramienta en archivos siempre que sea posible.
Puntos de datos clave
Punto de datos
Descripción
AD Users
Estamos intentando enumerar cuentas de usuarios válidas que podemos utilizar para rociar contraseñas.
AD Joined Computers
Las computadoras clave incluyen controladores de dominio, servidores de archivos, servidores SQL, servidores web, servidores de correo Exchange, servidores de bases de datos, etc.
Key Services
Kerberos, NetBIOS, LDAP, DNS
Vulnerable Hosts and Services
Cualquier cosa que pueda ser una victoria rápida (es decir, un host fácil de explotar y ganar un punto de apoyo).
TTPs
Enumerar un entorno de AD puede ser abrumador si se aborda sin un plan. AD almacena una gran cantidad de datos, y filtrarlos puede llevar mucho tiempo si no se analizan en etapas progresivas, y es probable que pasemos por alto algunos. Necesitamos establecer un plan de acción y abordarlo paso a paso. Cada persona trabaja de forma ligeramente diferente, así que a medida que adquirimos más experiencia, comenzaremos a desarrollar nuestra propia metodología repetible que mejor se adapte a nuestras necesidades. Independientemente de cómo procedamos, normalmente comenzamos desde el mismo punto y buscamos los mismos datos. Experimentaremos con diversas herramientas en esta sección y en las siguientes. Es importante reproducir cada ejemplo e incluso intentar recrearlo con diferentes herramientas para ver cómo funcionan de forma diferente, aprender su sintaxis y encontrar el enfoque que mejor se adapte a nuestras necesidades.
Comenzaremos passive
identificando los hosts de la red, seguido de active
la validación de los resultados para obtener más información sobre cada uno (servicios en ejecución, nombres, posibles vulnerabilidades, etc.). Una vez que sepamos qué hosts existen, podemos proceder a sondearlos en busca de cualquier dato interesante que podamos obtener de ellos. Tras completar estas tareas, deberíamos reorganizarnos y analizar la información disponible. En este punto, esperamos tener un conjunto de credenciales o una cuenta de usuario para establecernos en un host unido al dominio o poder iniciar la enumeración de credenciales desde nuestro host de ataque Linux.
Veamos algunas herramientas y técnicas que nos ayudarán con esta enumeración.
Identificación de hosts
Desplácese hasta la parte inferior, genere el objetivo, conéctese al host de ataque Linux usando xfreerdp
Wireshark y active para comenzar a capturar tráfico.
Iniciar Wireshark en ea-attack01
Los paquetes ARP nos permiten conocer los hosts.
MDNS nos informa sobre el host.
Salida de Tcpdump
No existe una única forma correcta de escuchar y capturar el tráfico de red. Existen numerosas herramientas que pueden procesar datos de red. Wireshark y tcpdump son solo algunas de las más fáciles de usar y conocidas. Dependiendo del host que utilice, es posible que ya tenga una herramienta de monitorización de red integrada, como [insertar nombre de pktmon.exe
usuario], que se añadió a todas las ediciones de Windows 10. Como nota para las pruebas, siempre es recomendable guardar el tráfico PCAP capturado. Puede revisarlo más tarde para buscar más sugerencias, y es una excelente información adicional para incluir al redactar sus informes.
Nuestro primer análisis del tráfico de red nos indicó un par de hosts a través de MDNS
y ARP
. Ahora, utilicemos una herramienta llamada Responder
para analizar el tráfico de red y determinar si aparece algo más en el dominio.
Iniciando Responder
Resultado del resonder
Al iniciar Responder con el modo de análisis pasivo habilitado, veremos el flujo de solicitudes en nuestra sesión. Observe a continuación que encontramos algunos hosts únicos no mencionados previamente en nuestras capturas de Wireshark. Vale la pena anotarlos, ya que estamos creando una buena lista de IP y nombres de host DNS.
Nuestras comprobaciones pasivas nos han proporcionado algunos hosts que debemos anotar para una enumeración más exhaustiva. Ahora, realicemos algunas comprobaciones activas, comenzando con un barrido ICMP rápido de la subred usando fping
.
FPiing Controles activos
Aquí comenzaremos fping
con algunas banderas: a
para mostrar los objetivos que están vivos, s
para imprimir estadísticas al final del escaneo, g
para generar una lista de objetivos de la red CIDR y q
para no mostrar resultados por objetivo.
El comando anterior valida qué hosts están activos en la /23
red y lo hace de forma discreta, en lugar de saturar la terminal con resultados para cada IP de la lista de objetivos. Podemos combinar los resultados exitosos con la información obtenida de nuestras comprobaciones pasivas en una lista para un análisis más detallado con Nmap. Con el fping
comando, podemos ver 9 hosts activos, incluyendo el host de ataque.
Escaneo de Nmap
Ahora que tenemos una lista de hosts activos en nuestra red, podemos enumerarlos con más detalle. Buscamos determinar qué servicios ejecuta cada host, identificar hosts críticos como Domain Controllers
y web servers
, e identificar hosts potencialmente vulnerables para investigarlos posteriormente. Centrándonos en AD, tras un análisis general, sería prudente centrarnos en los protocolos estándar que suelen acompañar a los servicios de AD, como DNS, SMB, LDAP y Kerberos, por nombrar algunos. A continuación, se muestra un ejemplo rápido de un análisis sencillo con Nmap.
Identificación de usuarios
Si nuestro cliente no nos proporciona un usuario para iniciar las pruebas (lo cual suele ocurrir), tendremos que encontrar la manera de establecernos en el dominio mediante la obtención de credenciales de texto sin cifrar o un hash de contraseña NTLM para un usuario, un shell de SISTEMA en un host unido al dominio o un shell en el contexto de una cuenta de usuario del dominio. Obtener un usuario válido con credenciales es fundamental en las primeras etapas de una prueba de penetración interna. Este acceso (incluso en el nivel más bajo) abre muchas oportunidades para realizar enumeraciones e incluso ataques. Veamos una forma de comenzar a recopilar una lista de usuarios válidos en un dominio para usarla más adelante en nuestra evaluación.
Kerbrute - Enumeración interna de nombres de usuario de AD
Clonación del repositorio de Kerbrute en GitHub
Al escribir make help
se nos mostrarán las opciones de compilación disponibles.
Opciones de comilación de listados
Podemos elegir compilar solo un binario o escribir make all
y compilar uno para usar en sistemas Linux, Windows y Mac (una versión x86 y x64 para cada uno).
Compilación para múltiples plataformas y arquitecturas
El directorio recién creado dist
contendrá nuestros binarios compilados.
Listado de los binarios compilados en dist
Luego podemos probar el binario para asegurarnos de que funciona correctamente. Usaremos la versión x64 en el host de ataque Parrot Linux proporcionado en el entorno objetivo.
Prueba del binario kerbrute_linux_amd64
Podemos agregar la herramienta a nuestro PATH para que sea fácilmente accesible desde cualquier lugar del host.
Añadiendo la herramienta a nuestra ruta
Mover el binario
Ahora podemos escribir kerbrute
desde cualquier ubicación del sistema y acceder a la herramienta. Siéntete libre de seguir las instrucciones en tu sistema y practicar los pasos anteriores. Ahora veamos un ejemplo del uso de la herramienta para recopilar una lista inicial de nombres de usuario.
Enumeración de usuarios con Kerbrute
Identificación de vulnerabilidades potenciales
Hay varias formas de obtener acceso a nivel de SISTEMA en un host, incluidas, entre otras:
Exploits remotos de Windows como MS08-067, EternalBlue o BlueKeep.
Fallas de escalada de privilegios locales en sistemas operativos Windows, como el día cero del Programador de tareas de Windows 10.
Obtener acceso de administrador en un host unido a un dominio con una cuenta local y usar Psexec para iniciar una ventana de comandos SYSTEM
Al obtener acceso a nivel de SISTEMA en un host unido a un dominio, podrá realizar acciones como, entre otras:
Enumere el dominio utilizando herramientas integradas o herramientas ofensivas como BloodHound y PowerView.
Realizar ataques Kerberoasting / ASREPRoasting dentro del mismo dominio.
Ejecute herramientas como Inveigh para recopilar hashes Net-NTLMv2 o realizar ataques de retransmisión SMB.
Realizar una suplantación de token para secuestrar una cuenta de usuario de dominio privilegiado.
Realizar ataques ACL.
Last updated