Búsqueda de sitios web

Cómo detectar ataques de pase del billete


En nuestra primera publicación de la serie, analizamos formas de detectar ataques pass-the-hash, que explotan la autenticación NTLM dentro de un dominio de Active Directory. Pass-the-ticket es un ataque relacionado que aprovecha la autenticación Kerberos para realizar movimientos laterales.

En esta publicación, profundizaremos en cómo funciona el ataque de pase del boleto y qué puedes hacer para detectarlo.

Cómo funciona Pase el boleto

En un ataque de pase de ticket, un atacante extrae un ticket de concesión de tickets (TGT) de Kerberos de la memoria LSASS en un sistema y luego usa este ticket válido en otro sistema para solicitar tickets de servicio (TGS) de Kerberos para obtener acceso a los recursos de la red.

Una diferencia principal entre pasar el hash y pasar el ticket es que los tickets de Kerberos TGT caducan (10 horas de forma predeterminada), mientras que los hashes NTLM cambian solo cuando el usuario cambia su contraseña. Por lo tanto, un boleto TGT debe usarse durante su vida útil o puede renovarse por un período de tiempo más largo (7 días).

Mimikatz se puede utilizar para pasar el ticket, pero en esta publicación queríamos mostrar cómo ejecutar el ataque utilizando otra herramienta, Rubeus, que permite realizar ataques basados en Kerberos. Rubeus es un conjunto de herramientas de C# escrito por harmj0y y está basado en el proyecto Kekeo de Benjamin Delpy, el autor de Mimikatz.

Paso 1. Extrae el TGT.

Para realizar un ataque de pase del billete con Rubeus, el primer paso es obtener un TGT. Los hashes TGT y NTLM pueden almacenarse o no en un sistema después de que un usuario cierra sesión, según la configuración de seguridad. Una de las características divertidas y aterradoras de Rubeus es Monitor, que buscará 4624 eventos de inicio de sesión y volcará los datos TGT para cualquier nueva sesión de inicio de sesión en un sistema.

Si usamos el siguiente comando, Rubeus comenzará a monitorear las sesiones de inicio de sesión cada 30 segundos:

Monitor Rubeus.exe /intervalo:30

Ahora, si alguien inicia sesión en este sistema, obtendremos su TGT. Para simular eso, ejecutaremos un comando como usuario:

Runas /usuario:[nombre de usuario de dominio] cmd.exe

En 30 segundos, Rubeus detectará este inicio de sesión, obtendrá el TGT de este usuario y lo generará como una cadena codificada en base64:

Podemos copiar esta cadena en un editor de texto y eliminar los saltos de línea y los espacios.

Paso 2. Pase el billete.

Ahora que hemos robado el billete, usémoslo antes de que caduque. Para hacer esto, nos quedaremos con Rubeus pero esta vez usaremos el comando ptt:

Rubeus.exe ptt /ticket:[La cadena Base64 va aquí]

Puede ver que tenemos un TGT para el usuario comprometido cargado en la sesión y ahora podemos usarlo para solicitar tickets de servicio TGS para acceder a los recursos de la red como este usuario.

Detección

Puede detectar el pase del billete en el punto final o en sus controladores de dominio.

Detección de Pass-the-Ticket en el punto final

Al investigar la detección de pases, nos encontramos con un enfoque muy interesante publicado por el investigador Eyal Neemany de Javelin Networks. Le informa que cuando quiera investigar la actividad de pase del ticket, puede seguir los siguientes pasos para cualquier punto final de su entorno:

  1. Mire las sesiones de inicio de sesión actuales en ese sistema.
  2. Utilice el comando klist para inspeccionar los tickets de Kerberos asociados con una sesión.
  3. Busque tickets de Kerberos que no coincidan con el usuario asociado con la sesión, lo que significaría que fueron inyectados en la memoria y que está en marcha un ataque de pase del ticket.

Profundicemos en estos pasos.

Paso 1. Para generar todas las sesiones de inicio de sesión, podemos usar este script adaptado de la función Get-LoggedOnUsers en GitHub:

        $regexa = '.+Domain="(.+)",Name="(.+)"

Paso 2. Ahora podemos usar el comando klist -li y pasar un ID de sesión para ver los tickets asociados con esa sesión.

Paso 3. Inspeccionamos una sesión del usuario Michael, pero vemos un TGT Kerberos para el usuario Gene. ¡Pase el billete detectado!

Esto funcionó de manera confiable en el laboratorio de pruebas sin falsos positivos, pero deje un comentario si conoce alguna forma en que esto pueda desencadenarse por una actividad distinta a la de pasar el boleto.

Detección de Pass-the-Ticket en controladores de dominio

También hay una manera de buscar el comportamiento de pasar el ticket en sus controladores de dominio. Puede que no sea tan confiable, pero siempre es bueno tener una detección que pueda obtener de sus registros de DC.

Registros de eventos para la autenticación Kerberos legítima

Para entender qué buscar, revisemos los registros de eventos que veríamos para la autenticación Kerberos normal en la red.

4768: se solicitó un ticket de autenticación Kerberos (TGT)

El primer evento que debería ver es un evento 4768 . Esta es la solicitud TGT y es lo primero que debe suceder para que un usuario aproveche Kerberos para acceder a un recurso de red. Obtendrá uno de estos para cada usuario por cada punto final desde el que accedan a su dominio. Si una cuenta de usuario inicia sesión desde dos estaciones de trabajo separadas, solicitará un TGT de cada una.

La información más relevante en este evento es el usuario que solicitó el TGT y el ordenador desde el que lo solicitó:

4769: se solicitó un ticket de servicio Kerberos

El siguiente paso en la autenticación Kerberos es que el usuario use ese TGT y solicite un ticket de servicio TGS para acceder a un servicio en una computadora, como CIFS, para acceder a un archivo compartido. Esto también aparecerá en los registros del evento 4769 y mostrará el usuario que solicitó el ticket y la computadora de origen:

4770: se renovó un ticket de servicio Kerberos

La renovación de un TGT genera el evento 4770. De forma predeterminada, los TGT se pueden renovar durante 7 días. Si quieres probar esto, Rubeus tiene un comando "renovar" para renovar los TGT que se han extraído. También puedes ver el usuario que renovó y la fuente de la renovación:

Encontrar eventos que indiquen ataques de pase del billete

Entonces, ¿qué es diferente en los registros de eventos cuando hay actividad de pase de boleto? ¿Qué debería buscar? Bueno, es probable que el atacante recopile TGT y luego los use en un sistema diferente, por lo que puede buscar solicitudes de TGS o renovaciones de TGT utilizando un par de Cuenta/Cliente en particular que no tenga ninguna solicitud de TGT asociada de ese par de Cuenta/Cliente. Tendría que mirar una solicitud de TGS o una renovación de TGT y luego escanear las 10 horas anteriores para ver si hubo una solicitud de TGT que coincida con ese usuario y computadora. Esto se debe a que al pasar el billete el atacante nunca solicitará un TGT; siempre se lo robarán a LSASS. Podrán renovarlo y definitivamente podrán utilizarlo para solicitar boletos de servicio TGS.

Ahora, esa detección va más allá del filtrado de registros de eventos, y para realizarla a escala probablemente se requiera un SIEM o un producto de terceros. Si está buscando una forma de detectar esto, consulte StealthDEFEND y vea cómo puede ayudar con este y otros ataques de Active Directory, como Golden Ticket, Pass the Hash y Kerberoasting.

        $regexd = '.+LogonId="(d+)"

Paso 2. Ahora podemos usar el comando klist -li y pasar un ID de sesión para ver los tickets asociados con esa sesión.

Paso 3. Inspeccionamos una sesión del usuario Michael, pero vemos un TGT Kerberos para el usuario Gene. ¡Pase el billete detectado!

Esto funcionó de manera confiable en el laboratorio de pruebas sin falsos positivos, pero deje un comentario si conoce alguna forma en que esto pueda desencadenarse por una actividad distinta a la de pasar el boleto.

Detección de Pass-the-Ticket en controladores de dominio

También hay una manera de buscar el comportamiento de pasar el ticket en sus controladores de dominio. Puede que no sea tan confiable, pero siempre es bueno tener una detección que pueda obtener de sus registros de DC.

Registros de eventos para la autenticación Kerberos legítima

Para entender qué buscar, revisemos los registros de eventos que veríamos para la autenticación Kerberos normal en la red.

4768: se solicitó un ticket de autenticación Kerberos (TGT)

El primer evento que debería ver es un evento 4768 . Esta es la solicitud TGT y es lo primero que debe suceder para que un usuario aproveche Kerberos para acceder a un recurso de red. Obtendrá uno de estos para cada usuario por cada punto final desde el que accedan a su dominio. Si una cuenta de usuario inicia sesión desde dos estaciones de trabajo separadas, solicitará un TGT de cada una.

La información más relevante en este evento es el usuario que solicitó el TGT y el ordenador desde el que lo solicitó:

4769: se solicitó un ticket de servicio Kerberos

El siguiente paso en la autenticación Kerberos es que el usuario use ese TGT y solicite un ticket de servicio TGS para acceder a un servicio en una computadora, como CIFS, para acceder a un archivo compartido. Esto también aparecerá en los registros del evento 4769 y mostrará el usuario que solicitó el ticket y la computadora de origen:

4770: se renovó un ticket de servicio Kerberos

La renovación de un TGT genera el evento 4770. De forma predeterminada, los TGT se pueden renovar durante 7 días. Si quieres probar esto, Rubeus tiene un comando "renovar" para renovar los TGT que se han extraído. También puedes ver el usuario que renovó y la fuente de la renovación:

Encontrar eventos que indiquen ataques de pase del billete

Entonces, ¿qué es diferente en los registros de eventos cuando hay actividad de pase de boleto? ¿Qué debería buscar? Bueno, es probable que el atacante recopile TGT y luego los use en un sistema diferente, por lo que puede buscar solicitudes de TGS o renovaciones de TGT utilizando un par de Cuenta/Cliente en particular que no tenga ninguna solicitud de TGT asociada de ese par de Cuenta/Cliente. Tendría que mirar una solicitud de TGS o una renovación de TGT y luego escanear las 10 horas anteriores para ver si hubo una solicitud de TGT que coincida con ese usuario y computadora. Esto se debe a que al pasar el billete el atacante nunca solicitará un TGT; siempre se lo robarán a LSASS. Podrán renovarlo y definitivamente podrán utilizarlo para solicitar boletos de servicio TGS.

Ahora, esa detección va más allá del filtrado de registros de eventos, y para realizarla a escala probablemente se requiera un SIEM o un producto de terceros. Si está buscando una forma de detectar esto, consulte StealthDEFEND y vea cómo puede ayudar con este y otros ataques de Active Directory, como Golden Ticket, Pass the Hash y Kerberoasting.

        $logon_users = @(Get-WmiObject win32_loggedonuser -ComputerName 'localhost')

        $session_user = @{}
        $logon_users |% {
            $_.antecedent -match $regexa > $nul
            $username = $matches[1] + "" + $matches[2]
            $_.dependent -match $regexd > $nul
            $session = $matches[1]
            $sessionHex = ('0x{0:X}' -f [int]$session)
            $session_user[$sessionHex] += $username
               
        }
        $session_user

Paso 2. Ahora podemos usar el comando klist -li y pasar un ID de sesión para ver los tickets asociados con esa sesión.

Paso 3. Inspeccionamos una sesión del usuario Michael, pero vemos un TGT Kerberos para el usuario Gene. ¡Pase el billete detectado!

Esto funcionó de manera confiable en el laboratorio de pruebas sin falsos positivos, pero deje un comentario si conoce alguna forma en que esto pueda desencadenarse por una actividad distinta a la de pasar el boleto.

Detección de Pass-the-Ticket en controladores de dominio

También hay una manera de buscar el comportamiento de pasar el ticket en sus controladores de dominio. Puede que no sea tan confiable, pero siempre es bueno tener una detección que pueda obtener de sus registros de DC.

Registros de eventos para la autenticación Kerberos legítima

Para entender qué buscar, revisemos los registros de eventos que veríamos para la autenticación Kerberos normal en la red.

4768: se solicitó un ticket de autenticación Kerberos (TGT)

El primer evento que debería ver es un evento 4768 . Esta es la solicitud TGT y es lo primero que debe suceder para que un usuario aproveche Kerberos para acceder a un recurso de red. Obtendrá uno de estos para cada usuario por cada punto final desde el que accedan a su dominio. Si una cuenta de usuario inicia sesión desde dos estaciones de trabajo separadas, solicitará un TGT de cada una.

La información más relevante en este evento es el usuario que solicitó el TGT y el ordenador desde el que lo solicitó:

4769: se solicitó un ticket de servicio Kerberos

El siguiente paso en la autenticación Kerberos es que el usuario use ese TGT y solicite un ticket de servicio TGS para acceder a un servicio en una computadora, como CIFS, para acceder a un archivo compartido. Esto también aparecerá en los registros del evento 4769 y mostrará el usuario que solicitó el ticket y la computadora de origen:

4770: se renovó un ticket de servicio Kerberos

La renovación de un TGT genera el evento 4770. De forma predeterminada, los TGT se pueden renovar durante 7 días. Si quieres probar esto, Rubeus tiene un comando "renovar" para renovar los TGT que se han extraído. También puedes ver el usuario que renovó y la fuente de la renovación:

Encontrar eventos que indiquen ataques de pase del billete

Entonces, ¿qué es diferente en los registros de eventos cuando hay actividad de pase de boleto? ¿Qué debería buscar? Bueno, es probable que el atacante recopile TGT y luego los use en un sistema diferente, por lo que puede buscar solicitudes de TGS o renovaciones de TGT utilizando un par de Cuenta/Cliente en particular que no tenga ninguna solicitud de TGT asociada de ese par de Cuenta/Cliente. Tendría que mirar una solicitud de TGS o una renovación de TGT y luego escanear las 10 horas anteriores para ver si hubo una solicitud de TGT que coincida con ese usuario y computadora. Esto se debe a que al pasar el billete el atacante nunca solicitará un TGT; siempre se lo robarán a LSASS. Podrán renovarlo y definitivamente podrán utilizarlo para solicitar boletos de servicio TGS.

Ahora, esa detección va más allá del filtrado de registros de eventos, y para realizarla a escala probablemente se requiera un SIEM o un producto de terceros. Si está buscando una forma de detectar esto, consulte StealthDEFEND y vea cómo puede ayudar con este y otros ataques de Active Directory, como Golden Ticket, Pass the Hash y Kerberoasting.

Artículos relacionados