GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo guiar para descifrar hashes de contraseña con Hashcat usando el método de diccionario

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...

¡FELIZ AGRICULTURA!


Linux
  1. Guía completa para usar AsciiDoc en Linux

  2. SSHPass:cómo acceder a un servidor mediante SSH mediante un script sin contraseña (no de forma interactiva)

  3. Cómo instalar y usar Hashcat para la recuperación de contraseñas en Linux :[Cyber ​​Forensics]

  4. Error al usar GRANT con IDENTIFICADO por contraseña en MySQL

  5. CentOS / RHEL:Gestión de la caducidad de la contraseña para usuarios que utilizan chage (con ejemplos prácticos)

Cómo restablecer una contraseña de Windows con Linux

Cómo integrar Grafana con Prometheus para monitoreo

Cómo cambiar la contraseña en Linux – Guía paso a paso

Cómo buscar LDAP usando ldapsearch (con ejemplos)

¿Cómo proteger GRUB con contraseña en Linux?

Cómo agregar protección con contraseña para un directorio usando cPanel