Você está na página 1de 6

Manual de supervivencia en Internet (II): Contraseas

08ago06 Seguimos con el manual bsico de supervivencia en Internet, esta vez centrndonos en las contraseas. Como la anterior entrega, este texto solamente pretende servir de gua de iniciacin a los internautas primerizos.

12345678 no es una buena contrasea


Ingeniera Social Quiz a alguno de vosotros le suene el nombre de Kevin Mitnick, un autntico mito dentro del cibervandalismo de los aos 80. La gran mayora de ataques a sistemas y redes que Mitnick consigui se debieron casi siempre a un par de trucos tcnicos, pero sobre todo, a su gran maestra en el campo de la Ingeniera Social. Mitnick era el Lazarillo de Tormes de la era digital, utilizaba todas las artimaas que se le iban ocurriendo para conseguir informacin fcilmente. A fin de cuentas, qu es la Ingeniera Social? La Ingeniera Social (literalmente traducido del ingls Social Engineering) engloba a todas aquellas conductas tiles para conseguir informacin de las personas del entorno de un ordenador. No son ms que engaos, algunos externos al propio sistema informtico (por ejemplo: entrar en el edificio como periodistas, aprovechando la vanidad de la gente, para conseguir informacin 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 conversacin ficticia entre un intruso, Kevin, y un Proveedor de Internet, Neotel: Neotel: Buenos das, bienvenido al servicio de atencin al cliente de Neotel, le atiende Juan, en qu puedo ayudarle? Kevin: Hola, llevo toda la maana tratando de acceder a Internet y no me funciona, estn teniendo problemas tcnicos? Neotel: Nuestros sistemas funcionan correctamente, qu le sucede exactamente? Kevin: Pulso en el icono de conexin a Internet y despus 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 errneamente su usuario o contrasea. 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 maana perdida con este asunto, me estoy planteando cambiar de proveedor, su servicio es psimo! Neotel: A ver, veamos como podemos solucionarlo es usted el titular de la lnea de telfono? Kevin: As es. Neotel: Dgame su nmero de telfono y nmero del Documento Nacional de Identidad. Kevin: 970031337, y el DNI 42573658-Z Neotel: De acuerdo, es usted Kevin: Juan Lpez, 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 contrasea es: Phe7a31X Kevin: Probar con esta nueva contrasea, si tengo algn problema tenga seguro que volver a llamar. Tal vez pueda parecer algo irreal, pero no es as. Kevin conoca 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 pblicos, basta con mirar un listado de personas admitidas a unas oposiciones en un Boletn Oficial del Estado para conocer nombres, apellidos y nmeros de DNI, o incluso direcciones, nmeros de telfono, etc. O ms fcil an, una simple carta de un Proveedor de Internet informando de una nueva oferta a uno de sus clientes puede contener toda la informacin necesaria para que se reproduzca la conversacin anterior. Debemos incinerar toda la propaganda que llega a nuestro buzones? La Ingeniera Social, como veremos es un factor clave a la hora de adivinar una contrasea. Cmo se guardan las contraseas? En la mayora de los sistemas, las contraseas se guardan en el mismo sitio en el que hay otra informacin importante para cada usuario, como su nombre, sus configuraciones, etc. Ese lugar normalmente es accedido por muchos programas y personas que necesitan informacin 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 informacin referente a los usuarios de un sistema suele guardarse en un fichero. En GNU/Linux y la mayora de sistemas UNIX este fichero est en /etc/passwd, en Microsoft Windows su ubicacin vara dependiendo de la versin que se utilice.

Como podemos intuir, ese fichero tiene que ser accedido por muchas personas y programas y adems contiene las contraseas del sistema, as que tenemos un problema. No podemos guardar las contraseas sin ms, porque cualquiera podra leerlas. Tenemos que cifrarlas, pero si las ciframos utilizando un mtodo simple, pronto alguien lo adivinar y podr conseguir todas las contraseas. Por esa misma razn, las contraseas en un sistema se cifran con un mtodo de cifrado indescifrable. Cmo? De qu nos sirve cifrar algo de tal manera que no exista un mtodo para hacer la operacin contraria? Responderemos a la gallega con otra pregunta: para qu usamos las contraseas 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) contrasea: hola --------ciframos-------------> RAZFC72ckD/g2 (hola cifrado) Sistema (fichero /etc/passwd) Acceso concedido) || ? (SI,

contrasea: ???? <----NO PODEMOS DESCIFRAR!!--- RAZFC72ckD/g2 (hola cifrado)

Al utilizar estos algoritmos de cifrado indescifrables o de un solo sentido (only-oneway), no podemos descifrar la contrasea, pero podemos aplicar ese mismo algoritmo a lo que nos han pasado por teclado y comparar el resultado con la contrasea cifrada. Con estos algoritmos, slo podemos ir hacia la derecha, es decir, slo podemos cifrar. De esta forma cumplimos los dos objetivos iniciales: 1. Cuando un usuario mete su clave, podemos comprobar si es la correcta (cifrndola 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 slo un sentido y no es posible hacer la operacin inversa. Imaginemos otro algoritmo irreversible, por ejemplo contar el nmero de letras de una frase. Si alguien pusiera hola, me llamo Juan el resultado de ese algoritmo sera 15 letras. Si ahora alguien toma ese 15 como dato de partida, es imposible que llegue a la conclusin de que la frase origen era hola, me llamo Juan, porque se ha perdido informacin relevante mientras se haca el proceso. Est claro que este ejemplo no valdra para guardar contraseas, 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 contraseas (esto es cierto), y que cualquier contrasea almacenada as no puede ser descifrada (esto no es tan cierto, ahora veremos por qu). Cuando nosotros conseguimos arrebatar la contrasea a alguien en su forma cifrada (as: RAZFC72ckD/g2, siguiendo el ejemplo de antes), no podemos utilizar una receta para tomar ese galimatas y generar la contrasea 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 galimatas coincida con el que nosotros hemos conseguido arrebatar. No podemos ir hacia la izquierda, es decir, descifrar la contrasea, pero podemos ir tantas veces como queramos hacia la derecha (cifrar palabras), hasta dar con el resultado. As, lo ms habitual es coger todas las palabras de un diccionario, y aplicarles el algoritmo de cifrado, hasta dar con la palabra correcta:
Diccionario Palabra cifrada ------------------------a -----------------> hYZeSQW6JtO/6 ? -> NO ab -----------------> 6ZmfTPHvQfMBo ? -> NO ababa -----------------> LZGyE2g1HxVl6 ? -> NO ababillarse -----------------> gZL1zEPlc4Pm2 ? -> NO ababol -----------------> .aqX5qKqDy/eE ? -> NO ... hojuela -----------------> IaxLbY/4G50r6 ? -> NO hojoso -----------------> XapGN/ph3zhzI ? -> NO hola -----------------> RAZFC72ckD/g2 ? -> SI!!! la contrasea es "hola" Contrasea ---------RAZFC72ckD/g2 RAZFC72ckD/g2 RAZFC72ckD/g2 RAZFC72ckD/g2 RAZFC72ckD/g2

= = = = =

= = =

RAZFC72ckD/g2 RAZFC72ckD/g2 RAZFC72ckD/g2

Probamos secuencialmente con todas las palabras del diccionario, hasta encontrarla. Estas listas de palabras suelen hacerse cogiendo todas las palabras del ingls, 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 contraseas con las que probar este ataque de diccionario. A simple vista podemos extraer dos conclusiones de todo esto: 1. Elegir como contrasea una palabra que est en el diccionario NO es una buena idea, aunque sea esternocleidomastoideo o unterschiedlichen. 2. Contra un ataque de diccionario, una contrasea que empiece por x, y o z tiene menos probabilidades de ser acertada rpidamente, puesto que los listados con diccionarios suelen ordenarse alfabticamente. Aqu puede entrar en juego tambin la Ingeniera Social: si queremos tener suerte a la hora de reventar la contrasea de una persona en concreto y sabemos que est loco por todo lo relacionado con El Seor de los Anillos, podemos meter en el diccionario todos los nombres, lugares y palabras caractersticas de ese tema, y seguramente tengamos suerte. Evidentemente todo esto no se hace de forma manual, existen muchos programas para crackear contraseas, aunque el ms famoso de todos es el John the Ripper. La versin para Windows funciona relativamente bien, aunque es un programa pensado para el mundo UNIX en general, as que tiene ms 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 contraseas, mostrar las 50 ltimas para que sea ms fcil entender como es, posteriormente atacar al fichero de contraseas 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 contraseas (/etc/shadow) slo tena al usuario prueba, con la contrasea que hemos puesto antes, hola. Como vemos, ha tardado 3 mintuos y 26 segundos en adivinar la contrasea, 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 estaris pensando, no todas las contraseas son palabras del diccionario, algunas incluso no son ni pronunciables y contienen nmeros y letras mezclados. En estos casos se usa un enfoque incremental para crackear las contraseas, 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 contrasea ser adivinada (probamos absolutamente todas las posibilidades), pero puede darse el caso de que la contrasea sea lo suficientemente grande y compleja como para que el tiempo que necesitemos sea de varios aos. Normalmente en todo ese tiempo un usuario que haya puesto una contrasea buena, la habr cambiado varias veces, as que nuestro trabajo no valdra para nada. Veamos un nuevo ejemplo de utilizacin 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 ms que con el enfoque por diccionario (17 minutos contra 3 minutos), porque hola es una palabra del diccionario. Si hubiramos puesto algo que no est en el diccionario, como por ejemplo 4tq2, con este enfoque habramos tardado lo mismo, mientras que con el ataque por diccionario nunca lo habramos resuelto.

Las cosas que deberemos tener en cuenta para evitar un ataque de este tipo son claras: el tamao de nuestra contrasea, cuanto ms grande sea, ms difcil ser adivinarla, y la complejidad de la contrasea, mezclando letras maysculas y minsculas, nmeros y caracteres raros como @, #, !, etc. Muchos ataques incrementales slo prueban letras y nmeros y no son eficaces contra combinaciones raras de letras, smbolos especiales, etc. Consejos prcticos Para resumir, siguiendo estos consejos podremos inventarnos una buena contrasea:

No utilizar nunca una palabra del diccionario, en ningn idioma conocido (klingon o lfico includos), por muy larga o extraa que pueda parecer. Intentar evitar combinaciones que empiecen por las primeras letras del alfabeto, para ponnselo un poco ms difcil 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 ningn concepto usar la pregunta relacionada. En algunos sitios como Yahoo o Hotmail nos permiten utilizar una pregunta para recordar nuestra contrasea. Cul es el nombre de tu mascota?, Cmo se llama tu madre?, etc. son preguntas tpicas que podremos usar. Si respondemos bien a esa pregunta, se nos enva un correo con nuestra contrasea. De nada sirve una contrasea buena, si utilizamos una pregunta de recordatorio demasiado fcil. Ya sabemos que la cadena siempre se rompe por el eslabn ms dbil, as que este podra ser un buen mtodo para que alguien consiguiera nuestra contrasea. Tener como contrasea 23lhXt-wl!@er3X es intil si luego en la pregunta para recordarla pones: Cul es mi pueblo de veraneo? y en tu pgina web dices que eres de la pea de fiestas de Valdemorillo de las Caas. En cuestin de contraseas, size DOES matter, el tamao importa Combinar maysculas, minsculas, nmeros y caracteres especiales pondr las cosas ms difciles a quien quiera crackear nuestra contrasea. Si lo que necesitamos en una passphrase, es decir, una contrasea 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 podra ser: Biba la vid@, y biba lamorl!!.

Uffff qu pereza! !Si quiero poner una contrasea 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 maysculas: VerdeQueTeQuieroVerde. 3. Cambia algunas letras por nmeros, el 3 es una E al revs, el 0 puede ser una O, la @ la cambiamos por la Q usa tu imaginacin: V3rd3@u3T3@ui3r0V3rd3. 4. Esa contrasea ya es potentsima, 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 contrasea bastante difcil de crackear