[caracas-pm] averiguar contraseñas débiles en ldap

Luis E. Muñoz lem at itverx.com.ve
Wed Jun 9 07:52:55 PDT 2010


On Wed, 2010-06-09 at 09:48 -0430, Ruben Colina wrote:
> Buenas mongers, a ver si me pueden ayudar con esto, 
> En la empresa donde laboro hemos tenido problemas con cuentas de
> correo que están siendo utilizadas para enviar SPAM y varias de estas
> cuentas tenian claves 1234, 123456 etc. Existirá alguna manera de
> encontrar con perl las claves débiles en un servidor ldap? por que
> pensaba generar las claves con slappasswd sencillas y verificar con
> las que están el en ldap pero cada vez el hash resultante es diferente
> por la semilla usada en cada proceso. El script con el que estoy
> leyendo el ldap es el siguiente: 
> 
> #!/usr/bin/perl
> [snip, script para generar listado de hashes]

Hola Ruben,

Imagino que ya pasaste por
http://people.binf.ku.dk/~hanne/blog/?postid=37 (o alguno de sus
derivados) para obtener la lista de hashes, pues pareciera que de allí
salió el script que muestras.

Te estás encontrando con un problema clásico. Hay varias cosas que debes
hacer, algunas relevantes a esta lista, otras off-topic.

En el link que puse más arriba, hay instrucciones sobre la instalación
de John The Ripper. JTR es una herramienta útil para ejecutar ataques de
fuerza bruta / diccionario contra colecciones de passwords como la que
construiste con tu script.

Definitivamente puedes hacer con Perl lo mismo que hace JTR, o puedes
usar "The Perl Way" y aceptar que si ya hay una buena herramienta que
hace lo que quieres, es mejor no reinventarla. ("Flojera buena"
aplicada).

Vas a encontrar que un buen número de las claves van a ser triviales,
especialmente cuando construyes tu propio diccionario "tropicalizado" a
tu empresa. Perl puede ser útil para eso. En otra vida, yo hacía cosas
como convertir conjuntos muy grandes de documentos de la empresa en
diccionarios que podía usar para alimentar a JTR. En mi caso ese
esfuerzo me dió quizás un 2% más de claves comprometidas.

Lo siguiente que va a pasar, es que vas a cambiar esas claves por otras
más robustas. Si sólo haces eso, en menos de 6 meses continuarás
teniendo problemas porque los usuarios volverán a moverse hacia claves
triviales.

Debes entonces enfocarte en hacer en paralelo, estas dos cosas:

(1) Implantar un mecanismo que detecte los intentos de adivinar claves y
responda afirmativamente -- Piensa en llevar la cuenta de los fallos de
autenticación y luego de pasar algún umbral, actualizar reglas de
firewall para dejar fuera al atacante.

(2) Implantar un mecanismo que _obligue_ a que las claves sean robustas
antes de aceptarlas.

Esto es, debes tener controles proactivos y reactivos, con los reactivos
retroalimentando a los procesos. Ahora trata de decir esto rápido.

Perl puede ser útil para implantar mucho de lo que te digo aquí, pero
este problema requiere más que un par de scripts como solución.

Saludos

-lem





More information about the caracas-pm mailing list