Vimos en nuestro artículo anterior Cómo instalar Hashcat. También vimos el uso de Hashcat con ejemplos preempaquetados. Ahora, vamos a descifrar las contraseñas en sus máquinas Linux, ¡un ejemplo del mundo real!
Crear un usuario en Linux
En primer lugar, en una ventana de terminal, cree un usuario y establezca una contraseña para él, como se muestra a continuación. También puede seguir Cómo crear una cuenta de usuario de Linux manualmente. Puede establecer la contraseña como:qwerty para este propósito de ejemplo.
[root@cloud2 ~]# useradd ramya [root@cloud2 ~]# passwd ramya Changing password for user ramya. New password: Retype new password: passwd: all authentication tokens updated successfully.
Ver el hash de contraseña
En la ventana de la terminal, ejecute el siguiente comando para ver el hash generado para la contraseña "qwerty" para el usuario ramya .
[root@cloud2 ~]# tail -n 1 /etc/shadow ramya:$6$6SA.1X/l$JkVyIvJu.JAN6g8gIHyh9FWj3rAQ...yAf5hLFltzi1624A4rtcuxluzg75hh2bSGqv2bPZHaQYGHvD/ziOUD0:16790:0:99999:7:::
Encontrando su valor de sal
Mirando el valor hash anterior, siguiendo el nombre de usuario "ramya “, El valor de $6$ indica el hash de contraseña de tipo 6 (SHA512). Los caracteres después de $6$, hasta el siguiente $ indican la sal.
En lo anterior, el SALT es:6SA.1X/l
Siga este artículo para obtener más información sobre qué es el hashing de contraseñas, cómo se descifran los hashes, SALTS y sus casos de uso, etc.,
Cómo encontrar el algoritmo Hashing usado en Linux
El algoritmo hash se define en el archivo:/etc/login.defs. Busque la palabra “ENCRYPT_METHOD” para encontrar el algoritmo hash definido:
[root@cloud2 ~]# grep -rn ENCRYPT_METHOD /etc/login.defs 65:ENCRYPT_METHOD SHA512
Como puede ver, mi caja de Linux usa el tipo de hash SHA-512.
Extrayendo el Hash del archivo /etc/shadow y creando un archivo hash
[root@cloud2 ~]# tail /etc/shadow | grep "ramya" | awk -F':' '{print $2}' >> password.hash
Inserte uno o más hashes en una línea separada para descifrar múltiples hashes a la vez en el archivo password.hash.
Lista de contraseñas comunes disponibles en línea
Bueno, usaremos una lista de contraseñas comunes para descifrar nuestros hashes. Las contraseñas comunes se pueden descargar desde los siguientes enlaces:
From John the Ripper tool: John.txt.bz2
From Cain & Abel : Cain.txt.bz2
500 Common Passwords : 500-worst-passwords.txt.bz2
370 Banned Twitter Passwords: twitter-banned.txt.bz2
También puede obtener algunas contraseñas más que se filtraron o robaron de sitios web famosos como phpbb, myspace, hotmail, etc., desde aquí.
En primer lugar, intentemos con solo 500 contraseñas comunes.
Descargar las 500 Contraseñas Comunes
[root@cloud2 ~]# wget http://downloads.skullsecurity.org/passwords/500-worst-passwords.txt.bz2
[root@cloud2 ~]# bunzip 500-worst-passwords.txt.bz2
Descifrar el hash usando Hashcat
El uso básico de hashcat es el siguiente:
[root@cloud2 ~]# hashcat [options] hashfile [mask|wordfiles|directories]
Opciones:
-m, --hash-type=NUM -a, --atack-mode=NUM -o, --ouput-file=NUM --remove Enable remove of hash once it is cracked.
Vimos desde arriba que nuestro hash es del tipo 6. Entonces usaremos:–hash-type=1800 . Si su /etc/login.defs usa MD5, entonces el tipo de hash sería –hash-type=500 y lo mismo ocurre con otros tipos de hash. Algunos de ellos se muestran a continuación:
100 = SHA1 500 = md5crypt, MD5(Unix) 1400 = SHA256 1700 = SHA512 1800 = SHA-512(Unix)
Como estamos probando el craqueo basado en diccionario, usaremos el modo de ataque como –atack-mode=0 .Los otros modos de ataque son:
0 = Straight 1 = Combination 2 = Toggle-Case 3 = Brute-force 4 = Permutation 5 = Table-Lookup 8 = Prince
Puede obtener la lista de tipos de hash y modos de ataque con la ayuda de hashcat.
Enviemos los hashes encontrados a un nuevo archivo llamado found.txt y eliminemos el hash correspondiente del archivo password.hash. Así que finalmente el comando sería:
[root@cloud2 ~]# hashcat -m 1800 -a 0 password.hash 500-worst-passwords.txt Initializing hashcat v2.00 with 2 threads and 32mb segment-size...
Added hashes from file password.hash: 1 (1 salts) Activating quick-digest mode for single-hash with salt
$6$EeKhjLd3$ogjAhHz5KFkcTUH6h5LP7j3HFhd83DL8KFXKbWQiisahKmexoA71yuJuM1MmbA.ZGU/qySl0xoo2FNqG6NNlv.:qwerty
All hashes have been recovered
Input.Mode: Dict (500-worst-passwords.txt) Index.....: 1/1 (segment), 500 (words), 3493 (bytes) Recovered.: 1/1 hashes, 1/1 salts Speed/sec.: - plains, 131 words Progress..: 132/500 (26.40%) Running...: 00:00:00:01 Estimated.: 00:00:00:02
Started: Mon Dec 21 12:14:20 2015 Stopped: Mon Dec 21 12:14:21 2015
[root@cloud2 ~]# cat found.txt $6$EeKhjLd3$ogjAhHz5KFkcTUH6h5LP7j3HFhd83DL8KFXKbWQiisahKmexoA71yuJuM1MmbA.ZGU/qySl0xoo2FNqG6NNlv.:qwerty
A partir del cálculo anterior, pudimos descifrar el hash y vería el hash, con la contraseña descifrada "qwerty" al final, como se muestra arriba:
Permite crear muchas cuentas con contraseñas poco complejas. Ahora vamos a descifrar estos hashes con una gama más amplia de contraseñas de diccionario obtenidas de las múltiples listas:
[root@cloud2 ~]# wget http://downloads.skullsecurity.org/passwords/john.txt.bz2 [root@cloud2 ~]# wget http://downloads.skullsecurity.org/passwords/cain.txt.bz2 [root@cloud2 ~]# wget http://downloads.skullsecurity.org/passwords/twitter-banned.txt.bz2 [root@cloud2 ~]# wget http://downloads.skullsecurity.org/passwords/500-worst-passwords.txt.bz2 [root@cloud2 ~]# bunzip2 john.txt.bz2 500-worst-passwords.txt.bz2 twitter-banned.txt.bz2 cain.txt.bz2 [root@cloud2 ~]# cat john.txt 500-worst-passwords.txt twitter-banned.txt cain.txt >> dictionary-passwords.txt
Ahora tenemos una enorme lista de contraseñas que la gente usa normalmente en el archivo:dictionary-passwords.txt
Ahora probemos nuestros nuevos hashes contra tantas contraseñas.
[root@cloud2 ~]#hashcat -m 1800 -a 0 -o found.txt --remove password.hash dictionary-passwords.txt Initializing hashcat v2.00 with 2 threads and 32mb segment-size... Added hashes from file password.hash: 2 (2 salts) [s]tatus [p]ause [r]esume [b]ypass [q]uit => r Input.Mode: Dict (/tmp/dictionary-passwords.txt) Index.....: 1/1 (segment), 310683 (words), 3177794 (bytes) Recovered.: 0/2 hashes, 0/2 salts Speed/sec.: 251 plains, 125 words Progress..: 310683 /310683 (100.00%) Running...: 00:00:41:13 Estimated.: --:--:--:-- Started: Tue Dec 22 06:48:06 2015 Stopped: Tue Dec 22 07:29:19 2015
¡Afortunadamente, los nuevos hashes no se pudieron descifrar! Lo que significa que necesita aumentar su base de contraseñas aún más...