Recientemente leía un artículo de byt3bl33d3r en el que afirmaba que el pentesting en el Directorio Activo es en la actualidad *relativamente* sencillo gracias a herramientas como Empire y BloodHound y, ciertamente, tiene toda la razón. Desde la irrupción de powershell los atacantes han encontrado una poderosa herramienta para evadir la seguridad en entornos Windows y han aparecido algunos toolkits ofensivos que facilitan enormemente la tarea. De hecho, os recomiendo que echéis un vistazo también al mod de Empire de nuestro compañero Luis Vacas que incluye nuevos e interesantes módulos.
Como comentamos, gracias a estos frameworks que usan powershell es posible hacerse con privilegios de administración con relativa facilidad y si eres pentester puedes encontrarte haciendo las mismas cosas una y otra vez. Por eso byt3bl33d3r pensó que era la hora de automatizar... y el resultado es espectacular y el sueño de todo script kiddie: la Estrella de la Muerte o Death Star, una herramienta de "botón gordo" que se encarga ella solita de obtener automáticamente el domain admin.
Antes de continuar y como recordatorio, decir que obtener el domain admin no debe ser la consecución final de un pentest porque existen otras tareas en la post-explotación como buscar recursos sensibles y otros activos vulnerables que puedan demostrar claramente hasta dónde podía haber impactado en la organización un ataque si se tratara de un compromiso real... pero tener un administrador de dominio, ¿facilitaría las cosas, verdad? ;)
Objetivos del proyecto e implementación
Originalmente el autor quería algo que sólo tomara la salida de BloodHound, analizarla, alimentarla a Empire y hacerla seguir la 'cadena'. Sin embargo, BloodHound parece que no tiene en cuenta las rutas que podrían lograrse habiendo escalado privilegios de dominio por ejemplo con las contraseñas de GPP en SYSVOL.
Así que quería una versión más "activa" de BloodHound con un comportamiento similar a un gusano. Además, Empire tiene la mayor parte de la funcionalidad principal de BloodHound cubierta entre todos sus módulos y, si no la tuviera, podía implementarse en un nuevo módulo (como por ej. el 'ACL attack path update').
Por eso decidió quedarse con Empire y automatizar todo usando su API RESTful. Esto también le daría la libertad de analizar la salida de un módulo como mejor le pareciera y tener más control sobre la lógica general y la retroalimentación del usuario.
¿Qué hace exactamente Death Star?
El siguiente diagrama de flujo detalla muy bien lo que hace Death Star:
Si ha auditado recientemente Active Directory, deberías estar familiarizado con prácticamente todo lo que figura en ese gráfico. Si no, ya sabes, comenta tus dudas.
Instalación
En la actualidad, para que Death Star funcione, es necesario instalar el fork de Empire de byt3bl33d3r, al menos hasta que incluyan lo necesario en el Github oficial (merge push request). El fork contiene algunas correcciones en el API y en la base de datos para que funcionen los scripts que interactúan con el API RESTful.
Death Star - https://github.com/byt3bl33d3r/DeathStar
Empire - https://github.com/byt3bl33d3r/Empire
Primero hay que clonar el repositorio anterior de Empire e instálalo de forma normal, luego ejecuta lo siguiente:
python empire --rest --username username --password password
Esto iniciará la consola de Empire y el servidor RESTful API.
Para que la Death Star funcione:
git clone https://github.com/byt3bl33d3r/DeathStar
# Death Star is written in Python 3
pip3 install -r requirements.txt
# Supply the username and password you started Empire's RESTful API with
./DeathStar.py -u username -p password
Si todo va bien, DeathStar creará un listener http y se pondrá en estado 'Polling for Agents': esto significa que estaremos autenticados en la API RESTful de Empire y DeathStar estará esperando al primer Agente.
Todo lo que necesitas ahora es un Agente en una máquina que pertenezca al dominio. Cómo hacerlo ya queda fuera de este artículo aunque se recomienda usar CrackMapExec...
Demo
Una vez que consigas el primer agente, Death Star se hará cargo y comenzará la magia...
A continuación se muestran un par de vídeos de Death Star obteniendo el Administrador del Dominio en dos escenarios diferentes.
En el primer vídeo, se elevan privilegios de dominio mediante la vulnerabilidad de las contraseñas GPP en SYSVOL, se propaga lateralmente a las máquinas al que se aplica la GPO utilizando las credenciales obtenidas y "aterriza" en una máquina con un administrador de dominio autenticado. Posteriormente va enumerando los procesos en ejecución y, con PSInject, se inyecta en un proceso que se ejecuta bajo la cuenta de administrador de dominio (explorer.exe por defecto) que nos arroja un agente que se ejecuta en ese contexto de seguridad:
Como comentamos, gracias a estos frameworks que usan powershell es posible hacerse con privilegios de administración con relativa facilidad y si eres pentester puedes encontrarte haciendo las mismas cosas una y otra vez. Por eso byt3bl33d3r pensó que era la hora de automatizar... y el resultado es espectacular y el sueño de todo script kiddie: la Estrella de la Muerte o Death Star, una herramienta de "botón gordo" que se encarga ella solita de obtener automáticamente el domain admin.
Antes de continuar y como recordatorio, decir que obtener el domain admin no debe ser la consecución final de un pentest porque existen otras tareas en la post-explotación como buscar recursos sensibles y otros activos vulnerables que puedan demostrar claramente hasta dónde podía haber impactado en la organización un ataque si se tratara de un compromiso real... pero tener un administrador de dominio, ¿facilitaría las cosas, verdad? ;)
Objetivos del proyecto e implementación
Originalmente el autor quería algo que sólo tomara la salida de BloodHound, analizarla, alimentarla a Empire y hacerla seguir la 'cadena'. Sin embargo, BloodHound parece que no tiene en cuenta las rutas que podrían lograrse habiendo escalado privilegios de dominio por ejemplo con las contraseñas de GPP en SYSVOL.
Así que quería una versión más "activa" de BloodHound con un comportamiento similar a un gusano. Además, Empire tiene la mayor parte de la funcionalidad principal de BloodHound cubierta entre todos sus módulos y, si no la tuviera, podía implementarse en un nuevo módulo (como por ej. el 'ACL attack path update').
Por eso decidió quedarse con Empire y automatizar todo usando su API RESTful. Esto también le daría la libertad de analizar la salida de un módulo como mejor le pareciera y tener más control sobre la lógica general y la retroalimentación del usuario.
¿Qué hace exactamente Death Star?
El siguiente diagrama de flujo detalla muy bien lo que hace Death Star:
Si ha auditado recientemente Active Directory, deberías estar familiarizado con prácticamente todo lo que figura en ese gráfico. Si no, ya sabes, comenta tus dudas.
Instalación
En la actualidad, para que Death Star funcione, es necesario instalar el fork de Empire de byt3bl33d3r, al menos hasta que incluyan lo necesario en el Github oficial (merge push request). El fork contiene algunas correcciones en el API y en la base de datos para que funcionen los scripts que interactúan con el API RESTful.
Death Star - https://github.com/byt3bl33d3r/DeathStar
Empire - https://github.com/byt3bl33d3r/Empire
Primero hay que clonar el repositorio anterior de Empire e instálalo de forma normal, luego ejecuta lo siguiente:
python empire --rest --username username --password password
Esto iniciará la consola de Empire y el servidor RESTful API.
Para que la Death Star funcione:
git clone https://github.com/byt3bl33d3r/DeathStar
# Death Star is written in Python 3
pip3 install -r requirements.txt
# Supply the username and password you started Empire's RESTful API with
./DeathStar.py -u username -p password
Si todo va bien, DeathStar creará un listener http y se pondrá en estado 'Polling for Agents': esto significa que estaremos autenticados en la API RESTful de Empire y DeathStar estará esperando al primer Agente.
Todo lo que necesitas ahora es un Agente en una máquina que pertenezca al dominio. Cómo hacerlo ya queda fuera de este artículo aunque se recomienda usar CrackMapExec...
Demo
Una vez que consigas el primer agente, Death Star se hará cargo y comenzará la magia...
A continuación se muestran un par de vídeos de Death Star obteniendo el Administrador del Dominio en dos escenarios diferentes.
En el primer vídeo, se elevan privilegios de dominio mediante la vulnerabilidad de las contraseñas GPP en SYSVOL, se propaga lateralmente a las máquinas al que se aplica la GPO utilizando las credenciales obtenidas y "aterriza" en una máquina con un administrador de dominio autenticado. Posteriormente va enumerando los procesos en ejecución y, con PSInject, se inyecta en un proceso que se ejecuta bajo la cuenta de administrador de dominio (explorer.exe por defecto) que nos arroja un agente que se ejecuta en ese contexto de seguridad:
En el segundo video, obtiene las credenciales del administrador del dominio usando Mimikatz y abusando de las relaciones de los administradores locales:
Hay que señalar que aunque estos dos vídeos se aprovechan de las credenciales de una manera u otra, es posible que Death Star obtenga los privilegios de administrador de dominio simplemente usando una combinación de relaciones de administrador local y PSInject sin usar nunca un conjunto de credenciales.
Cosas que podrían agregarse
Hay mucho más que se podría hacer con DeathStar: se podrían agregar más técnicas de escalado de privilegios de dominios, más métodos de movimiento lateral, la lógica podría ajustarse un poco más, se podría hacer algo de post-explotación y shenanigans SPN etc. La versión actual es definitivamente un primer borrador.
Un gran salto sería hacer SMB Named Pipe pivoting, de esta manera realmente se obtendría el comportamiento un gusano.
Conclusión
Death Star demuestra que la automatización de la obtención de derechos de administración de dominio en un entorno de Active Directory es una clara posibilidad al utilizar conjuntos de herramientas de código abierto existentes.
Un punto importante que menciona el autor y que le gustaría que todos reflexionemos: la herramienta la hizo en 3-4 días. Imaginaros lo que un montón de personas
Fuente: Automating the Empire with the Death Star: getting Domain Admin with a push of a button
Comentarios
Publicar un comentario