Herramienta: Hashcat 6.0.0 descifrando contraseñas
Entrando a la sección de recuperación de contraseñas o crackeo de contraseñas encriptadas nos encontramos con la herramienta predominante en esa área Hashcat. Esta herramienta permite recuperar la contraseña en base a un hash almacenado tomando en cuenta que estas no se almacenan en texto plano. Dentro de este post revisaremos la instalación y el funcionamiento de la nueva versión de Hashcat v6.0.0.
Instalación de Hascat v6.0.0
Para la instalación de Hashcat puedes acceder a el sito oficial y descargar los archivos binarios. A continuación veremos la instalación.
---->Descargar Binarios root@tpx# wget https://hashcat.net/files/hashcat-6.0.0.7z --2020-06-18 12:08:53-- https://hashcat.net/files/hashcat-6.0.0.7z Resolving hashcat.net (hashcat.net)... 1.1.1.1, 2001:::::aaaa Connecting to hashcat.net (hashcat.net)|1.1.1.1|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 5960507 (5.7M) [application/x-7z-compressed] Saving to: ‘hashcat-6.0.0.7z.1’ hashcat-6.0.0.7z.1 100%[======================================================>] 5.68M 1.70MB/s in 3.5s 2020-06-18 12:08:58 (1.64 MB/s) - ‘hashcat-6.0.0.7z.1’ saved [5960507/5960507] ---->Crear directorio root@tpx# mkdir /opt/hashcat6 ---->Mover 7zip root@tpx# mv hashcat-6.0.0.7z /opt/hashcat6/ ---->Descomprimir root@tpx# 7za e hashcat-6.0.0.7z ---->Ejecutar hashcat root@tpx# ./hashcat.bin -V v6.0.0
Una vez acabada la instalación ya podremos utilizar nuestra herramienta invocando el comando hashcat6. Dentro de todas las opciones que nos incluye hashcat nos encontramos con las versiones más usadas y cortas para el uso de este.
hashcat (v6.0.0) starting... Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]... - [ Options ] - Options Short / Long | Type | Description | Example ================================+======+======================================================+======================= -m, --hash-type | Num | Hash-type, see references below | -m 1000 -a, --attack-mode | Num | Attack-mode, see references below | -a 3 -V, --version | | Print version | -h, --help | | Print help | --quiet | | Suppress output |
Podemos observar la estructura del comando que requiere options hashfile mask|wordfiles|directories con esto nos da una sintaxis básica para el uso. Dentro de esto encontramos la opción -m que es la mas importante ya que esta refiere a el tipo de hash y -a que hace referencia al tipo de ataque.
Realizaremos un leve ejemplo de como se crackea una contraseña de un sistema linux.
Ejecutamos el comando tail /etc/shadow:
colord:*:18418:0:99999:7::: geoclue:*:18418:0:99999:7::: lightdm:*:18418:0:99999:7::: king-phisher:*:18418:0:99999:7::: dradis:*:18418:0:99999:7::: beef-xss:*:18418:0:99999:7::: systemd-coredump:!!:18418:::::: debian-tor:*:18421:0:99999:7::: tpx:$6$pEY9z4wOvOMDRgK2$2igHtRe5A/WL1381QmsY.6d3sli2bn4K9iQEeTvGrUYApZAaSgwDJT5drxOp0xAI8LPfCV7ZN0bP/eN2wREqI/:18431:0:99999:7:::
Verificando en el archivo /etc/login.defs verificamos que el método de encriptado es el SHA251, en caso de que no se tenga conocimiento del tipo de hash se puede utilizar la herramienta hashid <id> este comando te idetntificará los posibles algoritmos usados. Después de tener identificado el algoritmo de nuestro hash, procedemos a buscar el id en hashcat usando el comando hashcat –help| grep SHA251. Una vez contemos on el id y el achivo con nuestros hash a descifrar procedemos a ejecutar el comando para empezar a crackear y conseguir las contraseñas.
Iniciando crackeo
root@tpx# hashcat -m 1800 -a 0 -o cracked.txt hash.lst /usr/share/sqlmap/data/txt/smalldict.txt hashcat (v5.1.0) starting... OpenCL Platform #1: The pocl project ==================================== * Device #1: pthread-Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz, 2048/4488 MB allocatable, 2MCU Hashfile 'hash.lst' on line 1 (colord:*:18418:0:99999:7:::): Token length exception Hashfile 'hash.lst' on line 2 (geoclue:*:18418:0:99999:7:::): Token length exception Hashfile 'hash.lst' on line 3 (lightdm:*:18418:0:99999:7:::): Token length exception Hashfile 'hash.lst' on line 4 (king-phisher:*:18418:0:99999:7:::): Token length exception Hashfile 'hash.lst' on line 5 (dradis:*:18418:0:99999:7:::): Token length exception Hashfile 'hash.lst' on line 6 (beef-xss:*:18418:0:99999:7:::): Token length exception Hashfile 'hash.lst' on line 7 (systemd-coredump:!!:18418::::::): Token length exception Hashfile 'hash.lst' on line 8 (debian-tor:*:18421:0:99999:7:::): Token length exception Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Rules: 1 Applicable optimizers: * Zero-Byte * Single-Hash * Single-Salt * Uses-64-Bit Minimum password length supported by kernel: 0 Maximum password length supported by kernel: 256 ATTENTION! Pure (unoptimized) OpenCL kernels selected. This enables cracking passwords and salts > length 32 but for the price of drastically reduced performance. If you want to switch to optimized OpenCL kernels, append -O to your commandline. Watchdog: Hardware monitoring interface not found on your system. Watchdog: Temperature abort trigger disabled. * Device #1: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=2 -D VENDOR_ID=64 -D CUDA_ARCH=0 -D AMD_ROCM=0 -D VECT_SIZE=4 -D DEVICE_TYPE=2 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=16 -D KERN_TYPE=1800 -D _unroll' * Device #1: Kernel m01800-pure.f12c7f77.kernel not found in cache! Building may take a while... * Device #1: Kernel amp_a0.f6324eeb.kernel not found in cache! Building may take a while... Dictionary cache built: * Filename..: /usr/share/sqlmap/data/txt/smalldict.txt * Passwords.: 4989 * Bytes.....: 36149 * Keyspace..: 4989 * Runtime...: 0 secs Approaching final keyspace - workload adjusted. Session..........: hashcat Status...........: Cracked Hash.Type........: sha512crypt $6$, SHA512 (Unix) Hash.Target......: $6$pEY9z4wOvOMDRgK2$2igHtRe5A/WL1381QmsY.6d3sli2bn4...wREqI/ Time.Started.....: Thu Jun 18 19:41:49 2020 (6 secs) Time.Estimated...: Thu Jun 18 19:41:55 2020 (0 secs) Guess.Base.......: File (/usr/share/sqlmap/data/txt/smalldict.txt) Guess.Queue......: 1/1 (100.00%) Speed.#1.........: 911 H/s (5.30ms) @ Accel:256 Loops:64 Thr:1 Vec:4 Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts Progress.........: 4989/4989 (100.00%) Rejected.........: 0/4989 (0.00%) Restore.Point....: 4608/4989 (92.36%) Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:4992-5000 Candidates.#1....: trojan -> zzzzzz Started: Thu Jun 18 19:41:37 2020 Stopped: Thu Jun 18 19:41:56 2020
El valor de 1800 hace referencia al tipo de hash, el -o cracked.txt nos permitirá guardar los resultado al terminar el crackeo en caso de tener una lista. el archivo hash.lst es nuestro archivo que creamos donde se encuentran almacenados los hash y por ultimo nuestro wordlist /usr/share/sqlmap/data/txt/smalldict.txt este puede variar, puede que el salt para decodificar este hash no se encuentre en el primer diccionariopara lo cual en el sistema operativo kali podemos utilizar el comando locate wordlist para encontrar todos los diccionarios para decodificar con éxito nuestro hash y recuperar la contraseña.
Verificamos nuestro resultado:
root@tpx# cat cracked.txt $6$pEY9z4wOvOMDRgK2$2igHtRe5A/WL1381QmsY.6d3sli2bn4K9iQEeTvGrUYApZAaSgwDJT5drxOp0xAI8LPfCV7ZN0bP/eN2wREqI/:wally