Conoce el estado de tus contraseñas del Directorio: BadPasswords

Blog

Estimados amigos de Inseguros !!!

Hoy quiero hablar de una práctica defensiva que, si trabajas con Active Directory  en empresa, deberías tener en tu checklist recurrente: auditar la calidad real de las contraseñas de tus usuarios.

Y cuando digo “real”, me refiero a salir del típico “tenemos política de complejidad” y entrar en lo importante:
si tus contraseñas están ya filtradas, si se repiten, si hay vacías, si hay demasiado “123456” camuflado, o si hay usuarios que comparten claves.

La idea base es muy simple (y muy potente):
comparar los hashes de contraseñas de tu directorio contra una lista de contraseñas prohibidas o filtradas.

Si hay coincidencias, no hay debate.
Tienes usuarios con contraseñas que ya están quemadas.

Qué hace exactamente la herramienta BadPasswords

En el ejemplo que trabajo, la herramienta se apoya en el módulo DSInternals para obtener los hashes y poder compararlos. Lo importante aquí es entender el concepto:

  1. Extraer hashes del directorio (no contraseñas en claro).

  2. Cargar una lista de “malas contraseñas” (tu lista corporativa y/o listas filtradas enormes).

  3. Hacer el “match”.

  4. Generar un informe con lo encontrado.

En el propio proceso se contemplan casos típicos:
contraseñas débiles, contraseñas filtradas, contraseñas vacías y contraseñas compartidas.

Por qué esto es un control “de empresa”

Porque esto no es postureo.
Esto es higiene de credenciales.

Y es de esas cosas que tiene sentido pasar cada seis meses como revisión defensiva, o hacerlo on demand cuando vas a auditar un entorno y quieres medir en 10 minutos el nivel de riesgo por credenciales.

Lo que te encuentras muchas veces es justo lo que duele:
cuentas con permisos interesantes usando contraseñas que ya circulan por Internet desde hace años.

Requisito clave: permisos y contexto (aquí no hay magia)

Para poder extraer hashes de todo el dominio, necesitas credenciales con privilegios adecuados.
Si ejecutas esto con un usuario normal, no vas a poder recuperar los hashes necesarios para comprobar todo el directorio.

Aquí tienes dos enfoques válidos:

Opción A: le das a la herramienta usuario/contraseña con permisos suficientes (típicamente algo equivalente a admin de dominio para esa extracción).

Opción B: no le das credenciales de extracción, pero le “enchufas” tú una lista de hashes que ya hayas sacado previamente por el método que uses (esto a veces encaja mejor en entornos donde controlas muy bien cómo se hace la extracción y quién la autoriza).

En ambos casos, el mensaje es el mismo:
esto requiere control, permisos y trazabilidad.
No es un “click y ya”.

La lista de contraseñas: tu empresa + filtraciones

La herramienta puede tirar de una lista brutal de contraseñas filtradas (en el ejemplo, una descarga de unos 8 GB con del orden de 500 millones de contraseñas filtradas).

Pero no hace falta empezar por ahí.

De hecho, para validar el concepto, lo más práctico es crear un fichero de texto simple con 4 o 5 contraseñas (una por línea) y comprobar que:

  • el entorno resuelve el dominio,

  • extrae hashes,

  • compara,

  • y genera resultado.

Luego ya te metes con listas grandes.

Y aquí hay una parte muy interesante para empresa:
además de listas filtradas, te creas tu propia “accessible password list” corporativa.

Es decir: contraseñas que NO quieres ver nunca en tu organización.
Nombres de empresa, nombres de sedes, variaciones típicas, meses del año, patrones internos…
Todo eso se mete en una lista y se convierte en un control práctico.

Instalación y dependencias típicas

Este tipo de herramientas suele venir como descarga en ZIP desde el repositorio.

Te lo bajas, lo descomprimes, y lo primero es revisar las dependencias que te pide el propio proyecto.

En el ejemplo aparecen dependencias muy comunes en entornos Windows:

  • un runtime/librería de Microsoft (la típica redistribuible de Visual C++; en este caso se menciona la de compilación del C++ 2007 en x64),

  • .NET Framework (se menciona 4.5),

  • y el módulo DSInternals.

Cómo se ejecuta en la práctica

Cuando lo lanzas, te pide datos del entorno.

En el ejemplo aparecen campos tipo:

  • domain name

  • naming context (el DN típico de AD, tipo DC=empresa,DC=local)

  • configuración de envío de correo (mail smtp / mail recipient) para mandar reportes

  • ruta o referencia a tu lista de contraseñas (accessible password list)

Además, el punto crítico:
te va a pedir la clave/credenciales de administrador (o el método que uses) para que por debajo pueda hacer la extracción.

Una vez lanzado, la herramienta empieza a “matchear” y, si todo está bien, termina con el informe.

Un error muy típico (y muy real)

Si ejecutas esto en un equipo que no está en el dominio (o que no resuelve / no puede hablar bien con el DC), te vas a comer errores del estilo:
“no es posible contactar con el servidor remoto”.

Esto no es raro.
Es el recordatorio de siempre:
estas comprobaciones, mejor hacerlas en un equipo unido al dominio, con conectividad y resolución correcta, o directamente desde un servidor/controlador donde tengas el contexto perfecto.

Qué hago cuando encuentro coincidencias

Aquí es donde separas “herramienta” de “proceso”.

Porque encontrar coincidencias es el principio, no el final.

Acciones típicas que tienen sentido:

  • reset de contraseña con control (y revisando si hay cuentas privilegiadas implicadas),

  • revisión de cuentas con permisos altos (si hay match en admin, duele el doble),

  • comprobar reutilización y patrones,

  • y, si hace falta, endurecer política y acompañarla con concienciación mínima (sin castigar al usuario, pero sin dejarlo pasar).

Y muy importante:
esto no va solo de “cambiar la contraseña”.
Va de entender por qué llegó ahí y cómo evitar repetir el problema.

Un apunte final, si lo quieres hacer bien en Microsoft

Todo esto encaja dentro de una disciplina más grande: seguridad de identidades en entornos Microsoft (AD/Entra ID, M365, Azure, y luego ya Sentinel/Defender para visibilidad y respuesta).

Si quieres aprenderlo con criterio de empresa, con procesos y con la parte práctica bien amarrada, échale un ojo al curso completo de Ciberseguridad Microsoft (nivel avanzado), porque ahí se conecta esta pieza con el resto del puzzle: identidad, hardening, y cómo bajar riesgo de verdad en tu entorno. seguridadsi.com

Gracias por leerme !!!

Autor

Profesor y consultor de ciberseguridad. Microsoft MVP.

+ 25 años de experiencia

Compartir artículo :

Otros artículos

calendly
×
Hola 👋, bienvenido a SeguridadSI
Reserva una llamada de 15 minutos para resolver cualquier consulta
Scroll al inicio