ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

CRACKING


Enviado por   •  7 de Octubre de 2012  •  Informe  •  3.801 Palabras (16 Páginas)  •  789 Visitas

Página 1 de 16

Una contraseña es una dato secreto que permite acceder a un recurso cuyo acceso está limitado. Esta se mantiene en privado de tal manera que cuando alguien desea acceder al recurso, se le somete a una prueba para ver si es poseedor del secreto, garantizando el acceso en caso afirmativo o denegandolo en caso contrario.

Hoy en día las contraseñas son ampliamente utilizadas en el mundo de la informática para restringir el acceso a sistemas operativos, servicios en red, documentos, interfaces de control, pero por regla general la gestion de passwords no se realiza de maneras lo suficientemente seguras en la mayoría de los sistemas.

Vamos a ver los sistemas que implementan los dos sistemas operativos más extendidos MS Windows y la familia UNIX.

UNIX.

- Dónde y cómo se guardan las contraseñas.

La mayor parte de sabores UNIX (freeBSD, AIX, Linux, Solaris, HP-UX, Tru64…) guardan toda la informacion relativa a las contraseñas en dos ficheros: el /etc/passwd y el /etc/shadow, aunque este ultimo varía su nombre y localizacion dependiendo del UNIX particular.

Las contraseñas no se almacenan en texto plano sino que se codifican aplicando el algoritmo MD5. Esto genera un “hash” de la contraseña, que es como su DNI, una cadena de caracteres que la identifica univocamente. Un hash se puede comparar tambien con el ADN humano, que en teoría es algo unico para cada individuo. Por tanto, una pass como puede ser “qwerty”, se vería como “d8578edf8458ce06fbc5bb76a58c5ca4″. Esto es así por 2 motivos principalmente:

1) Evitar que el administrador de la máquina pueda ver los passwords de los usuarios. Esto tentaría a más de uno, que podría intentar probar si la contraseña del usuario para ese sistema coincide con la de su buzon de correo electronico, su cuenta de Blogger o su Banco On-Line…

2) Evitar el desastre total si el fichero shadow es robado. De esta manera si dicho fichero cayese “en malas manos”, la unica informacion que, en principio, se sacaría en claro sería una lista de logins.

Las entradas del fichero passwd tienen esta pinta:

root:x:0:0:root:/root:/bin/bash

michael:x:561:561:Michael Knight:/home/michael:/bin/bash

De izquierda a derecha, los campos significan:

- Login del usuario

- La X significa que el hash se guarda en el fichero /etc/shadow

- UserID, el identificador numerico del usuario.

- GroupID, el identificador numerico del grupo al que pertenece el usuario.

- Nombre real.

- Directorio inicial.

- Interprete de comandos a usar.

Las entradas del fichero shadow son así:

root:$1$8tldVM3U$R/b8Zuc97O/.oDuJfWKdZ3:13214:0:99999:7:::

michael:$1$6ptdlGeX$lPduex8frIty3yrP3EPs7/:10063:0:99999:7:::

De izquierda a derecha, los campos significan:

- Login del usuario.

- Hash MD5 del password. Si esta en blanco significa que esa cuenta no necesita password. Si contiene un asterisco * significa que la cuenta está deshabilitada.

- El numero de dias desde el 1 de Enero de 1970 que han pasado desde la ultima vez que se cambió el password.

- El numero de dias que ha de esperar el usuario para poder cambiar su password. Un 0 significa que el passwor puede ser cambiado en cualquier momento.

- El numero de dias restantes para que el usuario sea obligado a cambiar el password. Si ese valor es 99999, el usuario no esta obligado a cambiar su contraseña.

- El numero de dias de antelacion con que se avisará al usuario de que su password esta a punto de expirar.

- El numero de dias que tienen que pasar para que la cuenta sea deshabilitada despues de que el password caduque.

- El numero de dias desde el 1 de Enero de 1970 que han pasado desde que se deshabilitó la cuenta.

- Un campo reservado para uso futuro.

Merece la pena destacar, que UNIX por defecto utiliza “salts”. A grandes rasgos esto significa que al password original se han añadido (tipicamente) 12 bits aleatorios de tal manera que para cada posible password, hay 4096 hashes posibles. Esto hace que por ejemplo sea imposible ver a simple vista que dos usuarios utilizan el mismo password o que la creacion de diccionarios de hashes MD5 precomputados sea más dificil.

- El proceso de autenticación.

El proceso de autenticacion ante una máquna UNIX es más o menos así.

Cliente: Quiero conectarme.

Servidor: OK, quien eres?

Cliente: Soy el usuario “Vicentin”.

Servidor: OK, Vicentín, cual es tu contraseña?

Cliente: Mi contraseña es “SiempreAtOpE-5.0″

Ahora el servidor lee el hash que corresponde al usuario “Vicentin” y ve que es “3497db22a28ce7cccf392ed4ba1c99c4″. Aplica el algoritmo MD5 al password recibido desde la conexion con Vicentin y sale “3497db22a28ce7cccf392ed4ba1c99c4″. Comprueba si son iguales y como lo son:

Servidor: Acceso Concedido: Bienvenido Vicentín.

- Crackeando las contraseñas

Bueno, todo esto es muy bonito, pero, ¿Como de seguro es este sistema? ¿Puedo estar tranquilo? La respuesta es complicada.

Si tenemos acceso físico a la máquna UNIX, facilmente podremos arrancar desde un LiveCD, montar la particion correspondiente (con el LiveCD tenemos privilegios de root) y robar los ficheros passwd y shadow.

Si no tenemos acceso fisico la cosa se vuelve muchisimo más complicada. Tendríamos que encontrar alguna vulnerabilidad que se pudiera explotar para hacer una escalada de privilegios y hacernos con ambos ficheros y esto es algo que requiere bastantes más conocimientos.

En cualquier caso voy a suponer que ya tenemos la lista de logins con sus correspondientes contraseñas hasheadas con MD5. Ahora vamos a utilizar John The Ripper, uno de los crackeadores de contraseñas más populares, que además es Open Source. Un crackeador de contraseñas es un programa que prueba diferentes passwords, uno tras otro, hasta dar con el correcto.

A la hora de probar combinaciones tenemos dos opciones, probar palabras de diccionario o probar todas las combinaciones posibles.

A lo primero se le llama un “Dictionary Attack” y suele ser más efectivo en terminos de tiempo, ya que es más probable que un usuario utilize passwords como “guitarra”, antes que “4xs$”dfer”. Un dictionary attack suele incorpar tambien algo de heurística, de tal manera que no solo se prueban las palabras del diccionario,

...

Descargar como (para miembros actualizados) txt (24 Kb)
Leer 15 páginas más »
Disponible sólo en Clubensayos.com