{"id":120,"date":"2022-06-25T16:14:34","date_gmt":"2022-06-25T16:14:34","guid":{"rendered":"https:\/\/jsec-rt.com\/?p=120"},"modified":"2024-07-08T22:52:42","modified_gmt":"2024-07-09T02:52:42","slug":"rt-ataques-conocidos-sobre-kerberos-parte-2","status":"publish","type":"post","link":"https:\/\/jsec-rt.com\/index.php\/2022\/06\/25\/rt-ataques-conocidos-sobre-kerberos-parte-2\/","title":{"rendered":"RT &#8211; Ataques conocidos sobre Kerberos &#8211; Parte 2"},"content":{"rendered":"\n<p>En esta entrada, continuamos con algunos ataques conocidos sobre entornos de Active Directory utilizando Kerberos, principalmente movimiento lateral y persistencia.<\/p>\n\n\n\n<p>Una de las maneras mas conocidas y antiguas de movimiento lateral es Pass the hash, donde utilizamos el hash NTLM de un usuario para poder acceder a los recursos o equipos donde este tiene alg\u00fan nivel de privilegio.<\/p>\n\n\n\n<p>Como se vio en un post anterior, Pass the hash llega a ser bastante critico, ya que no es necesario que el atacante conozca la contrase\u00f1a del usuario para poder personificarlo, donde el impacto incrementa de manera exponencial cuando se utilizan cuentas de administradores locales, ya que, sin las herramientas correctas de monitoreo, ser\u00e1 complicado detectar este tipo de ataques.<\/p>\n\n\n\n<p>Cuando un atacante obtiene acceso a una cuenta de administraci\u00f3n local, podr\u00eda explotar PTH si se dan las siguientes condiciones:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Existen otros equipos donde el administrador local tiene la misma contrase\u00f1a que el usuario comprometido.<\/li><li>Los equipos Windows permiten la autenticaci\u00f3n remota utilizando cuentas locales.<\/li><li>Los usuarios administradores locales estan habilitados en los equipos.<\/li><\/ul>\n\n\n\n<p>Sin embargo, existen herramientas de monitoreo avanzado que podr\u00edan detectar posibles ataques de PTH, tanto a nivel de dominio como nivel local. (Ya que la autenticaci\u00f3n en PTH es usando administradores locales, los logs de acceso no son registrados en un controlador de dominio, se quedan en el equipo, por lo que un equipo de Blue Team tendr\u00eda que analizar los logs locales de los equipos internos, o implementar un SIEM para obtener toda esta informaci\u00f3n que no esta siendo almacenada en los controladores de dominio)<\/p>\n\n\n\n<p>Existen numerosos art\u00edculos de como detectar PTH o indicios que se pueden observar en los logs de acceso de los equipos respectivos que dan a entender que se esta realizando este ataque.<\/p>\n\n\n\n<p>Por este motivo, se presenta en este post una t\u00e9cnica un poco mas sigilosa que PTH, denominada Pass the ticket.<\/p>\n\n\n\n<p>El flujo de autenticaci\u00f3n por Kerberos es un poco complicado de explicar en pocas palabras (Aun no lo entiendo completamente como para escribir con confianza sobre eso), pero para este escenario, mantendremos las cosas simples.<\/p>\n\n\n\n<p>Cuando un usuario realiza autenticaci\u00f3n por Kerberos, como resultado, obtiene un Ticket, ya sea de servicio o un &#8220;ticket granting ticket (TGT)&#8221;, este ticket se podr\u00eda considerar como un documento de identidad, que puede ser utilizado en el dominio interno para acceder a ciertos recursos sin necesidad de autenticarse con usuario y contrase\u00f1a.<\/p>\n\n\n\n<p>Si un atacante llega a obtener control de uno de estos tickets, puede utilizarlos para personificar al usuario afectado y acceder a recursos internos del dominio como si fuera el due\u00f1o del ticket.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Escenario 1 &#8211; Pass the ticket<\/h2>\n\n\n\n<p>Para armar el escenario en nuestro Active Directory de pruebas, lo \u00fanico que necesitamos hacer es iniciar sesi\u00f3n en alg\u00fan equipo con m\u00faltiples usuarios, en este caso, &#8220;TECNOLOGIA01&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"692\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-19-1024x692.png\" alt=\"\" class=\"wp-image-121\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-19-1024x692.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-19-300x203.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-19-768x519.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-19.png 1202w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Ejemplo de m\u00faltiples sesiones activas utilizando &#8220;query user&#8221;<\/figcaption><\/figure>\n\n\n\n<p>Para este post, accedi al mismo equipo con el usuario &#8220;<strong>Administrator<\/strong>&#8220;, para fines demostrativos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Explotaci\u00f3n<\/h2>\n\n\n\n<p>Utilizaremos la suite de herramientas <strong>Impacket<\/strong> para la explotaci\u00f3n respectiva, incluyendo un script que automatiza la extracci\u00f3n de informaci\u00f3n.<\/p>\n\n\n\n<p>Como se menciono en anteriores posts, la informaci\u00f3n de autenticaci\u00f3n de dominio se almacena en memoria, a trav\u00e9s del proceso <strong>LSASS.EXE<\/strong>, por lo que si dumpeamos la informaci\u00f3n del proceso, podemos observar datos de autenticaci\u00f3n de los usuarios en el equipo.<\/p>\n\n\n\n<p>Para esta tarea, podemos utilizar m\u00faltiples m\u00e9todos:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Desde la GUI en el equipo Windows, volcar el proceso en el administrador de tareas.<\/li><li>Utilizar Procdump (procdump64, segun la arquitectura del OS) de Sysinternals para realizar el volcado. (procdump64.exe -accepteula -ma lsass.exe -o lsass.dmp)<\/li><li>Utilizar un modulo de crackmapexec (crackmapexec smb IP &#8230;&#8230; -M lsassy) *Creo que existe el modulo Procdump, no actualice crackmapexec.<\/li><li>Utilizar una DLL propia del sistema operativo: C:\\Windows\\System32\\rundll32.exe C:\\windows\\System32\\comsvcs.dll, MiniDump <strong>PID-LSASS<\/strong> C:\\temp\\lsass.dmp full<\/li><li>Otras herramientas (Processdump de Cisco Jabber, SQLDumper de MSSQL, mimikatz, etc.)<\/li><\/ul>\n\n\n\n<p>La herramienta que personalmente utilizo es un script llamado <strong>autoProc.py<\/strong>.<\/p>\n\n\n\n<p>Enlace: https:\/\/gist.github.com\/knavesec\/0bf192d600ee15f214560ad6280df556<\/p>\n\n\n\n<p>Depende de Impacket para su ejecucion correcta.<\/p>\n\n\n\n<p>Es necesario editar el script, para indicar la ruta correcta del binario procdump64.exe en tu equipo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"874\" height=\"324\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-20.png\" alt=\"\" class=\"wp-image-122\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-20.png 874w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-20-300x111.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-20-768x285.png 768w\" sizes=\"auto, (max-width: 874px) 100vw, 874px\" \/><\/figure>\n\n\n\n<p>Como estoy utilizando kali linux, aloje el binario en &#8220;\/home\/jsec\/tools\/procdump64.exe&#8221;<\/p>\n\n\n\n<p>Este script se autentica por wmiexec hacia el equipo, sube el binario, lo ejecuta, descarga el dump generado y elimina el binario respectivo, para luego procesarlo con <strong>pypykatz<\/strong> (Mimikatz escrito en Python, no con todas las funcionalidades, pero suficiente para extraer las credenciales y los tickets Kerberos).<\/p>\n\n\n\n<p>Validando que el script funciona.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"372\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-21.png\" alt=\"\" class=\"wp-image-123\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-21.png 902w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-21-300x124.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-21-768x317.png 768w\" sizes=\"auto, (max-width: 902px) 100vw, 902px\" \/><\/figure>\n\n\n\n<p>Como se vio en posts anteriores, conseguimos acceso administrativo en <strong>TECNOLOGIA01<\/strong> a trav\u00e9s del administrador local en <strong>ATENCION01<\/strong>, por lo que usaremos esa informaci\u00f3n para este escenario.<\/p>\n\n\n\n<p>Si ejecutamos <strong>autoProc.py<\/strong> en <strong>ATENCION01<\/strong>, obtendremos las sesiones almacenadas en el equipo y sus tickets de kerberos respectivos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"788\" height=\"811\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-22.png\" alt=\"\" class=\"wp-image-124\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-22.png 788w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-22-291x300.png 291w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-22-768x790.png 768w\" sizes=\"auto, (max-width: 788px) 100vw, 788px\" \/><\/figure>\n\n\n\n<p>Para tener un poco mas de orden, generaremos nuevos directorios para almacenar nuestros tickets.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"445\" height=\"275\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-23.png\" alt=\"\" class=\"wp-image-125\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-23.png 445w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-23-300x185.png 300w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/figure>\n\n\n\n<p>Cuando generamos el dump por <strong>autoProc.py<\/strong>, obtenemos la informaci\u00f3n de credenciales en memoria, pero no los tickets respectivos, para extraer los tickets, utilizaremos <strong>pypykatz <\/strong>nuevamente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"438\" height=\"649\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-24.png\" alt=\"\" class=\"wp-image-126\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-24.png 438w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-24-202x300.png 202w\" sizes=\"auto, (max-width: 438px) 100vw, 438px\" \/><\/figure>\n\n\n\n<p>Comando: pypykatz lsa minidump lsass.dmp -k <strong>RUTA-DE-EXTRACCION<\/strong><\/p>\n\n\n\n<p>Ejecutamos el comando, obtendremos la informaci\u00f3n nuevamente, pero al final del resultado indicara que se guardaron los tickets kerberos en la ruta especificada, si listamos el directorio donde se almaceno en la prueba realizada obtenemos la lista de tickets.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1006\" height=\"290\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-25.png\" alt=\"\" class=\"wp-image-127\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-25.png 1006w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-25-300x86.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-25-768x221.png 768w\" sizes=\"auto, (max-width: 1006px) 100vw, 1006px\" \/><\/figure>\n\n\n\n<p>Observamos m\u00faltiples tickets de servicio y TGTs, pero para dos usuarios, <strong>cosme.fulanito<\/strong> y <strong>ATENCION01$<\/strong> (Usuario del equipo que se uni\u00f3 al dominio).<\/p>\n\n\n\n<p>Ahora podemos usar esos tickets para personificar a cualquiera de los usuarios respectivos, pero sabemos que los mismos no son privilegiados, por lo que se repite la acci\u00f3n respectiva en el equipo <strong>TECNOLOGIA01<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"965\" height=\"689\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-26.png\" alt=\"\" class=\"wp-image-128\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-26.png 965w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-26-300x214.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-26-768x548.png 768w\" sizes=\"auto, (max-width: 965px) 100vw, 965px\" \/><\/figure>\n\n\n\n<p>Se obtiene un error similar al de anteriores posts, donde el antivirus se encuentra en ejecuci\u00f3n y bloquea el acceso a <strong>LSASS.EXE<\/strong>, por lo que repasando un poco, deshabilitaremos el mismo.<\/p>\n\n\n\n<p>El equipo cuenta con Windows Defender, por lo que se puede realizar la deshabilitaci\u00f3n desde la linea de comandos, ya sea desde una sesi\u00f3n interactiva, wmiexec, psexec o similares, el comando por Powershell es:<\/p>\n\n\n\n<p><strong>PS C:\\Windows\\System32> Set-MPPreference -disableRealTimeMonitoring $true<\/strong><\/p>\n\n\n\n<p>Una ves ejecutado el comando, volvemos a ejecutar <strong>autoProc.py<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"942\" height=\"719\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-27.png\" alt=\"\" class=\"wp-image-129\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-27.png 942w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-27-300x229.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-27-768x586.png 768w\" sizes=\"auto, (max-width: 942px) 100vw, 942px\" \/><\/figure>\n\n\n\n<p>Esta ves si obtenemos los contenidos de memoria, por lo que se procede a extraer los tickets respectivos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"479\" height=\"591\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-28.png\" alt=\"\" class=\"wp-image-130\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-28.png 479w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-28-243x300.png 243w\" sizes=\"auto, (max-width: 479px) 100vw, 479px\" \/><\/figure>\n\n\n\n<p>Listamos los tickets obtenidos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1017\" height=\"448\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-29.png\" alt=\"\" class=\"wp-image-131\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-29.png 1017w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-29-300x132.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-29-768x338.png 768w\" sizes=\"auto, (max-width: 1017px) 100vw, 1017px\" \/><\/figure>\n\n\n\n<p>Observamos que existen tickets de servicio y TGTs de dos usuarios adicionales, <strong>Service_BD<\/strong> y <strong>Administrator<\/strong>.<\/p>\n\n\n\n<p>Ahora, podemos usar el ticket del usuario <strong>Administrator<\/strong> para personificarlo.<\/p>\n\n\n\n<p>Realizamos una serie de pasos, ya que los tickets se encuentran en formato <strong>.kirbi<\/strong>, tenemos que convertirlos a formato <strong>.ccache<\/strong>, para que sean utilizables por Linux, luego exportamos los tickets como una variable de entorno y posteriormente los listamos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"229\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-30-1024x229.png\" alt=\"\" class=\"wp-image-132\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-30-1024x229.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-30-300x67.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-30-768x172.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-30.png 1143w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Comandos:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>kirbi2ccache TICKET-FORMATO-KIRBI.kirbi TICKET-CCACHE.ccache<\/li><li>export KRB5CCNAME=RUTA-TICKET-CCACHE<\/li><li>klist (Requiere instalar krb5-user)<\/li><\/ul>\n\n\n\n<p>Observamos que tenemos un ticket kerberos para el usuario <strong>Administrator<\/strong>, por lo que validaremos si el mismo es funcional.<\/p>\n\n\n\n<p>Intentaremos obtener una sesi\u00f3n de comandos utilizando <strong>wmiexec<\/strong> en el controlador de dominio.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"681\" height=\"799\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-31.png\" alt=\"\" class=\"wp-image-133\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-31.png 681w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-31-256x300.png 256w\" sizes=\"auto, (max-width: 681px) 100vw, 681px\" \/><\/figure>\n\n\n\n<p>Comando: impacket-wmiexec -k -no-pass DOMINIO\/USUARIO@HOSTNAME -debug<\/p>\n\n\n\n<p>El par\u00e1metro -k le indica a la herramienta que realice la autenticaci\u00f3n por Kerberos, usando el ticket que exportamos, -no-pass evita que la herramienta nos pida introducir la contrase\u00f1a del usuario, ya que la misma no es necesaria porque tenemos su ticket respectivo y -debug para observar los pasos que realiza y en caso de que falle, identificar la posible causa.<\/p>\n\n\n\n<p>El ticket es funcional y obtenemos acceso al controlador de dominio como el usuario Administrator, sin necesidad de conocer su contrase\u00f1a o su hash NTLM.<\/p>\n\n\n\n<p>Este es un vistazo rapido sobre el ataque Pass the ticket, que llega a ser un poco mas sigiloso.<\/p>\n\n\n\n<p>En algunos casos, al dumpear <strong>LSASS<\/strong>, vi que por alguna raz\u00f3n, el hash de usuarios privilegiados no se encontraba en el proceso respectivo, si se identificaba que el usuario hab\u00eda accedido al equipo recientemente, pero su hash no estaba almacenado, por lo que esta t\u00e9cnica si me permiti\u00f3 obtener su ticket y personificarlo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">PERSISTENCIA &#8211; GOLDEN TICKET<\/h2>\n\n\n\n<p>Aprovecharemos el hecho de que tenemos un ticket valido del usuario <strong>Administrator<\/strong> para personificarlo, un atacante siempre intentara obtener distintos m\u00e9todos de persistencia, uno de los mas conocidos es un Golden ticket, que de manera simplificada, es la creaci\u00f3n de un ticket de kerberos con privilegios de administraci\u00f3n del dominio, valido por 10 a\u00f1os que puede ser utilizado para tener persistencia total en la infraestructura.<\/p>\n\n\n\n<p>Para forjar estos tickets, se necesita la siguiente informaci\u00f3n.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Hash NTLM del usuario <strong>KRBTGT<\/strong><\/li><li>SID del dominio<\/li><li>Nombre completo del dominio<\/li><\/ul>\n\n\n\n<p>Para obtener esta informaci\u00f3n, utilizaremos el ticket obtenido previamente.<\/p>\n\n\n\n<p>Utilizando <strong>impacket-secretsdump<\/strong> para obtener el hash del usuario <strong>KRBTGT<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"827\" height=\"207\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-34.png\" alt=\"\" class=\"wp-image-136\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-34.png 827w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-34-300x75.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-34-768x192.png 768w\" sizes=\"auto, (max-width: 827px) 100vw, 827px\" \/><\/figure>\n\n\n\n<p>Comando: impacket-secretsdump -k -no-pass DOMINIO\/USUARIO@HOSTNAME -just-dc-user krbtgt<\/p>\n\n\n\n<p>El par\u00e1metro <strong>-just-dc-user <\/strong>indica a la herramienta que obtenga la informaci\u00f3n de un solo usuario, en lugar de dumpear todo el NTDS.dit<\/p>\n\n\n\n<p>Obtenemos el hash NTLM del usuario <strong>KRBTGT<\/strong>: 7f9b6cfb&#8230;&#8230;bf1<\/p>\n\n\n\n<p>Para extraer el SID del dominio, podemos utilizar otra herramienta de impacket.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"610\" height=\"591\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-35.png\" alt=\"\" class=\"wp-image-137\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-35.png 610w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-35-300x291.png 300w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/figure>\n\n\n\n<p>Comando: impacket-lookupsid  DOMINIO\/USUARIO:PASS@CONTROLADOR-DE-DOMINIO<\/p>\n\n\n\n<p>Para obtener esta informaci\u00f3n, no es necesario contar con un usuario administrador.<\/p>\n\n\n\n<p>Obtenemos el Domain SID: S-1-5-21&#8230;..13415<\/p>\n\n\n\n<p>Para el nombre completo del dominio, podemos utilizar un comando desde una sesi\u00f3n de Powershell, para simplificar las cosas, utilizaremos el ticket kerberos nuevamente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"848\" height=\"804\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-36.png\" alt=\"\" class=\"wp-image-138\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-36.png 848w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-36-300x284.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-36-768x728.png 768w\" sizes=\"auto, (max-width: 848px) 100vw, 848px\" \/><\/figure>\n\n\n\n<p>Comando: Get-WmiObject Win32_ComputerSystem<\/p>\n\n\n\n<p>Obtenemos el nombre del dominio completo: jsec.local<\/p>\n\n\n\n<p>Con esta informaci\u00f3n, ya podemos forjar nuestro propio Golden Ticket utilizando Impacket.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"238\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-37-1024x238.png\" alt=\"\" class=\"wp-image-139\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-37-1024x238.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-37-300x70.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-37-768x179.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-37.png 1160w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>impacket-ticketer -nthash HASH-KRBTGT -domain-sid SID -domain NOMBRE-COMPLETO-DOMINIO USUARIO<\/p>\n\n\n\n<p>En este caso, creamos un ticket para personificar al usuario &#8216;DC01$&#8217;, que es el usuario del controlador de dominio, obteniendo su ticket en el fichero &#8220;<strong>DC01$.ccache<\/strong>&#8220;.<\/p>\n\n\n\n<p>Exportamos el ticket con export KRB5CCNAME=&#8217;RUTA\/DC01$.ccache&#8217; y lo utilizamos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"702\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-38-1024x702.png\" alt=\"\" class=\"wp-image-140\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-38-1024x702.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-38-300x206.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-38-768x527.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-38.png 1126w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Obtenemos todos los hashes del dominio, confirmando que tenemos privilegios de Domain Admin.<\/p>\n\n\n\n<p>De igual manera, el usuario al cual vamos a personificar no importa, ya que es un ticket valido de administraci\u00f3n de dominio, incluso podemos especificar un usuario que ni existe en el dominio respectivo e igual tener control administrativo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"691\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-39-1024x691.png\" alt=\"\" class=\"wp-image-141\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-39-1024x691.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-39-300x203.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-39-768x518.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-39.png 1225w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Generamos un nuevo ticket con el usuario &#8220;<strong>goldenticket<\/strong>&#8220;, el cual no existe en el dominio interno, exportamos la variable de entorno y validamos el acceso, obteniendo de igual manera el acceso respectivo.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Estos son algunos ataques conocidos de Kerberos, principalmente para movimiento lateral y persistencia, en posts futuros exploraremos ataques un poco mas complicados (Constrained delegation, Domain Admin to Enterprise Admin, etc.).<\/p>\n\n\n\n<p>Espero que la informaci\u00f3n los ayude, saludos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta entrada, continuamos con algunos ataques conocidos sobre entornos de Active Directory utilizando Kerberos, principalmente movimiento lateral y persistencia. Una de las maneras mas conocidas y antiguas de movimiento lateral es Pass the hash, donde utilizamos el hash NTLM de un usuario para poder acceder a los recursos o <a href=\"https:\/\/jsec-rt.com\/index.php\/2022\/06\/25\/rt-ataques-conocidos-sobre-kerberos-parte-2\/\" class=\"btn-link\">Continue Reading<i class=\"ion-ios-arrow-right\"><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-120","post","type-post","status-publish","format-standard","hentry","category-p-rt"],"_links":{"self":[{"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/posts\/120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/comments?post=120"}],"version-history":[{"count":2,"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/posts\/120\/revisions"}],"predecessor-version":[{"id":143,"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/posts\/120\/revisions\/143"}],"wp:attachment":[{"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/media?parent=120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/categories?post=120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/tags?post=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}