26 jun 2015

Buscando contraseñas con Google Hacking

Buenas a todos, en el post de hoy me gustaría hablaros sobre la exposición de numerosos sistemas de "cifrado" de contraseñas que utilizan infinidad de servicios web de Internet.


Por gracia o por desgracia (dependiendo de si nos toca auditar.... o proteger :P), md5 sigue siendo un estándar utilizado a la hora de hashear contraseñas para almacenarlas en base de datos, a pesar de que md5 lleva roto dos décadas... Fue desarrollado en 1991 como reemplazo de md4 después de que Hans Dobbertin descubriese su debilidad, pero solo tuvo la oportunidad de ser considerado 100% seguro durante 5 años, hasta que en 1996 el mismo Hans Dobbertin anunciase una colisión de hash. Hoy en día, mediante rainbow tables y fuerza bruta es posible romper md5 en un tiempo aceptable (en comparación con otros algoritmos como SHA1 o SHA256).


Si queréis saber más sobre md5 os recomiendo este genial libro de Manuel J. Lucena, del que soy muy fan desde que me ayudó a aprobar criptografía en la facultad y a dominar numerosos algoritmos criptográficos :)

Volviendo al origen del post, vamos a buscar algunas exposiciones de distintos sitios web encargados de la generación y/o el almacenamiento de contraseñas bajo md5.


Con una búsqueda tan simple como la anterior en Google, podremos encontrar más de 3.500 scripts SQL en los que aparecen sentencias "select", con las palabras md5 y password o pass. Dentro de todos ellos encontraremos desde procedimientos almacenados y funciones, hasta triggers, sentencias de inserción.... cada script es un mundo.

Si escogemos algunos al azar podemos ver que muchos programadores han decidido realizar la lógica de generación de hashes en el propio código SQL, en lugar de en el código del servidor web, como por ejemplo PHP. No es una práctica que aminore la seguridad, en absoluto, siempre y cuando dichos scripts no acaben en Internet...


Así que consejo número uno, cuidado de donde almacenáis las contraseñas y cómo las almacenáis. Consejo número dos, revisad los permisos de los archivos y carpetas de vuestros servidores, para impedir que ciertos archivos acaben en Internet y si es posible, limitad también que se puedan exponer archivos con ciertas extensiones críticas, como por ejemplo "sql". Y por supuesto, ¡comenzad a olvidar md5, en favor de otros algoritmos más robustos como SHA256!

Saludos!

1 comentario:

  1. Buen buen post, evidentemente seguimos haciendo las cosas mal, cada vez hay mas y mas web indexadas con este tipo de información.

    ResponderEliminar