{"id":89,"date":"2022-06-06T05:02:52","date_gmt":"2022-06-06T05:02:52","guid":{"rendered":"https:\/\/jsec-rt.com\/?p=89"},"modified":"2024-07-08T22:52:32","modified_gmt":"2024-07-09T02:52:32","slug":"rt-ataques-conocidos-sobre-kerberos-parte-1","status":"publish","type":"post","link":"https:\/\/jsec-rt.com\/index.php\/2022\/06\/06\/rt-ataques-conocidos-sobre-kerberos-parte-1\/","title":{"rendered":"RT &#8211; Ataques conocidos sobre Kerberos &#8211; Parte 1"},"content":{"rendered":"\n<p>Una parte importante de los mecanismos y protocolos de autenticaci\u00f3n utilizados por Active Directory es Kerberos, que de manera resumida, establece un canal de autenticacion seguro entre hosts confiables en una red no confiable.<\/p>\n\n\n\n<p>Se puede listar algunos de los objetivos que tiene un proceso de autenticaci\u00f3n con Kerberos.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Las passwords no se transmiten a traves de la red.<\/li>\n\n\n\n<li>Las passwords no se almacenan en los sistemas operativos de clientes y se deben descartar de manera inmediata despues de su uso.<\/li>\n\n\n\n<li>Las passwords no se almacenan en texto claro, aun en los servidores de autenticaci\u00f3n.<\/li>\n\n\n\n<li>Una password se ingresa una sola ves por sesion, similar a un proceso de SSO (Single Sign-on), ya que se requiere la autenticaci\u00f3n de un usuario una sola ves, permitiendole el acceso a los recursos autorizados para este.<\/li>\n\n\n\n<li>Toda la informaci\u00f3n de autenticaci\u00f3n se centraliza en un servidor de autenticaci\u00f3n. Los servidores de aplicaci\u00f3nes no almacenan nada de informaci\u00f3n de autenticacion, permitiendo implementar las siguientes caracteristicas:\n<ul class=\"wp-block-list\">\n<li>Un administrador puede deshabilitar la autorizacion para un usuario sobre cualquier servidor de aplicaciones desde el servidor centralizado de autenticacion. El acceso a servidores individuales no es necesario para revocar la autorizaci\u00f3n.<\/li>\n\n\n\n<li>Una passwords de un usuario es suficiente para acceder a todos los servicios autenticados por Kerberos. Un usuario puede resetear su pass una sola ves, sin importar la cantidad de servicios en los que esta autenticado.<\/li>\n\n\n\n<li>Se simplifica la protecci\u00f3n de la informaci\u00f3n de usuarios ya que toda la informaci\u00f3n de autenticacion se encuentra en un servidor centralizado en lugar de multiples servidores donde el usuario tiene acceso.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Todas las partes, usuarios y servidores de aplicaciones, deben autenticarse entre ellos cuando se requiera. Los usuarios se autentican al iniciar una sesi\u00f3n, servicios de las aplicaciones pueden ser configurados para solicitar autenticaci\u00f3n hacia el cliente.<\/li>\n\n\n\n<li>Kerberos provee un mecanismo para clientes y servidores que permite estableecer un circuito cifrado con el fin de que las comunicaciones en red sean privadas.<\/li>\n<\/ul>\n\n\n\n<p>Con estos objetivos listados, se pueden identificar ciertos puntos interesantes, desde el punto de vista de un atacante:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Comprometer una cuenta de dominio que tenga acceso a servicios autenticados por Kerberos nos da practicamente control sobre los servicios respectivos y posiblemente sus servidores.<\/li>\n\n\n\n<li>Un usuario puede tener acceso a m\u00faltiples servicios.<\/li>\n\n\n\n<li>Es posible que las cuentas utilizadas sean cuentas de servicios, por lo que existe la posibilidad de que las passwords utilizadas no hayan sido cambiadas en mucho tiempo o sean de baja complejidad.<\/li>\n\n\n\n<li>Son un protocolo distinto, por lo que es posible que procesos de monitoreo sobre intentos de autenticaci\u00f3n en el active directory no esten monitoreando autenticaciones por Kerberos.<\/li>\n<\/ul>\n\n\n\n<p>A continuaci\u00f3n, se presentan algunas de las &#8220;vulnerabilidades&#8221; m\u00e1s conocidas sobre Kerberos, denominado Kerberoasting.<\/p>\n\n\n\n<p>M\u00e1s informaci\u00f3n sobre Kerberoasting en el siguiente enlace:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-ciberseguridad wp-block-embed-ciberseguridad\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"65D804MC8d\"><a href=\"https:\/\/ciberseguridad.com\/amenzas\/ataques-kerberoasting\/\">Ataques de kerberoasting: definici\u00f3n, c\u00f3mo funcionan y t\u00e9cnicas de mitigaci\u00f3n<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u00abAtaques de kerberoasting: definici\u00f3n, c\u00f3mo funcionan y t\u00e9cnicas de mitigaci\u00f3n\u00bb \u2014 Ciberseguridad\" src=\"https:\/\/ciberseguridad.com\/amenzas\/ataques-kerberoasting\/embed\/#?secret=65D804MC8d\" data-secret=\"65D804MC8d\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Todos los creditos al autor original del post.<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tickets SPN<\/h2>\n\n\n\n<p>\u00bfQue es SPN?<\/p>\n\n\n\n<p>Service Principal Name (SPN), es un identificador unico de una instancia de un servicio especifico. Son utilizados por la autenticacion por Kerberos para asociar una instancia de servicio con una cuenta de domino de servicio.<\/p>\n\n\n\n<p>Utilizando el Active Directory de pruebas que montamos en un anterior post, generaremos tickets SPN para 2 usuarios distintos y luego desde un equipo Kali consultaremos por los mismos y realizaremos el proceso de crackeo.<\/p>\n\n\n\n<p>Accedemos al controlador de dominio como administrador de dominio y ejecutamos Powershell con privilegios administrativos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-1024x640.png\" alt=\"\" class=\"wp-image-90\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-1024x640.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-300x187.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-768x480.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image.png 1521w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>El comando que utilizaremos es &#8220;SetSPN&#8221;, cmdlet propio de Powershell.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"658\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-1-1024x658.png\" alt=\"\" class=\"wp-image-91\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-1-1024x658.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-1-300x193.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-1-768x493.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-1.png 1482w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Tenemos multiples opciones, todas documentadas, pero para nuestro ejercicio, utilizaremos la opci\u00f3n &#8220;-A&#8221;, que nos permitira crear un ticket para un usuario en el dominio interno.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"647\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-2-1024x647.png\" alt=\"\" class=\"wp-image-92\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-2-1024x647.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-2-300x190.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-2-768x485.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-2.png 1518w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Comando:<\/strong> SetSPN -A MSSQLSvc\/BD01.jsec.local:1433 JSEC\\Administrator<\/p>\n\n\n\n<p>De esta manera, creamos un SPN para el usuario &#8220;Administrator&#8221;, ahora crearemos otro para un nuevo usuario llamado &#8220;Service_BD&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"645\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-3-1024x645.png\" alt=\"\" class=\"wp-image-93\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-3-1024x645.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-3-300x189.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-3-768x484.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-3.png 1514w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>En la captura se obtuvo un error al ejecutar el comando &#8220;Duplicate SPN Found, aborting operation!&#8221;, esto se debe a que se intento crear un nuevo SPN para una instancia de servicio que ya tiene un SPN asignado, ya que los tickets SPN asocian una instancia de servicio a una cuenta de dominio de servicio, no se puede definir un nuevo ticket, seria como si le dijeramos al dominio que se esta iniciando una sola sesi\u00f3n en el servicio con dos usuarios distintos.<\/p>\n\n\n\n<p>Con los tickets ya creados, utilizaremos &#8220;Impacket&#8221; para obtener los tickets respectivos y sus valores cifrados, que pueden ser crackeados para obtener contrase\u00f1as validas.<\/p>\n\n\n\n<p>Cabe destacar que es necesario contar con una cuenta de dominio v\u00e1lida para poder comunicarse con el controlador de dominio y consultar los tickets respectivos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"273\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-4-1024x273.png\" alt=\"\" class=\"wp-image-94\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-4-1024x273.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-4-300x80.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-4-768x205.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-4.png 1378w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Comando:<\/strong> impacket-GetUserSPNs DOMINIO\/USUARIO:PASSWORD -dc-ip IP-Controlador-de-dominio<\/p>\n\n\n\n<p>Utilizando una cuenta de bajos privilegios, se obtiene la lista de tickets registrados, para el usuario &#8220;Administrator&#8221; y &#8220;Service_BD&#8221;, sin embargo, no observamos ningun valor cifrado que podamos guardar en un archivo de texto y luego intentar crackear, para solicitar el valor del ticket respectivo agregamos el parametro &#8220;-request&#8221; al comando utilizado.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"251\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-5-1024x251.png\" alt=\"\" class=\"wp-image-96\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-5-1024x251.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-5-300x74.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-5-768x188.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-5-1536x376.png 1536w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-5.png 1889w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Nota: Si al ejecutar el comando obtienen un error similar a &#8220;clock_skew_too_great&#8221;, deben sincronizar la hora de su kali con la hora del controlador de dominio.<\/p>\n\n\n\n<p>El comando que me soluciona el problema sin falla es &#8220;sudo rdate -n IP-DC&#8221;<\/p>\n\n\n\n<p>De esta manera, ya tenemos los tickets TGS respectivos, por lo que podemos proceder al crackeo de los mismos.<\/p>\n\n\n\n<p>La herramienta que utilizo mayormente es Hashcat, ya que permite utilizar la GPU de un equipo para crackear hashes de manera m\u00e1s rapida.<\/p>\n\n\n\n<p>Utilizando un diccionario de palabras, realizamos el crackeo respectivo (Para agilizar las pruebas, se agrego la contrase\u00f1a del usuario respectivo al fichero rockyou.txt).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"531\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-9-1024x531.png\" alt=\"\" class=\"wp-image-101\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-9-1024x531.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-9-300x156.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-9-768x398.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-9.png 1084w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Comando: <\/strong>hashcat -m TIPO-DE-HASH<strong>(*)<\/strong> FICHERO_HASHES DICCIONARIO<\/p>\n\n\n\n<p>(*) Para obtener una lista de los tipos de hash aceptados por hashcat, se puede utilizar la flag &#8220;-h&#8221;.<\/p>\n\n\n\n<p>Cabe destacar que los hashes deben estar en un formato especifico, en el siguiente enlace se encuentra una lista con hashes de ejemplo para cada valor de &#8220;-m&#8221; (documentaci\u00f3n oficial de la herramienta).<\/p>\n\n\n\n<p><a href=\"https:\/\/hashcat.net\/wiki\/doku.php?id=example_hashes\">https:\/\/hashcat.net\/wiki\/doku.php?id=example_hashes<\/a><\/p>\n\n\n\n<p>Esperamos un par de segundos hasta que la herramienta termine el crackeo, obteniendo la contrase\u00f1a del usuario &#8220;Service_BD&#8221; en texto claro.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"564\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-8-1024x564.png\" alt=\"\" class=\"wp-image-100\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-8-1024x564.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-8-300x165.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-8-768x423.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-8.png 1455w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>El nombre indica que esta cuenta de dominio estaba asociada a una base de datos, por lo que podemos validar si la misma tiene acceso administrativo sobre el servidor &#8220;BD01&#8221;, identificado en posts anteriores.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"307\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image_2022-06-06_003254461-1024x307.png\" alt=\"\" class=\"wp-image-99\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image_2022-06-06_003254461-1024x307.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image_2022-06-06_003254461-300x90.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image_2022-06-06_003254461-768x230.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image_2022-06-06_003254461.png 1352w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>De esta manera observamos que si tenemos acceso administrativo sobre el servidor, permitiendo realizar movimiento lateral y extracci\u00f3n de informaci\u00f3n del mismo.<\/p>\n\n\n\n<p><strong>Nota:<\/strong> Cabe destacar que la posibilidad de consultar los tickets SPN utilizando una cuenta de dominio de bajos privilegios no se considera una vulnerabilidad, ya que es el funcionamiento regular de un Active Directory, las vulnerabilidades principales en estos casos son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Uso de credenciales d\u00e9biles, ya que se pudo crackear el TGS.<\/li>\n\n\n\n<li>El usuario de servicio cuenta con privilegios excesivos sobre el servidor de base de datos.<\/li>\n\n\n\n<li>Se utilizan usuarios administradores de dominio o con privilegios excesivos para generar los tickets y\/o levantar servicios en el dominio, se deberian utilizar usuarios creados especificamente para los servicios internos, no se recomienda utilizar un administrador de dominio.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Pre-autenticacion Kerberos deshabilitada.<\/h2>\n\n\n\n<p>Existe la posibilidad de configurar el servicio de Kerberos para que, para una cuenta especifica, no se requiera realizar la pre-autenticacion antes de generar el TGS para el usuario respectivo, si se da este caso, un atacante podria solicitar el ticket de un usuario sin necesidad de conocer su contrase\u00f1a, para luego intentar crackear el mismo y obtener control sobre la cuenta respectiva.<\/p>\n\n\n\n<p>Para armar este escenario en nuestro Active Directory de pruebas, seguimos los siguientes pasos.<\/p>\n\n\n\n<p>Accedemos al controlador de dominio, a la ventana de gestion de usuarios y computadoras del dominio.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-10-1024x608.png\" alt=\"\" class=\"wp-image-103\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-10-1024x608.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-10-300x178.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-10-768x456.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-10-1536x912.png 1536w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-10.png 1606w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Seleccionamos la cuenta utilizada para el ejemplo anterior &#8220;Service_BD&#8221;, click derecho y entramos a &#8220;Properties&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"836\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-11-1024x836.png\" alt=\"\" class=\"wp-image-104\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-11-1024x836.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-11-300x245.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-11-768x627.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-11.png 1102w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Hacemos click en la pesta\u00f1a &#8220;Account&#8221; y en la seccion &#8220;Account options&#8221; vamos al final de la lista y tickeamos la opci\u00f3n &#8220;Do not require Kerberos preauthentication&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"751\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-12-1024x751.png\" alt=\"\" class=\"wp-image-105\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-12-1024x751.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-12-300x220.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-12-768x563.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-12.png 1146w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>De esta manera podemos continuar con el ejercicio utilizando la cuenta &#8220;Service_BD&#8221;.<\/p>\n\n\n\n<p>En un pentest, podemos obtener una lista de todos los usuarios del dominio utilizando una cuenta valida de dominio, se muestra el output de la herramienta &#8220;ldapdomaindump&#8221; como ejemplo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"421\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-13-1024x421.png\" alt=\"\" class=\"wp-image-106\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-13-1024x421.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-13-300x123.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-13-768x316.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-13.png 1456w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Este dump fue realizado al momento de levantar el Active Directory, por lo que las cuentas creadas aun no son reflejadas ac\u00e1, sin embargo, se puede observar en la columna &#8220;Flags&#8221; que los usuarios &#8220;jseclow&#8221; y &#8220;jsec&#8221; tienen la flag &#8220;DONT_REQ_PREAUTH&#8221;, la herramienta consulta al dominio por todos sus usuarios y sus flags respectivas, por lo que se puede obtener una lista de todos los usuarios que no tengan habilitada la pre-autenticacion por kerberos.<\/p>\n\n\n\n<p>Conociendo algunas cuentas con la flag establecida, incluida la que acabamos de configurar, procedemos a la explotaci\u00f3n utilizando &#8220;Impacket&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"703\" height=\"466\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-14.png\" alt=\"\" class=\"wp-image-107\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-14.png 703w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-14-300x199.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-14-700x465.png 700w\" sizes=\"auto, (max-width: 703px) 100vw, 703px\" \/><\/figure>\n\n\n\n<p><strong>Comando: <\/strong>impacket-GetNPUsers DOMINIO\/Usuario<\/p>\n\n\n\n<p>De esta manera, intentamos autenticarnos al controlador de dominio con la cuenta del usuario al que atacaremos, como no conocemos la contrase\u00f1a, podemos apretar &#8220;Enter&#8221;, que ahi es donde entra en juego la flag &#8220;DONT_REQ_PREAUTH&#8221;, ya que la misma le indica al controlador de dominio que, para generar un TGS de este usuario, no necesita autenticarse de manera exitosa, basta con solicitar el ticket de manera directa.<\/p>\n\n\n\n<p>Observamos que para las cuentas &#8220;jsec&#8221; y &#8220;jseclow&#8221; la password expiro, por lo que no se puede obtener su ticket, pero para la cuenta &#8220;Service_BD&#8221; si fue posible obtenerlo, por lo que realizaremos el crackeo del ticket respectivo.<\/p>\n\n\n\n<p>Para identificar el valor de &#8220;-m&#8221; que necesitamos para crackear este ticket, utilizamos la ayuda de hashcat y grep.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1005\" height=\"113\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-16.png\" alt=\"\" class=\"wp-image-109\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-16.png 1005w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-16-300x34.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-16-768x86.png 768w\" sizes=\"auto, (max-width: 1005px) 100vw, 1005px\" \/><\/figure>\n\n\n\n<p>Observamos que el ticket obtenido comienza con &#8220;$krb5asrep$&#8221;, por lo que el valor de &#8220;-m&#8221; que buscamos es el 18200, perteneciente a Kerberos 5 AS-REP, para el caso anterior de tickets SPN, el ticket comienza con &#8220;$krb5tgs$23$&#8221;, por lo que se utiliz\u00f3 el valor 13100.<\/p>\n\n\n\n<p>Ejecutamos hashcat para crackear el ticket AS-REP.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"407\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-17-1024x407.png\" alt=\"\" class=\"wp-image-110\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-17-1024x407.png 1024w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-17-300x119.png 300w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-17-768x305.png 768w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-17.png 1078w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Despues de un par de segundos, se obtiene la contrase\u00f1a respectiva.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"686\" height=\"425\" src=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-18.png\" alt=\"\" class=\"wp-image-111\" srcset=\"https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-18.png 686w, https:\/\/jsec-rt.com\/wp-content\/uploads\/2022\/06\/image-18-300x186.png 300w\" sizes=\"auto, (max-width: 686px) 100vw, 686px\" \/><\/figure>\n\n\n\n<p>A partir de este punto, se puede replicar el paso detallado anteriormente para acceder al servidor de base de datos.<\/p>\n\n\n\n<p>Estos son algunos ataques comunes sobre el protocolo de Kerberos que llegue a explotar de manera exitosa en m\u00faltiples evaluaciones, muchas veces un diccionario no es suficiente, por lo que se incorpora un juego de reglas para el crackeo respectivo, que sera mencionado en otro post.<\/p>\n\n\n\n<p>La parte 2 de este post estara orientada a movimiento lateral y post-explotaci\u00f3n, como por ejemplo ataques Pass-the-ticket y creaci\u00f3n de Golden tickets para persistencia.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una parte importante de los mecanismos y protocolos de autenticaci\u00f3n utilizados por Active Directory es Kerberos, que de manera resumida, establece un canal de autenticacion seguro entre hosts confiables en una red no confiable. Se puede listar algunos de los objetivos que tiene un proceso de autenticaci\u00f3n con Kerberos. Con <a href=\"https:\/\/jsec-rt.com\/index.php\/2022\/06\/06\/rt-ataques-conocidos-sobre-kerberos-parte-1\/\" 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-89","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\/89","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=89"}],"version-history":[{"count":4,"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/posts\/89\/revisions"}],"predecessor-version":[{"id":523,"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/posts\/89\/revisions\/523"}],"wp:attachment":[{"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/media?parent=89"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/categories?post=89"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jsec-rt.com\/index.php\/wp-json\/wp\/v2\/tags?post=89"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}