-[ 0x07 ]-------------------------------------------------------------------- -[ La importancia de una buena password ]------------------------------------ -[ by thenemi ]------------------------------------------------------SET-34-- LA IMPORTANCIA DE UNA CONTRASEÑA SEGURA thenemi consultas, dudas, criticas... ///////////////////////////////////////////////////////////////////////////// Saludos. Con este mini-articulo pretendo haceros comprender la importancia de una contraseña segura, y hacer un analisis de las contraseñas mas utilizadas a dia de hoy (18/07/2007), con el fin de ver lo que debemos evitar, y como elegir un buen password. ///////////////////////////////////////////////////////////////////////////// ESQUEMA 1. Presentacion 2. Estadisticas 3. Algunas conclusiones 4. Eligiendo una contaseña segura 5. Lista de Contraseñas // fin del esquema --> 1. Presentacion =========================================== El analisis lo voy a realizar sobre una base de datos de mas de 6000 hashes cifrados en md5. Tomare una muestra de 600 escogida de manera aleatoria, y a partir de ahi, hare las estadisticas. Estas contraseñas funcionan en la actualidad. De hecho, son todas de un foro en español desarrollado en drupal de cierta distribucion de linux que esta muy de moda ultimamente. Vamos, que un analisis puede resultar cuanto menos interesante. El ataque fue posible gracias a la incompetencia (y prepotencia sobre todo) de cierto administrador al que desde aqui quiero mandar un saludo, y gracias al simple-backdor.php de z0mbie, que os pego a continuacion. Inicio comentario del editor*********************************************** Muchos antivirus detectan el programa como un backdoor y por tanto os impedirian abrir el articulo, asi que lo hemos pegado cifrado con pgp 2.6 Para abrirlo basta con la instruccion pgp -p Fin comentario del editor************************************************* --------------8<--------------------------------------------------------- -----BEGIN PGP MESSAGE----- Version: 2.6.3ia owGVVV9v2zYQ3+sM+DtcCAOWhszy2pfBsRQEnbIESJo0dodtSSBQEhUJk0SVopqo bfaN9gX3tCMpqXGWuIgfbJP3u7vf/eU/3/8bjipa1/NXM3knv8PPcn88chwKdVZU OYMqrSCk0V8x5wK+QMRjFkPYwqd5EWYMLl/PZ/OfZ/PX1yhMpawWjpMIxkomZ7Rw /v7EFezqajwaj3gYKJtZlMkgyZs6tey98ShLrKyumbQmwYX/7r2/Wl9Ok+m1bX8e jyZJlrOSFszdFO51IjfhFSstMuDILhEhUWYTFZVMRWNpobqKM4bf90+7jHuXsbt5 iyosSjmQZSWYRzRjsCYpLWNMjwuKQZwJJBET24bPAzx95eVZLbPyBngCk3jp4I3S v02REJpALdQXjMZKv7OoSSgPWR10Zh2FVLY7wxRSwRJ3Ojk/Og9W/snhPnI2qKm3 THgpsUw5F+6NYK32yPKaPa+dPK0d5lh2o641FeKq/HpeOgrsLR2qQfeqxPfwwFWf GRsSihHHChXlvGYPwzV1AQvzJTxduWcKFHUFelSMuq0lKx4Dv1Xtpso57UuuITv/ 7whMCAIADVnTlLW7dcWiLGnxQrBIctHuTO0+uSo57mNl3aamfY/W6/Pg/Gy1Dg6P T/wVdjFmJFCy6fXl1PyaYdgp+EcWGIIsDhTO+oa6LKru/64mMjNebVtnwdJgMBZV NzIhuJhNt+S6+NAw0Q7pmaS8lg+jU2cTXlNvhI1Hc6+m73ZjlMyNkcbhRq5Cc2u8 uk/wQGnR1h/yIOJlibnHqVAUyC52JbrUv8Y+sYELEzZ5w5s8hpKrhtZqCyAwA2NJ J8Gy7cF0zXKEBHGoRs7skIlgdZNLHFID0WxQbGiRbnt1qB338OBk5Q9TqhpU7QCN hVtaA7tjUSNxfUZcqA7KW70SzEz1S0Hw28FfwmSUBlQI2vZedk//WL07CQ5Wq7M3 2JuVyEoZCK32NRS1gAOD7/U2JmLfG48Mv4SLAmgkM166ZLlvuA+bYQ/2PQKn/vro 7Bf3V38NXhcCRlAUOL8LWGZl1UiQbcVcItmdJKAbnkTE25DVTVhkKP1I8waPNxzl OPFqiYhC8dFUWBkZeIGcs4oKqeU/xlRS8oCoepWe4lowmfLYJZXqjk0CaRbHrOzp nR78rkcpWB3/6Q+sfpr3H4KUzMSAmp5FZ8ooD8NHOtvqgnggudoNW5Ki9rgH8GRi DML4HAh1xwdpwpyhmxDrjVvnhiuf3bM7lG/lX/zmXwRvD0792aSbpeD9xbFKET4V l8P+gpQJdo1GQ+GhfWxQqt78xXj0QpMONirwEn4oszt858VLKUUL5zYrY4xJWcG/ JtC+23RXgx6kRd8pL2haDAfbYfFsVfQq6RKe84jm+sKDpmbbiqkWT1cnwbn0QG8g LrZNRbekPLVVVU+HtGbb+iVEGibu50HdNvJg27x1qVSeh176Dw== =OXwi -----END PGP MESSAGE----- --------------8<--------------------------------------------------------- 2. Estadisticas =========================================== Como ya he dicho antes, nos encontramos con un monton de hashes md5, y nuestra vagueza. Planteamos lo siguiente: De que no sirve saber la contraseña de mas de 6000 usuarios? Evidentemente, de nada. A la hora de la verdad, nos interesa el hash del administrador, y como mucho, los moderadores, y algun usuario al que queramos putear (nada personal, solo me caes mal :P ) Yo, desde luego, ni me planteo crackear una cantidad de hashes que llega a los 4 digitos. Tampoco me plantearia crackear 600, pero en esta ocasion tengo curiosidad. Para crackearlos no he usado el mdcrack, simplemente he echado mano de unos scripts, y de gdataonline.com y passcracking.ru (sobre todo de este ultimo) El tema de este texto no es como atacar un md5, pero veamoslo por encima. Introducimos una contraseña cualquiera, por ejemplo, set. Aplicamos el algoritmo en cuestion, y obtenemos nuestro hash: cdaeeeba9b4a4c5ebf042c0215a7bb0e De esta forma, al intentar acceder al foro, la pagina convertira a md5 la contraseña que pongamos, y comprobara que coincide con la que tiene en la base de datos correspondiente a nuestro usuario. Si es, bien, y si no, pa'tu casa. Si nos hacemos con la base de datos, como es el caso, nos encontraremos con una bonita lista de hashes. Pero como los desciframos? No podemos, tenemos que crackearlos. Para ello, podemos emplear la fuerza bruta, es decir hallar el hash md5 de la letra a: "0cc175b9c0f1b6a831c399e269772661". Comprobarlo con el que tenemos, y si no coincide, hallar el hash de la letra b.... y asi asta aburrirnos. Tambien podemos usar ataques por diccionarios (hallar los hashes de palabras mas usadas como contraseñas, como "password", "1234","secreto"...), o realizar ataques mediante rainbow tables. La pagina que vamos a utilizar es una gran base de datos que ademas usa estos 2 ultimos metodos, y una combinacion de ambos. Es decir, si enviamos un hash, primero comprobara que no esta en su base de datos (es decir, que nadie le ha mandado que averigue el hash ya antes), y si no esta, nos da la opcion de enviarlo nosotros y esperar a ver si hay suerte. Nosotros no vamos a esperar, vamos a analizar contraseñas inseguras, "demasiado faciles", asi que ni siquiera le vamos a pedir que las rompa para nosotros, simplemente veremos si la tiene en su base de datos. Logicamente, es dificil que tenga una contraseña como "AERasfkRA5", pero con total seguridad que "1234" estara por ahi. ;) Como el objetivo es observar si los usuarios tienen contraseñas seguras o no, nos vale. Al lio: Pillamos 600 hashes al azar, y a ver que nos dice passcracking.ru: + Passwords no encontrados: 7 Se trata de hashes que alguien le habia pedido que encontrase pero que no pudo por ser demasiado largos/complejos. + Passwords que nunca antes habian sido enviados a la base de datos :485 De lo que bien deducimos que son poco comunes o que debido a su longitud/complejidad nos va a llevar demasiado tiempo crackearlos. + Passwords encontrados:115 Por tanto, de primeras, tenemos un 19, 6% de exito. No esta mal no? Sin embargo, hay otro dato que debemos tener en cuenta: Al registrarnos, tan solo debemos dar nuestro nombre de usuario y direccion de correo, y se nos asignara una contraseña(mayusculas, minusculas, y numeros, generada aleatoriamente), que podemos cambiar si queremos. Si de nuestra muestra de 600, eliminamos a los que no han posteado nunca (ojo, podriamos estar cometiendo errores, ya que se puede tratar simplemente de lurkers, vagos, o gente que no quiere usar otra contraseña) Se nos reduce a 319 los hashes que no hemos podido encontrar, y a 97 los que si. Es una forma un poco cutre y demasiado poco cientifica, pero nos vale. Con estos numeros, obtenemos un 30,4% de exito. No sabemos si de esos 485, algun hash (o unos cuantas) vamos a poder obtener por medio de rainbow tables en un tiempo razonable, es decir, cuantas de esas no son tan seguras como aparentan. Sin embargo, podemos afirmar, que entre un 19,6% y un 30,4% de las contraseñas no son seguras. No se a vosotros, pero a mi me parece un dato preocupante, sobre todo, si como veremos luego, tenemos repetidas veces la pass 123456 o su version evolucionada 12345678, el nombre o apellido de esa misma persona, de la parienta, su fecha de cumpleaños... Un dato que hubiese sido interesante obtener, seria el de cuantas de esas passwords estan directamente relacionadas con el usuario. Es decir, es muy dificl saber si el usuario que tiene como contraseña "firefox" realmente usa firefox sin conocerle, o es una palabra que ha elegido al azar, si "020275" es una fecha de cumpleaños, o simplemente un numero. Sin embargo, en base a la lista de contraseñas obtenidas, creo que puedo afirmar sin temor a equivocarme, que en torno al 5% de usuarios usan contraseñas que estan directamente relacionadas con ellos (bien sea porque usan el mismo nombre de usuario/contraseña, el nombre de la novia, su cumpleaños), o contraseñas clasicas ("1234") Pero seguimos con nuestro analisis. contraseñas exclusivamente numericas: 36 31,3% contraseñas unicamente letras minusculas 72 62,6% contraseñas unicamente letras mayusculas 2 1,73% combinan mayusculas y minusculas: 1 0,09% contraseñas que combinan minusculas, y numeros 4 3.47% De las encontradas,ninguna combina mayusculas y numeros; minusculas, mayusculas, y numeros; y ninguna contiene caracteres especiales. Me gustaria mencionar, que hubiese sido interesante poder conocer cuales realmente tienen relacion directa con el usuario, y no mi aproximacion a "ojimetro". Deberiamos haber dejado pasar unos tres o seis meses, y ver cuantos usuarios han cambiado su contraseña. Y algo que tambien hubiese sido interesante seria el ver que porcentaje de usuarios usan la misma contraseña tanto para el foro, como para su cuenta de correo u otros servicios. Pero ir mirando el correo de la gente para comprobar cuales realmente usan la misma contraseña, ademas de ser un coñazo, es delito. 3. Algunas conclusiones =========================================== Aunque ya las he resumido un poco, voy a intentar poner unas ideas generales, que nos serviran para el siguiente punto: - La gran mayoria de pass encontradas son caracteres en minusculas. Si observamos la lista de contraseñas, veremos que, o bien son nombres propios, o bien palabras que se podrian atacar por diccionario (grupos de musica, palabras como firefox, microsoft...) - Hay un numero elevado de pass que contienen 8 digitos (dnis y fechas de cumpleaños, aniversarios...) - La gran mayoria de contraseñas esta entre los 6 y 8 caracteres. - 5 de cada 100 contraseñas podrian llegar a ser adivinadas al tuntun, o con ingenieria social con unos pocos intentos, es decir, si tenemos el usuario pepito, probariamos "1234", "12345678", "pepito", "cumpleañosdepepito", "noviadepepito", "dni de pepito"... - Entre un 19,6% y un 30,4% no pueden ser consideradas seguras. Apuntaros estas directrices, que nos serviran de base para el siguiente punto. 4. Como elegir una contraseña segura =========================================== En vista de lo anterior, para elegir una buena contraseña: - Debera contener una combinacion de mayusculas, minusculas, numeros, y simbolos especiales. - Su longitud nunca debera ser inferior a 8 caracteres, siendo preferiblemente superior a los 10. - No debe tener relacion directa con nosotros (nombre, fecha de cumpleaños), y preferiblemente tampoco una relacion indirecta (pelicula/grupo de musica favorito). - No debemos usar la misma contraseña para nuestra cuenta de correo, que para un foro, siendo preferible tener mas de dos contraseñas, y cambiarlas con cierta frecuencia. El punto que menos he comentado, es este ultimo, aunque creo que deberia estar claro: Nadie nos libra de un administrador imprudente, o de un xploit 0-day al que simplemente no ha habido tiempo para corregir. Pero si usamos la misma contrasña para todo, la culpa tambien es nuestra. La solucion es sencilla: tener una segunda cuenta para foros, u otro tipo de registros, o hacer uso de paginas de correo temporal, como mytrashmail, o bugmenot. Este ultimo nos puede proporcionar usuarios y contraseñas, muy util para esos sitios de los que solo nos interesa un pdf. Entonces, como elegimos una contraseña segura? Pues el hecho es que existen infinidad de programas que las generan para nosotros (net /random en windows, agp para linux, multitud de scripts...) Pero, desgraciadamente, mi memoria es muy mala, y me cuesta bastante recordar passwords como 2Is9yQDayZ , y menos si tengo que recordar una distinta para cada sitio en el que estoy registrado. Afortunadamente, existen varios trucos, y tu puedes tener el tuyo: Frases de paso: por que usar una sola palabra pudiendo usar frases enteras? Por ejemplo, podemos sustituir la contraeña "cinco" por "si dices cinco..." (ya sabes lo que pasa :P) O, si nacimos un 2 de abril, podemos poner los caracteres 2 y 4 en mayusculas, y añadir un 02 y un 04 al principio y al final: "02sI dIces cinco...04" O sustituir todos los espacios por _, /, *, #,@ o cualquier otro simbolo que se te ocurra, o incluso alternarlos: "02sI#dIces_cinco...04" O por que no, escribirlo en h4x0r: "0251#o|1c35_C1nC0...04" Echale imaginacion ;) Si la imaginacion no es lo tuyo, siempre puedes usar alguno de los programas antes mencionado, y usar un gestor de contraseñas, y te bastara con recordar solo una contraseña: la de tu gestor. (por ejemplo kwallet para los usuarios de kde) Tambien puedes usar esteganografia, y guardar las contraseñas en tu fotografia favorita. Existen otros metodos, por ejemplo, diceware, que consiste en generar passphrases a partir de las tiradas de un dado, o alguno mas friki que no recuerdo donde lei, que se basaba en hallar el determinante de matrices 3x3 en el teclado, es decir, si por ejemplo nos fijamos en la zona qwe-asd-zxc la pass seria "qscaxewdz-eszwacdxq" Si quieres mas ideas, te dejo como lectura recomendada, el metodo SFSP, que conoci gracias a kriptopolis: http://www.sans.org/rr/whitepapers/authentication/1636.php 5. Lista de contraseñas =========================================== Por ultimo, la lista de passwords, por si alguien quiere comprobar lo que os he contado ------------------------- 009790 020275 02670267 04101977 081102 093270 10516 1076186 112358 11281128 123321 12345 123456 123456 12345678 150485 181160 190183 207955 221022 240199 248261 2703 272087 27589 333777 343400 344844 416027 452323 532410 5789313 617618 7898521 8029 860506 aguacate alejandra asdfasdf basura bolson buitrago cacaca cambiar canyamel cascada cerdito chichiri ciudadano Cronos crypt dios147 duketro eduardo esclarecido esperanza esqueleto falcom fedora fernando ferrer0 fingolfin firefox foro freakshow fullmetal garfio gaza guillermo hamaquero hansol josefo JOVANKA kburton kuyu maniu123 marioneta matias maxtor mendieta metallica microsoft miperro mochica necton olaya pecusa pepote pillin pirata polka pqpqpq putaputa quelle rammstein ramram rascar redalert rollos saltador sandokan SILENT simba slipknot star78 suicune tejada teresa tesoro tiotio tomcat torpedo vampiro yomismo zheyan ------------------------- *EOF*