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 passiveidentificando los hosts de la red, seguido de activela 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
Primero, dediquemos un tiempo a escuchar la red y ver qué sucede. Podemos usar Wiresharky TCPDumppara estar al tanto y ver qué hosts y tipos de tráfico de red podemos capturar. Esto es especialmente útil si el enfoque de evaluación es de "caja negra". Observamos algunas solicitudes y respuestas ARP , MDNS y otros paquetes básicos de capa 2 (al estar en una red conmutada, estamos limitados al dominio de difusión actual), algunos de los cuales podemos ver a continuación. Este es un excelente punto de partida que nos proporciona información sobre la configuración de red del cliente.
Desplácese hasta la parte inferior, genere el objetivo, conéctese al host de ataque Linux usando xfreerdpWireshark y active para comenzar a capturar tráfico.
Iniciar Wireshark en ea-attack01
sudo -E wiresharkLos paquetes ARP nos permiten conocer los hosts.
MDNS nos informa sobre el host.
Salida de Tcpdump
sudo tcpdump -i <interfaz de red>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.exeusuario], 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 MDNSy ARP. Ahora, utilicemos una herramienta llamada Responderpara analizar el tráfico de red y determinar si aparece algo más en el dominio.
Responder es una herramienta diseñada para escuchar, analizar y envenenar LLMNRsolicitudes NBT-NSy MDNSrespuestas. Tiene muchas más funciones, pero por ahora, solo la utilizamos en modo Analizar. Esto escuchará pasivamente la red y no enviará paquetes envenenados. Analizaremos esta herramienta con más detalle en secciones posteriores.
Iniciando Responder
sudo responder -I <interfaz de red> -A 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.
Fping nos proporciona una capacidad similar a la de la aplicación ping estándar, ya que utiliza solicitudes y respuestas ICMP para contactar e interactuar con un host. La principal ventaja de fping reside en su capacidad para enviar paquetes ICMP a una lista de varios hosts simultáneamente y su capacidad de scripting. Además, funciona de forma rotatoria, consultando los hosts cíclicamente en lugar de esperar a que regresen varias solicitudes a un solo host antes de continuar. Estas comprobaciones nos ayudarán a determinar si hay algo más activo en la red interna. ICMP no es una solución integral, pero es una forma sencilla de obtener una idea inicial de lo que existe. Otros puertos abiertos y protocolos activos pueden apuntar a nuevos hosts para su posterior análisis. Veámoslo en acción.
FPiing Controles activos
Aquí comenzaremos fpingcon algunas banderas: apara mostrar los objetivos que están vivos, spara imprimir estadísticas al final del escaneo, gpara generar una lista de objetivos de la red CIDR y qpara no mostrar resultados por objetivo.
fping -asgq <ip de la red>El comando anterior valida qué hosts están activos en la /23red 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 fpingcomando, 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 Controllersy 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.
sudo nmap -v -A -iL hosts.txt -oN full_network_scan.txtEl análisis -A (Opciones de análisis agresivo) realizará varias funciones. Una de las más importantes es una enumeración rápida de puertos conocidos, incluyendo servicios web, servicios de dominio, etc. En nuestro archivo hosts.txt, algunos resultados de Responder y fping se solaparon (encontramos el nombre y la dirección IP), por lo que, para simplificar, solo se introdujo la dirección IP en hosts.txt para el análisis.
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
Kerbrute puede ser una opción más discreta para la enumeración de cuentas de dominio. Aprovecha que los fallos de preautenticación de Kerberos no suelen generar registros ni alertas. Utilizaremos Kerbrute junto con las listas de jsmith.txtusuarios jsmith2.txtde Insidetrust . Este repositorio contiene diversas listas de usuarios que pueden ser extremadamente útiles al intentar enumerar usuarios sin autenticación. Podemos dirigir Kerbrute al controlador de dominio que encontramos anteriormente y alimentarlo con una lista de palabras. La herramienta es rápida y nos proporcionará resultados que nos permitirán saber si las cuentas encontradas son válidas o no, lo cual es un excelente punto de partida para lanzar ataques como la pulverización de contraseñas, que abordaremos en profundidad más adelante en este módulo.
Para empezar a usar Kerbrute, podemos descargar binarios precompilados para la herramienta y realizar pruebas desde Linux, Windows y Mac, o podemos compilarlos nosotros mismos. Esta suele ser la mejor práctica para cualquier herramienta que implementemos en un entorno cliente. Para compilar los binarios y usarlos en el sistema que elijamos, primero clonamos el repositorio:
Clonación del repositorio de Kerbrute en GitHub
sudo git clone https://github.com/ropnop/kerbrute.gitAl escribir make helpse nos mostrarán las opciones de compilación disponibles.
Opciones de comilación de listados
make helpPodemos elegir compilar solo un binario o escribir make ally 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
sudo make allEl directorio recién creado distcontendrá nuestros binarios compilados.
Listado de los binarios compilados en dist
ls 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
./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
echo $PATHMover el binario
sudo mv kerbrute_linux_amd64 /usr/local/bin/kerbruteAhora podemos escribir kerbrutedesde 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
kerbrute userenum -d <dominio> --dc <DC ip> wordlist.txt -o valid_ad_usersIdentificación de vulnerabilidades potenciales
La cuenta de sistema localNT AUTHORITY\SYSTEM es una cuenta integrada en los sistemas operativos Windows. Tiene el nivel de acceso más alto en el sistema operativo y se utiliza para ejecutar la mayoría de los servicios de Windows. También es muy común que los servicios de terceros se ejecuten en el contexto de esta cuenta de forma predeterminada. Una SYSTEMcuenta en un domain-joinedhost podrá enumerar Active Directory suplantando la cuenta del equipo, que es esencialmente otro tipo de cuenta de usuario. Tener acceso a nivel de SISTEMA dentro de un entorno de dominio es prácticamente equivalente a tener una cuenta de usuario de dominio.
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.
Abusar de un servicio que se ejecuta en el contexto de [nombre del servicio
SYSTEM account] o abusar deSeImpersonatelos privilegios de la cuenta de servicio mediante [nombre del servicio] . Este tipo de ataque es posible en sistemas operativos Windows antiguos, pero no siempre es posible con Windows Server 2019.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