La mejor manera de rastrear la enumeración de nombre de usuario de fuerza bruta / intentos fallidos de nombre de usuario AD

9

Tenemos un servidor de Windows que tiene una aplicación que reside en él, que utiliza credenciales de dominio al iniciar sesión en la aplicación. Durante una reciente prueba de lápiz, los evaluadores pudieron usar la aplicación para enumerar nombres de usuario de dominio válidos en función de la respuesta de la aplicación (dio una respuesta diferente para un nombre de usuario no válido frente a una contraseña no válida).

La aplicación se está reparando para que no revele esta información, pero también siento que deberíamos haber detectado este ataque ya que hubo más de 2000,000 intentos de nombre de usuario no válidos en un corto período de tiempo. No lo vimos, incluso cuando nuestros administradores observaban de cerca Active Directory. Aparentemente, las fallas solo aparecieron en el registro de eventos local del servidor donde se instaló la aplicación.

Mi pregunta: 1) ¿Hay alguna forma de hacer que Active Directory registre estas solicitudes de nombre de usuario fallidas en una ubicación central para que podamos notar un aumento en ellas?

2) Si no, ¿cuál es la mejor manera de monitorear y detectar activamente este tipo de ataque en el futuro (ojalá sin tener que comprar demasiado equipo nuevo).

Gracias por tu ayuda.

Doug
fuente

Respuestas:

11

Gran pregunta

Lo primero es lo primero: considero que la mayoría de los "probadores de penetración" son guionistas. Puede que mi sesgo no sea justo o preciso, pero pongo este descargo de responsabilidad para que, si detecta algún cinismo en mi tono, sepa de dónde viene. No estoy diciendo que hay no hay pentesters cualificados, pero esta es mi generalidad de barrido.

(¡Equipo azul para toda la vida!)

Mi pregunta: 1) ¿Hay alguna forma de hacer que Active Directory registre estas solicitudes de nombre de usuario fallidas en una ubicación central para que podamos notar un aumento en ellas?

No proporcionó suficiente información para que nadie pueda responder esta pregunta a fondo y con confianza. Dijiste que se encontró que tu aplicación contenía una falla que permitía a los atacantes enumerar las cuentas de los usuarios. Estoy tratando de entender de qué manera cree que AD necesita realizar el registro de su aplicación.

Aparentemente, las fallas solo aparecieron en el registro de eventos local del servidor donde se instaló la aplicación.

Aparentemente, las fallas aparecieron en el registro de eventos en el servidor. O los fracasos hicieron aparecer en el registro de eventos en el servidor? Si es así, ¿qué dijeron exactamente los eventos? ¿Quién los registró? ¿Tu solicitud? O Windows? Ve a averiguarlo y puedo agregar aclaraciones adicionales a mi respuesta.

Voy a arriesgarme aquí basándome en su suposición de que estos eventos deberían haber sido registrados por Active Directory de alguna manera ... ¿qué pasaría si sus pentesters no estuvieran explotando una falla en su aplicación, sino que en su lugar estuvieran usando ¿Una falla muy conocida en Kerberos para enumerar nombres de usuario? Kerberos contiene lo que yo consideraría un defecto de diseño en el que un atacante puede intentar miles y miles de intentos de "autenticación previa" (es decir, un ataque de fuerza bruta) y el KDC responderá de manera diferente dependiendo de si la cuenta de usuario existe o no. Este no es un comportamiento específico de Active Directory, pero se aplica igualmente a MIT Kerberos, Heimdal, etc. El KDC responderá conKDC_ERR_PREAUTH_REQUIREDsi se presentó un nombre de usuario válido sin datos de autenticación previa, incluso sin intentar una autenticación real. De esta forma, puede enumerar los nombres de usuario de un KDC. Pero debido a que el atacante (o la herramienta que el atacante está usando, como KrbGuess, porque los pentesters están en su mejor momento cuando usan las herramientas de otras personas) no tiene que continuar con un intento de autenticación completa, no se registra nada porque no ¡Se intentó la autenticación real!

Ahora, a tu siguiente pregunta:

2) Si no, ¿cuál es la mejor manera de monitorear y detectar activamente este tipo de ataque en el futuro (ojalá sin tener que comprar demasiado equipo nuevo).

Un par de cosas.

Primero, hay productos pagados de nivel empresarial que están diseñados para detectar este tipo de ataques (entre muchos otros). Muchos proveedores ofrecen dichos productos, y las recomendaciones de productos no están relacionadas con Serverfault, pero es suficiente decir que están fuera. allí. Muchos de estos productos funcionan al exigirle que configure la duplicación de puertos entre sus controladores de dominio y estos "recolectores de datos" para que puedan ver y analizar literalmente todos y cada uno de los paquetes que ingresan o salen de sus controladores de dominio.

(Lo siento, eso se ajusta a tu cláusula "sin comprar demasiadas cosas nuevas").

Otra cosa que podría ayudarlo es la entrada del registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

LogLevel = 1

Documentado aquí .

Si habilita esta entrada del registro, debería inundar con eventos en su registro de eventos de Seguridad sobre errores de Kerberos que mencionan que se requiere autenticación previa de Kerberos. Un ejemplo de tal evento:

A Kerberos Error Message was received:
 on logon session DOMAIN\serviceaccount
 Client Time: 
 Server Time: 12:44:21.0000 10/9/2012 Z
 Error Code: 0x19 KDC_ERR_PREAUTH_REQUIRED
 Extended Error: 
 Client Realm: 
 Client Name: 
 Server Realm: DOMAIN
 Server Name: krbtgt/DOMAIN
 Target Name: krbtgt/DOMAIN@DOMAIN
 Error Text: 
 File: e
 Line: 9fe
 Error Data is in record data.

Pero esto puede ayudarlo o no si no especifica de dónde provienen exactamente el tsunami de las solicitudes de Kerberos. Esto nos lleva de vuelta a los productos de detección de intrusos empresariales que mencioné anteriormente.

Y no olvide el reenvío de eventos de Windows que puede hacer que sus servidores reenvíen eventos a una ubicación centralizada para ser analizados por cualquier herramienta que tenga a su disposición.

Toda esta respuesta se ha basado hasta ahora en el protocolo Kerberos, que ni siquiera puedo dar por sentado porque has dado muy pocos detalles en tu publicación. Sin embargo, espero que esto ayude al menos un poco.

Ryan Ries
fuente
Gracias por su respuesta. Revisaré el lunes, pero creo que los registros de eventos son los eventos estándar de Windows para el inicio de sesión fallido en el servidor local (por ejemplo, serían el equivalente de un inicio de sesión fallido a través de RDP con un nombre de usuario no válido). Definitivamente no es nada específico de la aplicación. Para la enumeración de autenticación Kerberos, creo que los probadores de pen tendrían que estar en nuestra intranet local. Ellos no eran. La aplicación está disponible públicamente en Internet con autenticación estándar basada en formularios que llama al SO bajo techo.
Doug
0

Esta es una pregunta interesante que me encantaría escuchar una respuesta adecuada. He encontrado información que Doug podría encontrar útil, sin embargo, creo que podría ser un poco inadecuada. Alguien más probablemente puede proporcionar una respuesta ampliada:

Inicie sesión en el servidor en el que desea almacenar la información de auditoría, Ejecutar -> RSOP.MSC -> Configuración del equipo -> Configuración de Windows -> Configuración de seguridad -> Políticas locales -> Política de auditoría -> "Auditar eventos de inicio de sesión de cuenta" y " Auditar eventos de inicio de sesión "

La expiración para "eventos de inicio de sesión de cuenta" dice:

Auditar eventos de inicio de sesión de cuenta

Esta configuración de seguridad determina si el sistema operativo audita cada vez que esta computadora valida las credenciales de una cuenta.

Los eventos de inicio de sesión de la cuenta se generan cada vez que una computadora valida las credenciales de una cuenta para la cual tiene autoridad. Los miembros del dominio y las máquinas que no están unidas al dominio tienen autoridad para sus cuentas locales; todos los controladores de dominio tienen autoridad para las cuentas en el dominio. La validación de credenciales puede ser compatible con un inicio de sesión local o, en el caso de una cuenta de dominio de Active Directory en un controlador de dominio, puede ser compatible con un inicio de sesión en otra computadora. La validación de credenciales no tiene estado, por lo que no hay un evento de cierre de sesión correspondiente para los eventos de inicio de sesión de la cuenta.

Si se define esta configuración de directiva, el administrador puede especificar si auditar solo los éxitos, solo los fracasos, tanto los éxitos como los fracasos, o no auditar estos eventos (es decir, ni los éxitos ni los fracasos).

La expiración de "eventos de inicio de sesión" dice:

Auditar eventos de inicio de sesión

Esta configuración de seguridad determina si el sistema operativo audita cada instancia de un usuario que intenta iniciar sesión o cerrar sesión en esta computadora.

Los eventos de cierre de sesión se generan cada vez que finaliza la sesión de inicio de sesión de una cuenta de usuario conectada. Si se define esta configuración de directiva, el administrador puede especificar si auditar solo los éxitos, solo los fracasos, tanto los éxitos como los fracasos, o no auditar estos eventos (es decir, ni los éxitos ni los fracasos).

Esencialmente, necesitaría habilitar esas políticas, definir la configuración de la política y elegir "falla" si solo desea monitorear los intentos fallidos. Si lo desea, también puede monitorear los éxitos, pero podría ser un poco más difícil de analizar si solo le preocupa buscar este tipo de ataque.

Si le preocupan configuraciones similares a las que sus sistemas pueden ser vulnerables, le recomendaría buscar en la configuración de STIG ( enlace ), cuando se usa junto con un escáner SCAP, realmente puede ayudar a resaltar algunos de los riesgos que podría ser su organización frente a. El visor STIG tiende a generar algunos falsos positivos, pero si lees los detalles de cada problema, es posible que no se inicie.

Sawta
fuente
1
Sugeriría las líneas base MSFT o nist, DISA hace suposiciones sobre el medio ambiente en lugar de asegurar el host como entidad. Sí, se requiere una auditoría adecuada. También leí las mejores prácticas para asegurar el documento técnico de Active Directory.
Jim B
Gran punto, Jim B! No había considerado ese aspecto.
Sawta