SET 39 Call For Papers

¿Eres un hacker? Si deseas pasar a formar parte de la historia del hacking hispano, colabora con la próxima edición de SET 39 enviándonos un artículo. No esperes más, esta es tu oportunidad de demostrar lo que sabes. Ayúdanos a construir una revista de hackers para hackers. SET Staff

La importancia de una buena pass

      3788

Autor: thenemi
-[ 0x07 ]--------------------------------------------------------------------
-[ La importancia de una buena password ]------------------------------------
-[ by thenemi ]------------------------------------------------------SET-34--

LA IMPORTANCIA DE UNA CONTRASEÑA SEGURA

thenemi


consultas, dudas, criticas... <thenemi@gmail.com>

/////////////////////////////////////////////////////////////////////////////


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 <nombre-del-archivo-a-abrir>
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*