Está en la página 1de 33

0

Ingeniería en sistemas computacionales

Asignatura: Seguridad en Tic’s

Catedrático: Dr. Eduardo de la Cruz Gámez

Practica 3: Crack contraseñas S.O

Integrantes del equipo

1. Cuevas Núñez Carlos


2. Rodríguez Serrano Oscar
3. Solano Hernández Cinthya Vianey
4. Valle Chávez Ismael

Horario 8:00 – 9:00 a.m.

Noviembre 2014
Práctica Crack de Contraseñas de Sistemas Operativos

Objetivo
Demostrar que una mala implementación de las contraseñas de usuarios pueden poner en
peligro los recursos de una organización.

Objetivos específicos
 Analizar el funcionamiento de los servicios de gestión de contraseñas en sistemas
operativos LINUX y Windows, documentar sus fortalezas y sus debilidades.
 Investigar sobre los algoritmos de cifrado usados en los gestores de contraseñas.
 Llevar a cabo un ataque usando una aplicación de crack (pwdump, cain & Abel, Ophcrack,
etc.), mediante las técnicas de fuerza bruta, diccionario, ataque hibrido, etc.
 Realizar un reporte técnico de los experimentos.

Condiciones de la práctica
Dar de alta a los siguientes usuarios y contraseñas, llenar la tabla de resultados:

Usuario Contraseña Nivel de Tiempo en Técnica Éxito Observaciones


fortaleza ejecución en el
ataque
uno abcdefg Bajo 3 minutos Fuerza SI Longitud de 7 caracteres,
bruta debilidad en su fortaleza,
factible de encontrar en
ataque por diccionario.
dos 12345678
tres 123abc
cuatro Leonardo
cinco kavkaz
seis a.7FeN3z
siete 3.14.16.
ocho airAd
*** Solo esta contraseña debe ser anexada en la base de datos del diccionario utilizado para la
práctica; se asume que los datos recabados para esta contraseña fueron obtenidos por Ingeniería
Social, es un nombre compuesto y propio, aunque manipulado en diversas variantes,
originalmente es DAIRA.

Datos adjuntos
Tiempo total de las corridas dedicadas al ataque en Windows:
Tiempo total de las corridas dedicadas al ataque en Linux:
Procesador y memoria dedicada en la máquina que realizó el ataque:
Tamaño del diccionario empleado:

Anexar evidencia de los ataques y de los datos recabados.


Índice
1. Introducción.................................................................................3

2. Marco teórico..............................................................................4

3. Desarrollo..................................................................................12
3.1 Desarrollo crack contraseñas Windows...................................12
3.2 Desarrollo crack contraseñas de Linux....................................21

4. Conclusión.................................................................................30

5. Bibliografía................................................................................30
1. Introducción

Hoy en día la confidencialidad de los datos es uno de los objetivos principales de


la seguridad en cómputo y uno de los mecanismos para lograrla mediante el uso
de contraseñas.

Imaginemos que la contraseña es el tipo de candado, cerradura, cerrojo, etc. con


el que uno asegura su casa. Si uno utiliza un candado de papel, ¿Cuánta
seguridad puede proporcionar al objeto que se desea resguardar?

El uso de contraseñas se remonta a la antigüedad: los centinelas que vigilaban


una posición solicitaban el «santo y seña» al que quisiera pasar. Solamente le
permiten el acceso a aquella persona que conoce la seña.

Hoy en día, el método más habitual para acceder a la información almacenada en


nuestros ordenadores, correo electrónico y otros servicios es mediante
contraseña. La contraseña es una información secreta que se nos solicita para
acceder a algún tipo de recurso, y que solo debe conocer el propietario del mismo.

El problema principal de la seguridad radica en el empleo de contraseñas débiles


para la protección de los datos, ya que esto permite que los intrusos realicen
distintos ataques contra sistemas tratando de comprometer su seguridad.

La mejor solución ante ello es el empleo de contraseñas robustas que otorguen un


grado de seguridad más elevado para la protección de la información. Uno de los
inconvenientes principales en el empleo de contraseñas robustas es que son
difíciles de recordar, sin embargo existen técnicas que permiten utilizarlas sin
necesidad de anotarlas en algún lugar físicamente o decírselas a alguien más.

El objetivo de este trabajo es concientizar sobre la importancia de las contraseñas


para la seguridad de la información, revisaremos el funcionamiento de los
servicios de gestión de contraseñas en sistemas operativos LINUX y Windows.
Investigaremos sobre los algoritmos de cifrado usados en los gestores de
contraseñas y realizaremos un ataque a través de una aplicación de crack.
2. Marco teórico
¿Qué es una contraseña?

En informática una contraseña es una clave que permite el acceso a algún recurso
y que brinda seguridad en las comunicaciones. La contraseña evita el acceso de
usuarios sin autorización y normalmente debe mantenerse en secreto ante
aquellos a quien no se les permite el acceso. En los sistemas informáticos
actuales cada contraseña está ligada a un único usuario por lo que la contraseña
puede ser cambiada o se puede negar el acceso a un usuario sin afectar a los
demás

¿Cómo funcionan las contraseñas?

A la hora de crear una cuenta de usuario o de restringir un recurso, se nos pide


teclear la contraseña por primera vez. Generalmente debemos introducirla dos
veces para evitar errores de tecleo. Una vez que hemos establecido la contraseña,
ésta es almacenada en un medio permanente como un archivo o una base de
datos en el disco duro.

Figura 1: Proceso de creación de contraseña

Anteriormente las contraseñas eran guardadas tal cual en algún archivo de texto
escondido en el sistema. Este método era sumamente inseguro ya que si alguien
averiguaba o encontraba dicho archivo, las contraseñas podían ser vistas
inmediatamente y el equipo así como la información sensible eran vulnerables.
Actualmente, antes de guardar una contraseña, el sistema le aplica una serie de
operaciones matemáticas para convertirla en información imposible de interpretar
a simple vista, es decir codifica o cifra la contraseña.
Formas de almacenar contraseñas
Algunos sistemas almacenan contraseñas como archivos de texto. Si algún
atacante gana acceso al archivo que contienen las contraseñas, entonces todas
estas se encontrarán comprometidas. Si algunos usuarios emplean l diferentes
cuentas, éstas estarán comprometidas de igual manera. Los mejores sistemas
almacenan las contraseñas en una forma de protección criptográfica, así, el
acceso a la contraseña será más difícil para algún espía que haya ganado el
acceso interno al sistema, aunque la validación todavía sigue siendo posible.
Un esquema criptográfico común almacena solamente el texto de la contraseña
codificado, conocido como hash. Cuando un usuario teclea la contraseña en este
tipo de sistema, se genera a partir de la contraseña y mediante un algoritmo el
código hash equivalente para esa contraseña, y si el resultante (hash) coincide
con el valor almacenado, se permite el acceso al usuario.
El texto codificado de la contraseña se crea al aplicar una función criptográfica
usando la contraseña y normalmente, otro valor conocido como salt en inglés.
El salt previene que los atacantes construyan una lista de valores para
contraseñas comunes. Las funciones criptográficas más comunes son
la MD5 y SHA1. Una versión modificada de DESfue utilizada en los primeros
sistemas Unix.
Si la función que almacena la contraseña está bien diseñada, no es
computacionalmente factible revertirla para encontrar el texto directamente. Sin
embargo, si algún atacante gana acceso a los valores (y muchos sistemas no los
protegen adecuadamente), puede usar gran cantidad de herramientas disponibles
para comparar los resultados cifrados de cada palabra dentro de una colección,
como un diccionario. Están ampliamente disponibles largas listas de contraseñas
posibles en muchos lenguajes y las herramientas intentarán diferentes
variaciones, muestran con su existencia la relativa fortaleza de las diferentes
opciones de contraseña en contra de ataques.

Pasemos a explicar los siguientes conceptos, pues son básicos para la


comprensión de lo que se explicará más adelante.

- Al hecho de cifrar o codificar la contraseña (o cualquier dato) se le llama


encriptar.
- El método, los pasos o el proceso interno que se sigue para cifrar la
contraseña se le conoce como algoritmo.
- El resultado de codificar la contraseña (es decir la contraseña ya cifrada) se
llama hash (en plural hashes)
Generalmente los algoritmos que se usan para cifrar contraseñas son
irreversibles, es decir que una vez encriptada la contraseña NO puede ser
desencriptada. De esta manera, si tenemos acceso al archivo donde se guardan
los hashes, no podemos “deshacer” el proceso para ver las contraseñas.

Figura 2: Cifrado de contraseñas

Pero si los hashes no se pueden “deshacer”, ¿Cómo sabe entonces el sistema


que he introducido la clave correcta? Cuando una contraseña es encriptada, el
algoritmo usado generará un hash. En teoría, el hash es único para cada
contraseña por lo que la misma contraseña siempre resultará en el mismo hash.

Figura 3: Aplicación Hash

No importa que las contraseñas sean muy parecidas, el hash será


sustancialmente diferente, como podemos observar con “pepe - PEPE” y “jabón -
jamón”. Una parte de la seguridad del sistema depende del algoritmo usado para
encriptar las contraseñas, pues hay algoritmos más seguros que otros. En este
ejemplo se usó un algoritmo llamado MD5.

Una vez que nuestra contraseña ya está almacenada en el sistema y tratamos de


acceder al recurso protegido, se nos pedirá confirmar nuestra identidad por medio
de la contraseña. Cuando la introducimos el sistema calculará el hash y se
comparará con el hash almacenado previamente. Si los hashes son iguales se
permite el acceso, en caso contrario se niega. Esto es más o menos lo que haría
nuestra computadora si iniciamos sesión y colocamos la contraseña incorrecta:

Figura 4: Proceso de acceso denegado


Pero si introducimos la contraseña correcta:

Figura 5: Proceso de acceso autorizado

¿Cómo averiguar una contraseña?

Si bien las contraseñas están pensadas para proteger datos y recursos, al mismo
tiempo son la parte más débil de cualquier sistema de seguridad puesto que
deben ser recordadas por humanos y los humanos no somos perfectos. Hay
muchas maneras de averiguar la contraseña de un usuario.

La debilidad de las contraseñas consiste en que los usuarios frecuentemente:


- Usamos la misma contraseña para varias cuentas
- Usamos las contraseñas que vienen por defecto (como “administrador” o
“1234”)
- Usamos contraseñas muy fáciles de adivinar (nuestro nombre, fechas de
nacimiento y cumpleaños, etc…)
- Anotamos las contraseñas en lugares inseguros (en un papelito debajo del
teclado por ejemplo)

Las contraseñas pueden ser averiguadas de muchas maneras, algunas bastante


conocidas son:

Ingeniería social: La forma más antigua y quizás la más efectiva. Consiste en


engañar o extorsionar al usuario para que él mismo proporcione la contraseña.
Por ejemplo haciéndonos pasar por el administrador y diciéndole “estamos dando
mantenimiento a todas las cuentas y encontramos un problema de corrupción de
datos en la suya, por favor sería tan amable de proporcionarnos su contraseña
para que lo arreglemos y pueda trabajar sin problemas”. Funciona más seguido de
lo que se pueden imaginar.

Ataque de fuerza bruta: Consiste en obtener un hash y probar una a una todas
las posibles contraseñas. Imaginemos que tenemos un candado de esos de
bicicletas con una combinación de tres dígitos. Probaremos todas las
combinaciones, una a una, hasta que encontremos la correcta. Pero las
contraseñas informáticas pueden tener letras, números y símbolos, y pueden
contener un gran número de elementos que permiten infinidad de combinaciones,
por lo cual debemos establecer un límite de longitud y los caracteres que
queremos probar (por ejemplo intentar sólo con letras minúsculas y números).
Entre más caracteres y más longitud seleccionemos el proceso será más tardado
porque el número de combinaciones posibles crece exponencialmente, a veces
puede llegar a durar años. Pero si la contraseña es corta y no contiene caracteres
extraños el proceso puede acortarse considerablemente. Es como si la clave del
candado de la bicicleta fuera 001 sólo debemos hacer un intento antes de poder
abrirlo.

Figura 6: Ejemplo proceso fuerza bruta

Ataque de diccionario: Es muy parecido al proceso anterior, excepto que en vez


de probar todas las contraseñas posibles, nos limitamos a unas cuantas
contraseñas comunes almacenadas en una lista llamada “diccionario”.
Funciona con contraseñas sencillas y obvias, pero debido al número limitado de
contraseñas disponibles en un diccionario muchas veces falla. Algunos programas
permiten hacer alteraciones a cada palabra del diccionario como es invertir la
palabra, añadir mayúsculas, añadir un número al final, etc… lo cual nos da más
posibilidades de hallar la contraseña que buscamos.

Algoritmo de cifrado de contraseñas en Windows

Un usuario habitualmente se identifica en Windows proporcionando la contraseña


en una cuenta asociada a la misma. Toda esta información, y alguna más, se
almacena en el Security Account Manager (SAM).

Todos conocemos las cuentas de usuario de Windows XP, que nos permiten tener
nuestro escritorio y documentos separados del de los otros usuarios. El problema
de las contraseñas de usuario en Windows XP y versiones anteriores es que por
cada contraseña almacena dos hashes; uno generado por el algoritmo LM y otro
por el NTLM.
Estos algoritmos de cifrado se dice que son unidireccionales ya que una vez
cifrada la contraseña no puede realizarse el proceso inverso, es decir, a partir de
un hash no puede obtenerse la contraseña original.

Los programas de cracking de contraseñas, básicamente funcionan cifrando textos


y comparando el hash obtenido con el de una cuenta determinada. Si ambos
coinciden se abra encontrado la contraseña original.

Es lógico pensar que si se comparan dos hashes en vez de uno, el sistema debe
ser por lo menos el doble de seguro, pero enseguida veremos que no es ni la
mitad de seguro, puesto que el algoritmo LM tiene muchas debilidades. Veamos
de manera general cuál es su algoritmo:

1. El usuario introduce la contraseña


2. La contraseña se convierte a mayúsculas
3. La contraseña se corta a 14 caracteres
4. Se divide en dos partes de 7 caracteres
5. Se calcula el hash de cada parte de manera individual
6. Se unen los dos hashes

Figura 7: Algoritmo LM

¿Y bien? ¿De qué nos sirve saber todo esto? Hagamos unos cálculos. Hay 26
letras en el abecedario anglosajón, cada letra se puede escribir en mayúscula o
minúscula, además de haber 10 dígitos (del 0 al 9), y digamos 32 símbolos (!@#$
%^&*()-_+=~`[]{}|\:;"'<>,.?/). Si quisiéramos tener una contraseña de un solo
carácter tendríamos 94 posibles contraseñas (26 mayúsculas + 26 minúsculas +
10 dígitos +32 símbolos). Para una contraseña de 14 caracteres tendríamos que
elevar 94 a la 14, con la ayuda de una calculadora obtenemos un numerote de
más de ¡4 mil cuatrillones de posibles contraseñas! Una PC casera
moderadamente rápida puede codificar 4 millones de contraseñas por segundo. Si
hiciéramos un ataque de fuerza bruta, ayudándonos de nuestra calculadora (y si
no fallan mis cálculos), podríamos tardar hasta ¡33 billones de años! es decir 33
millones de millones de años, lo cual es una eternidad.

Figura 8: Calculo total de las combinaciones posibles y longitud 14

¿Pero qué pasa con el algoritmo LM? Que sólo permite 26 letras posibles (porque
no hay minúsculas) más los números y símbolos. Además de que divide la
contraseña en dos partes de 7 caracteres, así que no importa que tu contraseña
sea de 14 caracteres porque es como si tuvieras dos contraseñas de 7. Si
quisiéramos tener una contraseña de un solo carácter tendríamos tan solo 68
opciones posibles. Con una contraseña de 7 caracteres tenemos tan solo 6
billones de posibles contraseñas, lo cual se queda corto contra los 4 mil
cuatrillones. Si calculamos el tiempo máximo que nos llevaría encontrar la
contraseña por fuerza bruta serían más o menos 20 días, lo cual comparado con
33 mil millones de años, no es nada.

Figura 9: Calculo con algoritmo lm

Para comprobar el funcionamiento de estos algoritmos realizaremos un


experimento a través del cual crearemos algunos usuarios e intentaremos obtener
las contraseñas de usuario para tener acceso al sistema.
Algoritmo de cifrado de contraseñas en Linux

Al poner una contraseña a un usuario, una función hash la cifra con el algoritmo
determinado según sea el cifrado. Toma un bloque arbitrario de datos y devuelve una
cadena con una determinada longitud (valor hash). Los datos para ser codificados son
denominados “el mensaje” y el valor hash se le denomina “message digest” o
simplemente “digest”.

Pero no es todo… pues si dos contraseñas fueran iguales o supiéramos el


algoritmo usado quizás podríamos descifrarlo sabiendo unas cuantas contraseñas
básicas y comparando el digest hasta sacar unas equivalencias.

Para evitar esto y cerrar completamente el cerco de seguridad de la contraseña,


se le añaden los bit salt, que son datos al azar añadidos a la contraseña para
posteriormente cifrar con el hash.

En términos de cifrado hay varios algoritmos (de cifrado seguro) hash usados, $6$
indica en qué tipo de hash está mi contraseña cifrada, en este caso se trata de
SHA-512, (Secure Hash Algorithm) y por lo tanto tiene 86 caracteres en total.

$1$=MD5 (22 caracteres)


$2$=blowfish
$5$=SHA-256 (43 Caracteres)
$6$=SHA-512 (86 Caracteres)
ALGORITMOS DE CLAVE SIMÉTRICA

RC4

Es un algoritmo de tamaño de clave variable con operaciones a nivel de byte. Se


basa en el uso de una permutación aleatoria y tiene un periodo estimado de más
de 10100. El algoritmo se emplea para encriptación de ficheros y para encriptar la
comunicación en protocolos como el SSL (TLS).
RC4 es un algoritmo sorprendentemente simple. Este consiste en 2 algoritmos: 1-
Key Scheduling Algorithm (KSA) y 2- Pseudo-Random Generation Algorithm
(PRGA). Ambos de estos algoritmos usan 8-by-8 S-box, el cual es solo un array de
256 números en el cual ambos son únicos en cuanto a rango y su valor va desde 0
hasta 255. Todos los números de 0 a 255 existen dentro del array, pero están solo
mezclados de diferentes maneras, el KSA se encarga de realizar la primera
mezcla en el S-Box, basado en el valor de la semilla dada dentro de él, y esta
“semilla” puede ser de 256 bits de largo.

RC5

El RC5 es un algoritmo parametrizable con tamaño de bloque variable, tamaño de


clave variable y número de rotaciones variable. Los valores más comunes de los
parámetros son 64 o 128 bits para el tamaño de bloque, de 0 a 255 rotaciones y
claves de 0 a 2048 bits. Fue diseñado en 1994 por Ron Rivest.
El RC5 tiene 3 rutinas: expansión de la clave, encriptación y desencriptación. En la
primera rutina la clave proporcionada por el usuario se expande para llenar una
tabla de claves cuyo tamaño depende del número de rotaciones. La tabla se
emplea en la encriptación y desencriptación. Para la encriptación sólo se emplean
tres operaciones: suma de enteros, o-exclusiva de bits y rotación de variables.

SKIPJACK

El Skipjack es un algoritmo de cifrado diseñado por la Agencia de Seguridad


Nacional para proteger datos a nivel gubernamental en los Estados Unidos.
Algoritmo descifrado en un bloque de 64 bits que emplea claves de 80 bits,
desarrollado por la National Security Agency (NSA) Estadounidense para su
implementación en los chips Clipper y Capstone que emplean mecanismos de
depósitos de claves.
DES (Data Encryption Standard).

El algoritmo DES usa una clave simétrica de 64bits, los 56 primeros bits son
empleados para el cifrado, y los 8 bits restantes se usan para comprobación de
errores durante el proceso. La clave efectiva es de 56 bits, por lo que la fuerza
bruta se hace casi imposible.

3DES (Triple Data Encryption Standard)

Se basa en aplicar el algoritmo DES tres veces, la clave tiene una longitud de 128
bits. Si se cifra el mismo bloque de datos dos veces con dos llaves diferentes (de
64 bits), aumenta el tamaño de la clave.
El 3DES parte de una llave de 128 bits, que es divida en dos llaves, A y B.

ALGORITMOS DE CLAVE ASIMÉTRICA

Algoritmos de autenticación (o hash)

Los más conocidos y usados son MD5 y el SHA-1. Son algoritmos que a partir de
un bloque de entrada, generan otro bloque de salida de una longitud fija
determinada.

MD4

MD4 es un algoritmo de resumen del mensaje (el cuarto en la serie) diseñado por
el profesor Ronald Rivest del MIT. Implementa una función criptográfica de hash
para el uso en comprobaciones de integridad de mensajes. La longitud del
resumen es de 128 bits.

Ciertas debilidades en MD4 fueron demostradas por Den Boer y Bosselaers en un


documento publicado en 1991. Muchos de los diseños posteriores de resumen del
mensaje basados en él siguen siendo seguros, en el sentido que no se ha
publicado ningún ataque eficaz contra ellos.
3. Desarrollo

3.1 Desarrollo crack contraseñas Windows

El objetivo es obtener la base de datos SAM de Windows XP desde Kali Linux y


crackear las contraseñas de manera de poder tener acceso a Windows.

- Características del Equipo: Toshiba Satellite c845 Core I3, 4GB RAM,
HDD 500GB.
- Sistema operativo instalado: Windows XP SP3
- Herramienta Livecd: Distribución Kali Linux 64bits
- Herramientas para crackear la base de datos SAM: Bkhive, samdump2 y
John the ripper
- Diccionario rockyou.txt de tamaño 130 MB, diccionario que trae por default
kali linux

Preparación de las herramientas

Contamos con nuestro sistema operativo Windows en el cual crearemos las ocho
cuentas de usuario con su respectiva contraseña que ha sido establecida al inicio
del documento.

Descargamos el LiveCd de nuestra distribución Kali Linux y la montamos en una


usb booteable para comenzar el procedimiento.
Proceso de crack de contraseñas
Una vez cargada e iniciada la livecd de Kali Linux abrimos la consola de
comandos de Kali y tecleamos la siguiente secuencia de comandos a efectos de
ver y montar el disco de Windows.

1.- fdisk –l // Permite ver la tabla de particiones

Figura 1: Tabla de particiones del disco duro

Una vez que apreciamos la lista de particiones que se encuentran en el disco


duro, debemos identificar la que nos será de utilidad y el sistema que deseamos
tener acceso. Lo siguiente será acceder a la base de datos SAM del sistema
operativo Windows al que queremos tener acceso. Para lo cual escribiremos la
siguiente lista de comandos.

2.- mount –t ntfs /dev/sdb5 /mnt // mount montara un filesystem y como es un


filesystem de Windows se utiliza la opción “-t ntfs”
3.- df –k // Reporta el espacio en disco usado
Para ver el contenido del Windows XP usaremos las siguientes instrucciones
4.- cd /mnt // Como montamos en mnt la unidad, ingresamos con cd allí.
5.- ls // Lista el contenido del directorio
6.- cd WINDOWS/system32/config // Aquí es donde reside la base de datos
SAM, donde están guardadas todas las contraseñas.
Figura 2: Acceso a directorio donde se encuentra ubicado SAM

Para saltar el cifrado Syskey, primero debemos extraer el syskey del registro y
luego usar esa misma clave para descifrar el archivo SAM. Para realizar este
primer paso vamos utilizar una herramienta llamada Bkhive. Y continuación
extraeremos el hash del archivo SAM, para esto utilizaremos Samdump2

Usaremos el bkhive y el samdump2

7.- ls // Lista el directorio de WINDOWS/system32/config


8.- bkhive system /root/hive.txt // “dumpea” el syskey bootkey del Windows XP
9.- samdump2 SAM /root/hive.txt > /root/hash.txt // extrae los hashes del
hive.txt previamente dumpeado y los copia en hash.txt
Figura 3: Extracción de los hashes previamente dumpeados

Procedemos a ver el contenido de los hash recuperados

10.- cd /root // Cambiamos el directorio a root porque ahí pusimos los archivos
hive y hash
11.- ls –l *.txt //Listamos los archivos que terminen en txt de ese directorio
12.- file *.txt // Determinamos el tipo de archivo de cada uno de los .txt
encontrados vemos que hash es ASCII y hive es (DoS Executable ROM)
13.- cat hash.txt // Vemos los contenidos del archivo hash.txt donde podemos
evidenciar nuestros usuarios con su hash correspondiente a la derecha.

Figura 4: Evidencia de usuarios y su hash correspondiente


Usando John The Ripper

Ahora tenemos que utilizar la herramienta que nos falta john the ripper para
conseguir la clave, por defecto utiliza el método por fuerza bruta.

14.- john /root/hash.txt –format=nt2 -users=uno // John es una herramienta


de password cracking por lo que una vez corrido guarda el resultado en el
directorio .john en el directorio del usuario, por ejemplo (/root/.john) repetimos el
proceso por cada usuario.

Figura 5: Obtención de las primeras cuatro contraseñas del sistema operativo windows
Figura 6: Obtención de contraseña cinco e inicio de seis

Figura 7: Duración e intentos al obtener contraseñas robustas


Figura 8: Intento y duración para obtener la contraseña del usuario siete

Para la última contraseña haremos uso del diccionario editamos el diccionario que
se encuentra en la ruta /home/usr/share/wordlist y editaremos el diccionario que
utiliza por defecto “rockyou”. Agregamos la contraseña que hemos adquirido por
ingeniería social “airAd” y comenzamos a ejecutar John en la terminal.

Figura 9: Anexo a nuestro diccionario de la contraseña airAd obtenida por ingeniería social
Figura 10: obtención de contraseña ocho por diccionario

Con el resultado de este experimento queda demostrada la facilidad con que se


pueden adquirir las contraseñas que muchas veces los usuarios por comodidad
incluyen en sus cuentas, sin tomar él cuenta el gran riesgo que esto conlleva. Para
los casos de contraseñas robustas el resultado de aplicar fuerza bruta se puede
apreciar que toma un largo e indeterminado tiempo dependiendo de la complejidad
con la que haya sido creada la contraseña.

Resultados

Usuario Contraseña Nivel de Tiempo en Técnica Éxito Observaciones


fortaleza ejecución en el
ataque
uno abcdefg Bajo 0:00:00:00 Fuerza SI Longitud de 7 caracteres, de
bruta nivel débil al ser una
secuencia muy utilizada que
permite encontrar
instantáneamente.
dos 12345678 Bajo 0:00:00:00 Fuerza Si Es una contraseña sencilla
Bruta que por ser una secuencia
numérica continua es de las
primeras opción a probar en
un diccionario.
tres 123abc Bajo 0:00:00:00 Fuerza Si Combina números y letras
Bruta pero en una forma fácil para
descifrar por un probador de
contraseñas
cuatro Leonardo Bajo 0:00:00:00 Fuerza Si Contraseña débil al ser un
Bruta nombre propio que facilita el
ataque.
cinco kavkaz Medio 0:00:03:24 Fuerza Si Combinación de caracteres
Bruta sin aparente coherencia,
pero no posee variaciones de
mayúsculas ni caracteres
especiales por lo que se
necesitan relativamente
pocas combinaciones para
encontrarla.
seis a.7FeN3z Alto 28 horas Fuerza No Combinación de caracteres,
Bruta letras y números que no
siguen una secuencia ni
combinación coherente.
Después de un periodo
extenso no hubo éxito en
obtener la clave.
siete 3.14.16. Alto 18 horas Fuerza No Longitud de 8 caracteres, su
Bruta fortaleza se encuentra en la
combinación de caracteres.
Después de un periodo
extenso no hubo éxito no
hubo éxito en obtener la
clave.
ocho airAd Bajo 0:00:03:02 Diccionario Si Contraseña con 5 caracteres
su longitud es pequeña y
puede ser encontrada por
combinación de caracteres
3.2 Desarrollo crack contraseñas de Linux

Herramientas utilizadas y otras cuestiones


● Computadora utilizada
○ CPU AMD Athlon(tm) X2 240 Processor × 2
○ 2 GB Memoria RAM
● Sistema operativo utilizado
○ Linux mint 17 Qiana (Donde se crearon las contraseñas)
○ Kali Linux 32bits (Donde se utilizó el programa John the Ripper)
● Herramienta utilizada
○ John the Ripper password cracker, ver: 1.7.9-jumbo-7_omp [linux-
x86-sse2] Copyright (c) 1996-2012 by Solar Designer and others
Homepage: http://www.openwall.com/john/
○ Diccionario rockyou.txt de tamaño 130 MB, diccionario que trae por
default kali linux
○ Diccionario passwords.lst de tamaño 26.5 KB, diccionario propio de
John the Ripper
○ Diccionario lower descargado de los repositorios de John the Ripper,
que es una lista de claves para el idioma español
● Número de corridas 5 iteraciones
○ 3 iteraciones con fuerza bruta
○ 2 iteraciones con diccionario

Experimento

Kali linux es un Sistema operativo con diferentes herramientas para la auditoría de


todo tipo de sistemas, incluyendo sistemas como Windows o Linux. Para este
experimento se utilizaron dos sistemas operativos de linux, denominados
distribuciones o distros, el primero de ellos es Linux Mint, se trata de una
distribución de linux que está de moda en días recientes, y la distribución Kali que
es la sucesora de la antigua distribución Backtrack dedicada a la auditoría. En
Linux Mint se crearon los siguientes usuarios.

Estos usuarios fueron añadidos con el comando useradd [Nombre de usuario], y


para asignarle una contraseña, passwd [Usuario al que se le va a asignar la
contraseña].
Figura 1 Usuarios introducidos al repositorio de claves

Figura 2 Usuarios introducidos al repositorio de claves


Al crear estos usuarios, se procedió a reiniciar el sistema Linux Mint y entrar con el
sistema Kali Linux. Para realizar este ataque se utilizó la herramienta John the
Ripper, que viene integrada en la distro Kali.
Primero lo que hacemos es abrir la herramienta, la cual la encontramos en
Applications->Kali Linux->Password Atacks->Offline Atacks->John, damos clic
donde dice john y se nos abrirá una ventana donde nos aparecerá esto.

Figura 3 Probando si funciona Jonh the Ripper

Cuando nos sale eso, quiere decir que nuestra versión de John the Ripper se
encuentra instalada, procedemos a lo siguiente. Linux guarda sus usuarios y
contraseñas en dos únicos archivos, que se encuentran ubicados en /etc, estos
archivos son llamado shadow y passwd, en el primero están los usuarios y en el
segundo archivo estan las contraseñas, lo primero que vamos a hacer es extraer
estos dos archivos y guardarlos en el directorio donde los vamos a ocupar, para
este caso en /home, en la siguiente imagen podemos ver estos archivos.

Figura 4 Buscando los archivos passwd y shadow


Estos dos archivos los copiamos al directorio donde trabajaremos en /home.

Figura 5 Copiado a la carpeta donde trabajaremos con John the Ripper

Al tener estos dos archivos en el directorio donde los ocuparemos procedemos a


ocupar el comando unshadow, el cual se encarga de unir estos archivos en uno
solo, con el cual podremos trabajar libremente, esto se hace de la siguiente
manera.

Figura 6 Uniendo los dos archivos con el comando unshadow


El comando es el siguiente unshadow [archivo passwd] [archivo shadow] >
[Archivo completo donde se guardará la unión de estos dos archivos].
Después de hacer esto vamos a utilizar este archivo, para crackear las
contraseñas para esto utilizamos el comando john [archivo completo], como se ve
en la imagen siguiente, y esperamos a que encuentre las contraseñas de los
archivos.

Figura 7 ejecutando John the ripper con el archivo que generamos del comando unshadow

Figura 8 En los primeros minutos de la 1 iteración género 4 claves


Figura 9 Después de 12 horas de ejecución de John the ripper en la tercera iteración procedemos a abortar
el proceso

Figura 10 Utilizando Diccionario rockyou.txt, después de haber utilizado lower unido con passwords sin
haber encontrado ninguna contraseña

Figura 11 Se posiciono la contraseña del archivo ocho en el diccionario y en 2 horas la calculo


Figura 12 Al haber pasado la 5 iteración y 6 horas de ejecución encuentra la contraseña del usuario cinco

Figura 13 Intentos para encontrar las contraseñas de los usuarios seis y siete, no obteniendo éxito
El uso de jonh the ripper no siempre encuentra las contraseñas, como podemos
ver dos contraseñas son las que no fue capaz de encontrarlas, ni por fuerza bruta
ni por diccionario, de esta manera terminamos la práctica y con los siguientes
tiempos, tomando en cuenta que fueron 5 corridas del programa, en donde 3 son
con fuerza bruta, en dos de ellas termino en menor tiempo con un error fatal y en
la última más tardada de 18 horas, no encontró las contraseñas de alto nivel.

Resultados

Usuario Contraseña Nivel de Tiempo en Técnica Éxito Observaciones


fortaleza ejecución en el
ataque
uno abcdefg Bajo 0:00:01:08 Fuerza SI Contraseña muy débil, fue
bruta encontrada por fuerza
bruta y diccionario al
instante.
dos 12345678 Bajo 0:00:01:00 Fuerza Si Contraseña muy débil, fue
Bruta encontrada por fuerza
bruta y diccionario en
cuestión de minutos
tres 123abc Bajo 0:00:01:00 Fuerza Si Contraseña débil, fue
Bruta encontrada en un minuto
en el modo de fuerza
bruta, en diccionario tardó
más tiempo.
cuatro Leonardo Bajo 0:00:02:50 Fuerza Si Contraseña débil, Al ser
Bruta un nombre es buscada al
principio por fuerza bruta,
y encontrada en tan solo
unos minutos.
cinco kavkaz Medio 6 horas 10 Diccionario Si Contraseña media, por
minutos fuerza bruta no fue capaz
de encontrarse, mientras
que fue encontrada en el
diccionario, tardando un
poco.
seis a.7FeN3z Alto 18 horas Fuerza No Contraseña muy fuerte
10 Bruta pues por fuerza bruta no
minutos fue capaz de encontrarse,
por diccionario solamente
sería encontrada si se
tomara en cuenta puntos,
números, mayúsculas,
minúsculas entrelazadas,
pero el diccionario no la
trae integrada.
siete 3.14.16. Alto 18 horas Fuerza No Contraseña fuerte, a pesar
10 Bruta de contener solo números
minutos y puntos, por fuerza bruta
no fue capaz de
encontrarse, y el
diccionario no trae
integrada esta contraseña.
ocho airAd Bajo 2 horas 10 Diccionario Si Contraseña media, al
minutos tratarse solo de letras
entre minúsculas y
mayúsculas, un ataque
por este medio es sencillo
para usarlo con un
diccionario, mientras que
para el uso en fuerza
bruta no se encontró la
solución.
4. Conclusión
El desarrollo de esta práctica nos permitió abordar el tema de la importancia que
tienen actualmente la información y como la apropiada elección en el proceso de
crear contraseñas puede ofrecer una mayor seguridad ante ataques a las cuentas
de los usuarios permitiendo así el difícil acceso a información personal.

Revisamos el proceso que llevan a cabo los servicios de gestión de contraseñas


en sistemas operativos LINUX y Windows. El proceso de cifrado y los algoritmos
que son utilizados por cada uno de los sistemas.

Realizamos un ataque a los sistemas operativos aplicando diccionarios e incluso


realizando ataques por fuerza bruta donde podemos comprobar el tiempo que
toma poder obtener una contraseña con seguridad fuerte.

Dependiendo del nivel de fortaleza que se emplee para generar la contraseña


tendrá un efecto en el tiempo que toma obtenerla por ataque de fuerza bruta,
donde las combinaciones más usuales suelen encontrarse rápidamente, caso
contrario a cuando se utiliza combinación de caracteres que eleva el nivel de
fortaleza pudiendo demorar, inclusive días en lograr obtener un resultado exitoso.

La finalidad es concientizar en la vulnerabilidad que presentan las contraseñas a


las cuales muchas veces por cuestiones de comodidad se toman patrones muy
comunes y fáciles de obtener

5. Bibliografía
http://www.seguridad.unam.mx/usuario-casero/eduteca/main.dsc?id=185

http://www.academiaslinux.com/2013/10/la-base-de-datos-de-usuarios-de-gnulinux.html

http://www.nexolinux.com/ficheros-de-usuarios-etcpasswd-y-etcshadow/

http://www.dragonjar.org/como-funcionan-y-se-crackean-las-claves-en-sistemas-windows.xhtml

http://ns2.elhacker.net/Contrasenas-Windows-XP.pdf

https://www.academia.edu/9007927/Hands_on_Lab_de_Password_Cracking

http://www.binarytides.com/cracking-linux-password-with-john-the-ripper-tutorial/

http://www.openwall.com/john/doc/EXAMPLES.shtml

También podría gustarte