Manual de supervivencia en Internet (II): Contraseñas

Seguimos con el manual básico de supervivencia en Internet, esta vez centrándonos en las contraseñas. Como la anterior entrega, este texto solamente pretende servir de guía de iniciación a los internautas primerizos.

 

«12345678» no es una buena contraseña

Ingeniería Social

Quizá a alguno de vosotros le suene el nombre de Kevin Mitnick, un auténtico mito dentro del cibervandalismo de los años 80. La gran mayoría de ataques a sistemas y redes que Mitnick consiguió se debieron casi siempre a un par de trucos técnicos, pero sobre todo, a su gran maestría en el campo de la Ingeniería Social. Mitnick era el Lazarillo de Tormes de la era digital, utilizaba todas las artimañas que se le iban ocurriendo para conseguir información fácilmente.

A fin de cuentas, ¿qué es la Ingeniería Social? La Ingeniería Social (literalmente traducido del inglés «Social Engineering») engloba a todas aquellas conductas útiles para conseguir información de las personas del entorno de un ordenador. No son más que engaños, algunos externos al propio sistema informático (por ejemplo: entrar en el edificio como periodistas, aprovechando la vanidad de la gente, para conseguir información importante) y otros internos (aprovechar la confianza del usuario, como por ejemplo el gusano «Kournikova» o el «I Love You» que utilizan las ganas de ver a la tenista rusa o recibir una carta de amor para colarse en el sistema).

Imaginemos la siguiente conversación ficticia entre un intruso, Kevin, y un Proveedor de Internet, Neotel:

Neotel: Buenos días, bienvenido al servicio de atención al cliente de Neotel, le atiende Juan, ¿en qué puedo ayudarle?

Kevin: Hola, llevo toda la mañana tratando de acceder a Internet y no me funciona, ¿están teniendo problemas técnicos?

Neotel: Nuestros sistemas funcionan correctamente, ¿qué le sucede exactamente?

Kevin: Pulso en el icono de conexión a Internet y después de unos ruidos raros me sale esto… espere que lo tengo apuntado por si acaso… sí, aquí está: Error 630, Login or password incorrect, connection refused.

Neotel: Ha introducido erróneamente su usuario o contraseña.

Kevin: Eso es imposible, yo no he tocado nada. ¿No será que han modificado algo y no se me ha informado? Realmente estoy muy disgustado, necesito enviar un informe a mis empleados con urgencia y llevo toda la mañana perdida con este asunto, me estoy planteando cambiar de proveedor, ¡su servicio es pésimo!

Neotel: A ver, veamos como podemos solucionarlo… ¿es usted el titular de la línea de teléfono?

Kevin: Así es.

Neotel: Dígame su número de teléfono y número del Documento Nacional de Identidad.

Kevin: 970031337, y el DNI 42573658-Z

Neotel: De acuerdo, es usted…

Kevin: Juan López, vivo en c/ Valdivieso, 13, 1º D.

Neotel: Sí, eso es. Espere un momento…

ding, dong, ding ding dong, ding…

Neotel: Bien, tome nota por favor. Su nueva contraseña es: «Phe7a31X»

Kevin: Probaré con esta nueva contraseña, si tengo algún problema tenga seguro que volveré a llamar.

Tal vez pueda parecer algo irreal, pero no es así. Kevin conocía los datos del verdadero titular de la cuenta en el Proveedor de Internet y eso hizo asegurarse al trabajador de Neotel que se trataba de un cliente malhumorado. Esos datos son relativamente públicos, basta con mirar un listado de personas admitidas a unas oposiciones en un Boletín Oficial del Estado para conocer nombres, apellidos y números de DNI, o incluso direcciones, números de teléfono, etc. O más fácil aún, una simple carta de un Proveedor de Internet informando de una nueva oferta a uno de sus clientes puede contener toda la información necesaria para que se reproduzca la conversación anterior. ¿Debemos incinerar toda la propaganda que llega a nuestro buzones? 😉

La Ingeniería Social, como veremos es un factor clave a la hora de adivinar una contraseña.

¿Cómo se guardan las contraseñas?

En la mayoría de los sistemas, las contraseñas se guardan en el mismo sitio en el que hay otra información importante para cada usuario, como su nombre, sus configuraciones, etc. Ese lugar normalmente es accedido por muchos programas y personas que necesitan información de un usuario en concreto, como por ejemplo saber si ese usuario tiene permisos para entrar en una determinada carpeta o saber el lenguaje preferido por el usuario para mostrar una pantalla en un idioma o en otro, etc. Toda esta información referente a los usuarios de un sistema suele guardarse en un fichero. En GNU/Linux y la mayoría de sistemas UNIX este fichero está en /etc/passwd, en Microsoft Windows su ubicación varía dependiendo de la versión que se utilice.

Como podemos intuir, ese fichero tiene que ser accedido por muchas personas y programas y además contiene las contraseñas del sistema, así que tenemos un problema. No podemos guardar las contraseñas sin más, porque cualquiera podría leerlas. Tenemos que cifrarlas, pero si las ciframos utilizando un método simple, pronto alguien lo adivinará y podrá conseguir todas las contraseñas. Por esa misma razón, las contraseñas en un sistema se cifran con un método de cifrado indescifrable. ¿Cómo? ¿De qué nos sirve cifrar algo de tal manera que no exista un método para hacer la operación contraria? Responderemos a la gallega con otra pregunta: ¿para qué usamos las contraseñas que hemos cifrado en ese fichero? Para comprobar si la contraseñá que nos han pasado por teclado es correcta. Pero claro, no podemos descifrarlas para comprobar si es correcto lo que el usuario ha introducido por teclado. El truco está en cifrar lo que el usuario ha introducido y comparar cifrado con cifrado:

 Usuario (teclado)

     contraseña: hola --------ciframos-------------> RAZFC72ckD/g2 (hola cifrado)

 Sistema (fichero /etc/passwd)                           || ? (SI, Acceso concedido)

     contraseña: ???? <----NO PODEMOS DESCIFRAR!!--- RAZFC72ckD/g2 (hola cifrado)

Al utilizar estos algoritmos de cifrado indescifrables o de un solo sentido («only-one-way»), no podemos descifrar la contraseña, pero podemos aplicar ese mismo algoritmo a lo que nos han pasado por teclado y comparar el resultado con la contraseña cifrada. Con estos algoritmos, «sólo podemos ir hacia la derecha», es decir, sólo podemos cifrar. De esta forma cumplimos los dos objetivos iniciales:

  1. Cuando un usuario mete su clave, podemos comprobar si es la correcta (cifrándola y comprobando si el resultado coincide con lo que nosotros tenemos almacenado).
  2. Si alguien consigue arrebatarnos la clave cifrada (el texto «RAZFC72ckD/g2», por ejemplo), no puede descifrarla, porque hemos utilizado un algoritmo de cifrado de sólo un sentido y no es posible hacer la operación inversa.

Imaginemos otro algoritmo irreversible, por ejemplo «contar el número de letras de una frase». Si alguien pusiera «hola, me llamo Juan» el resultado de ese algoritmo sería 15 letras. Si ahora alguien toma ese 15 como dato de partida, es imposible que llegue a la conclusión de que la frase origen era «hola, me llamo Juan», porque se ha perdido información relevante mientras se hacía el proceso. Está claro que este ejemplo no valdría para guardar contraseñas, pero explica el concepto de algoritmos irreversibles.

Ataques de diccionario

Acabamos de decir que los algoritmos de un solo sentido son la mejor manera para guardar contraseñas (esto es cierto), y que cualquier contraseña almacenada así no puede ser descifrada (esto no es tan cierto, ahora veremos por qué). Cuando nosotros conseguimos arrebatar la contraseña a alguien en su forma cifrada (así: «RAZFC72ckD/g2», siguiendo el ejemplo de antes), no podemos utilizar una receta para tomar ese galimatías y generar la contraseña descifrada («hola», en este ejemplo), pero lo que sí que podemos hacer es aplicar el algoritmo de cifrado a todas las palabras del diccionario, hasta encontrar una cuyo galimatías coincida con el que nosotros hemos conseguido arrebatar.

No podemos «ir hacia la izquierda», es decir, descifrar la contraseña, pero podemos ir tantas veces como queramos «hacia la derecha» (cifrar palabras), hasta dar con el resultado. Así, lo más habitual es coger todas las palabras de un diccionario, y aplicarles el algoritmo de cifrado, hasta dar con la palabra correcta:

 Diccionario                    Palabra cifrada         Contraseña
 -----------                    ---------------         ----------
 a           -----------------> hYZeSQW6JtO/6     =     RAZFC72ckD/g2 ? -> NO
 ab          -----------------> 6ZmfTPHvQfMBo     =     RAZFC72ckD/g2 ? -> NO
 ababa       -----------------> LZGyE2g1HxVl6     =     RAZFC72ckD/g2 ? -> NO
 ababillarse -----------------> gZL1zEPlc4Pm2     =     RAZFC72ckD/g2 ? -> NO
 ababol      -----------------> .aqX5qKqDy/eE     =     RAZFC72ckD/g2 ? -> NO
 ...
 hojuela     -----------------> IaxLbY/4G50r6     =     RAZFC72ckD/g2 ? -> NO
 hojoso      -----------------> XapGN/ph3zhzI     =     RAZFC72ckD/g2 ? -> NO
 hola        -----------------> RAZFC72ckD/g2     =     RAZFC72ckD/g2 ? -> ¡¡¡SI!!! la contraseña es "hola"

Probamos secuencialmente con todas las palabras del diccionario, hasta encontrarla. Estas listas de palabras suelen hacerse cogiendo todas las palabras del inglés, todas las del castellano, todas las del italiano, nombres de ciudades, de equipos deportivos, de famosos, etc. y al final lo que obtenemos es un listado gigantesco de posibles contraseñas con las que probar este ataque de diccionario.

A simple vista podemos extraer dos conclusiones de todo esto:

  1. Elegir como contraseña una palabra que esté en el diccionario NO es una buena idea, aunque sea esternocleidomastoideo o unterschiedlichen.
  2. Contra un ataque de diccionario, una contraseña que empiece por x, y o z tiene menos probabilidades de ser acertada rápidamente, puesto que los listados con diccionarios suelen ordenarse alfabéticamente.

Aquí puede entrar en juego también la Ingeniería Social: si queremos tener suerte a la hora de reventar la contraseña de una persona en concreto y sabemos que está loco por todo lo relacionado con El Señor de los Anillos, podemos meter en el diccionario todos los nombres, lugares y palabras características de ese tema, y seguramente tengamos suerte.

Evidentemente todo esto no se hace de forma manual, existen muchos programas para crackear contraseñas, aunque el más famoso de todos es el «John the Ripper». La versión para Windows funciona relativamente bien, aunque es un programa pensado para el mundo UNIX en general, así que tiene más sentido utilizarlo desde GNU/Linux o sistemas BSD. Para instalarlo en Debian GNU/Linux basta con escribir (como root):

 apt-get install john

Veamos un ejemplo de su uso: en diccionario.txt tengo mi diccionario de posibles contraseñas, mostraré las 50 últimas para que sea más fácil entender como es, posteriormente atacaré al fichero de contraseñas utilizando como diccionario mi fichero diccionario.txt:

 # tail -50 diccionario.txt
 zyuuzyun zyuuzyut zyuuzyuu zyuwaki zyuyo zyuyou zyuyouki
 zyuzou zyuzu zyuzutsu zyuzutu zyuzutun zyuzyou zyuzyu zyuzyuts
 zyuzyutu zyweck zywicki zywiel zyxenhujul zyzomys zyzzoget
 zyzzogeton zyzzy zyzzyva zyzzyvas zz zzalsrh zzang zzapsid
 zzdean zzdlg zzekka zzetsu zzetsuen zzetu zzgl zzhi zzppyyx
 zztop zztopman zzyzx zzyzyx zzz zzzz zzzzz zzzzzz zzzzzzz
 zzzzzzzz zzzzzzzzzzzzzzz
 # john -w=diccionario.txt /etc/shadow
 Loaded 1 password (FreeBSD MD5 [32/32])
 hola             (prueba)
 guesses: 1  time: 0:00:03:26 100%  c/s: 3024  trying: hola

En mi fichero de contraseñas (/etc/shadow) sólo tenía al usuario «prueba», con la contraseña que hemos puesto antes, «hola». Como vemos, ha tardado 3 mintuos y 26 segundos en adivinar la contraseña, comprobando a una velocidad de 3024 claves por segundo, mientras iba probando por la palabra «hola» dentro del diccionario.

Ataques incrementales por fuerza bruta

Como muchos estaréis pensando, no todas las contraseñas son palabras del diccionario, algunas incluso no son ni pronunciables y contienen números y letras mezclados. En estos casos se usa un enfoque incremental para crackear las contraseñas, probando absolutamente todas las combinaciones: primero todas las de una letra, luego las de dos letras, luego las de tres, etc. De esta manera nos aseguramos que al final la contraseña será adivinada (probamos absolutamente todas las posibilidades), pero puede darse el caso de que la contraseña sea lo suficientemente grande y compleja como para que el tiempo que necesitemos sea de varios años. Normalmente en todo ese tiempo un usuario que haya puesto una contraseña buena, la habrá cambiado varias veces, así que nuestro trabajo no valdría para nada.

Veamos un nuevo ejemplo de utilización del «John the Ripper», mediante el enfoque incremental:

 # john -incremental /etc/shadow
 Loaded 1 password (FreeBSD MD5 [32/32])
 hola             (prueba)
 guesses: 1  time: 0:00:17:12  c/s: 2887  trying: hola

Como vemos ha tardado bastante más que con el enfoque por diccionario (17 minutos contra 3 minutos), porque «hola» es una palabra del diccionario. Si hubiéramos puesto algo que no está en el diccionario, como por ejemplo «4tq2», con este enfoque habríamos tardado lo mismo, mientras que con el ataque por diccionario nunca lo habríamos resuelto.

Las cosas que deberemos tener en cuenta para evitar un ataque de este tipo son claras: el tamaño de nuestra contraseña, cuanto más grande sea, más difícil será adivinarla, y la complejidad de la contraseña, mezclando letras mayúsculas y minúsculas, números y caracteres raros como @, #, !, etc. Muchos ataques incrementales sólo prueban letras y números y no son eficaces contra combinaciones raras de letras, símbolos especiales, etc.

Consejos prácticos

Para resumir, siguiendo estos consejos podremos inventarnos una buena contraseña:

  • No utilizar nunca una palabra del diccionario, en ningún idioma conocido (klingon o élfico incluídos), por muy larga o extraña que pueda parecer.
  • Intentar evitar combinaciones que empiecen por las primeras letras del alfabeto, para ponénselo un poco más difícil a un ataque incremental.
  • No utilizar palabras relacionadas con nuestras aficiones, el nombre de nuestra novia, hijas, etc. Es probable que el atacante pueda conocer esos datos.
  • Bajo ningún concepto usar la «pregunta relacionada». En algunos sitios como Yahoo o Hotmail nos permiten utilizar una pregunta para recordar nuestra contraseña. «¿Cuál es el nombre de tu mascota?», «¿Cómo se llama tu madre?», etc. son preguntas típicas que podremos usar. Si respondemos bien a esa pregunta, se nos envía un correo con nuestra contraseña. De nada sirve una contraseña buena, si utilizamos una pregunta de recordatorio demasiado fácil. Ya sabemos que la cadena siempre se rompe por el eslabón más débil, así que este podría ser un buen método para que alguien consiguiera nuestra contraseña. Tener como contraseña «23lhXt-wl!@er3X» es inútil si luego en la pregunta para recordarla pones: «¿Cuál es mi pueblo de veraneo?» y en tu página web dices que eres de la peña de fiestas de Valdemorillo de las Cañas.
  • En cuestión de contraseñas, «size DOES matter», el tamaño importa 😉
  • Combinar mayúsculas, minúsculas, números y caracteres especiales pondrá las cosas más difíciles a quien quiera crackear nuestra contraseña.
  • Si lo que necesitamos en una «passphrase», es decir, una contraseña que normalmente tiene que ser muy larga porque lo que protegemos es importante, no dudar en utilizar espacios a la hora de definir la passphrase. Por ejemplo, una buena passphrase podría ser: «Biba la vid@, y biba lamorl!!».

Uffff… ¡qué pereza! !Si quiero poner una contraseña siguiendo todos esos consejos, al final nunca me voy a acordar de ella! No desesperes, existen trucos muy buenos:

  1. Coge una frase que te guste. Por ejemplo: «Verde que te quiero verde».
  2. Quita los espacios y sustituyelos por mayúsculas: «VerdeQueTeQuieroVerde».
  3. Cambia algunas letras por números, el 3 es una E al revés, el 0 puede ser una O, la @ la cambiamos por la Q… usa tu imaginación: «V3rd3@u3T3@ui3r0V3rd3».
  4. Esa contraseña ya es potentísima, pero no nos vamos a acordar. Cogemos las 10 primeras letras, y nos queda: «V3rd3@u3T3», o sea, «verdequete» escrito a nuestro estilo personal, una contraseña bastante difícil de crackear 😉

30 pensamientos en “Manual de supervivencia en Internet (II): Contraseñas

  1. Catarino Juarez

    Me parece muy interesante esto de la seguridad informática, y me interesa mas informacion sobre el tema, aqui mencionas que es el titulo II, ¿como podría acceder a los otros?

    Gracias

    Catarino juarez

    Responder
  2. Hz

    La seguridad ante todo es lo primero.
    Yo por ejemplo conosco un caso de una pagina de sexole
    en el cual uno de los usuarios coloco como nick por ejemplo (mario) y su contraseña era (mariomario) esto da a conocer la fragilidad ke algunas empresas del internet brindan a sus usuarios ke con poca experiencia en la red pueden ser facilmente estafados. No brindandoles la orientacion necesaria para sus contraseñas ke pueden ser facielmente "adivinadas".

    Responder
  3. federico

    holasss!!!
    pues muchisimas gracias!!!
    por ese gran consejo y necesito su ayuda porque a una amiga, su ex le cambio su contraseña y ella quiere ingresar a ese correo, obvio ya tiene otro pero ahi tiene unos contactos que quiere recuperar, creeo que alguien hablo de aguien como usted, acerca de las contraseñas que puedes ayudarnos, bueno amigo pues le deseo muchos exitos en su vida y se cuida mucho hasta pronto.

    Responder
  4. ayelen

    Hola queria saber si me pueden averiguar la contraseña de pitula77@hotmail, ya que bajarme programas no puedo por el antivirus y ademas no se mucho de estas cosas. Por favor, realmente la necesito cuanto antes. Gracias

    Responder
  5. Fermin Leonel

    Esta muy ben, ya queasi voy a tener que cambiar mi contraseña por que creo que no es muy segura gracias por la informaicion

    Responder
  6. Ojitos

    Hola, el tema esta muy interesante y queria saber si me pueden averiguar la contraseña de fkif55@hotmail, por favor, realmente la necesito cuanto antes. De antemano mil Gracias

    Responder
  7. Ojitos

    Upss, se meolvido preguntar si existe algun programa que pudiera conseguir contraseñas . .. y de ser asi cual(es) es (son)? gracias.

    Responder
  8. txipi

    Lo siento mucho por todos los que pasáis por aquí pero tengo que confesaros una cosa:

    NO RECUPERAMOS CONTRASEÑAS DE HOTMAIL NI DE MSN MESSENGER

    No lo hacemos y nunca lo haremos.

    Por favor, dejad de pedir que recuperemos tal o cual contraseña ;-/

    Responder
  9. javi

    Pues cambien la contraseña de mi antiguo correo siguiendo sus consejos, pero ahora no me acuerdo ni yo de lo ke puse, he tenido ke hacer un correo nuevo y he perdido muchos contactos importantes ke tenia, me pregunto si podria ayudarme a saber cual era esa dichosa contraseña, el correo al ke me refiero (mi antiguo y kerido correo) es javi_ejido_24@hotmail.com
    si me puedes ayudar enviame a cobaltonegro@hotmail.com

    Responder
  10. jesus

    Como defino en linux lo siguiente :

    Valor historico de la contraseña. Que una contraseña nueva no se identica a la anterior.

    Que se bloquee un usuario luego de tres intentos fallidos.

    Activar la complejidad de la contraseña y

    Definir la longitud de la contraseña.

    Responder
  11. jorge

    me gustaría que me ayudaran conseguir la contraseña de un correo en hotmail y yahoo.

    se;ores si uds puede hacer eso por favor escribir a mi correo jorgefco77@yahoo.es para suministrarle el correo que deseo obtener la contraseña.

    lo necesito por que sospecho que mi esposa me es infiel y necesito saber o ver que correo tiene de su amante

    gracias

    att. el desesperado

    Responder
  12. Lore

    Estoy buscando información de como desifrar una contraseña de hotmail es muy importante es para ayudar a mi hermana ella tuvo un accidente no recuerda nada y seria bueno para su rehabilitacion poder entrar en su cuenta el problema es que no tengo idea de cual puede ser la contraseña y por el centro de ayuda no me dan ninguna respuesta gracias

    Responder
  13. Carlos Horacio Ruiz

    —–BEGIN PGP SIGNED MESSAGE—–
    Hash: SHA1

    Hola,

    Para el que no quiera que le metan mano en sus cosas, aquí hay
    un link para crear contraseñas de muy alta seguridad.

    http://www.elfuturohallegado.com/util/gen-pass.php

    Carlos H Ruiz
    cl4551f13d-080403-0017

    —–BEGIN PGP SIGNATURE—–
    Version: GnuPG v1.4.7 (MingW32) – WinPT 1.2.0

    iD8DBQFH9GkA4++PUqkWm/sRAsWiAKCdfagbfX85P3lXepQuHyMYtbZcMwCgoGEP
    /hgHmbEpk9p32lrQQO0yseM=
    =N485
    —–END PGP SIGNATURE—–

    Responder
  14. melissa

    Que necia es la gente que pide contraseñas! Me alegra que no les respondan ^^
    LA verdad me ha gustado el manual, muy accesible, se agradece
    Yo tengo una duda, mis contraseñas a veces tienen que ver mi afición que es el anime y manga japonés, ya sean nombres de personajes o series siempre en japonés

    ¿Que tan seguras son esas contraseñas?
    Ejemplo: Hideki, Ikari, Sanosuke, Azuka, etc

    Ninguna de estas la utilizo por supuesto, pero es para ejemplificar

    Ojalá me respondan, gracias ^^

    Responder
  15. Pingback: Las contraseñas | Curso Manual Tutorial

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *