Crackeo de passwords mediante HashCat
Si vamos a utilizar la versión compatible con OpenCL/CUDA debemos recompilar el driver de la tarjeta gráfica e instalar las herramientas necesarias, en mi caso se trata de una tarjeta NVIDIA:
echo ">=x11-drivers/nvidia-drivers-340.76 uvm" >> /etc/portage/package.use/nvidia emerge x11-drivers/nvidia-drivers echo "=dev-util/nvidia-cuda-toolkit-6.5.14 NVIDIA-CUDA" > /etc/portage/package.license/nvidia emerge dev-util/nvidia-cuda-toolkit
Para hacer la prueba vamos a generar un usuario en el sistema cuyo password es alfaexploit
useradd test00 passwd test00 alfaexploit grep test00 /etc/shadow test00:$6$bwbfkx6h$1qPTzJWY.mK71F0MjLA5iihgUpr/AJmp0CPZY1qUhe46cWyZDzmJketQYfX.MIYY/vQw5Cyg877GZDbWmX3Mn/:16641:0:99999:7:::
El hash en un sistema linux se compone de varios elementos:
$6$bwbfkx6h$1qPTzJWY.mK71F0MjLA5iihgUpr/AJmp0CPZY1qUhe46cWyZDzmJketQYfX.MIYY/vQw5Cyg877GZDbWmX3Mn/
$6: Tipo de hash, en este caso SHA-512
$bwbfkx6h: Grano de sal, cadena de carácteres aleatorios empleados como entrada en el algoritmo de cifrado, hay sistemas que almacenan los granos de sal a parte aumentando de este modo la seguridad, hascat permite indicar un fichero de granos de sal independiente.
$1qPTzJWY.mK71F0MjLA5iihgUpr/AJmp0CPZY1qUhe46cWyZDzmJketQYfX.MIYY/vQw5Cyg877GZDbWmX3Mn/: Hash del password combinado con el grano de sal
Para poder romper el password es necesario indicarle a hashcat de que tipo de cifrado se trata, un modo rápido de hacerlo es consultando el siguiente enlace con ejemplos:
Los principales algoritmos son:
$0 = DES
$1 = MD5 Hashing
$2 = Blowfish
$2A = eksblowfish
$5 = SHA256
$6 = SHA512
Otro modo de averiguar el tipo de hash es mediante este script en python(lo alojaré en mi propio servidor también por si se eliminase de Inet):wget https://raw.githubusercontent.com/SmeegeSec/HashTag/master/HashTag.py
wget www.alfaexploit.com/ficheros_web/uploads/ficheros/HashTag.py
Comprobamos que efectivamente se trata de SHA512 y además nos indica el id a utilizar en hashcat:python HashTag.py -sh '$6$bwbfkx6h$1qPTzJWY.mK71F0MjLA5iihgUpr/AJmp0CPZY1qUhe46cWyZDzmJketQYfX.MIYY/vQw5Cyg877GZDbWmX3Mn/'
[*] sha512crypt, SHA512(Unix) - Hashcat Mode 1800
Dependiendo de si vamos a utilizar la gráfica debemos descargarnos una versión u otra:
GPU
cd /usr/src wget http://hashcat.net/files/cudaHashcat-1.36.7z wget www.alfaexploit.com/ficheros_web/uploads/ficheros/cudaHashcat-1.36.7z emerge app-arch/p7zip p7zip -d cudaHashcat-1.36.7z cd cudaHashcat-1.36
CPU
cd /usr/src wget http://hashcat.net/files/hashcat-0.50.7z wget www.alfaexploit.com/ficheros_web/uploads/ficheros/hashcat-0.50.7z p7zip -d hashcat-0.50.7z cd hashcat-0.50
Podemos ver los diferentes algortimos soportados con:
GPU
./cudaHashcat64.bin -hCPU
./hashcat-cli64.bin -h
Generamos el fichero de hash y el diccionario:
vi hash $6$bwbfkx6h$1qPTzJWY.mK71F0MjLA5iihgUpr/AJmp0CPZY1qUhe46cWyZDzmJketQYfX.MIYY/vQw5Cyg877GZDbWmX3Mn/
vi dict 1 2 3 alfaexploit
A hashcat hay que indicarle el tipo de hash: 1800, la técnica de crackeo a utilizar: 0, el fichero de hash y el de diccionario:
GPU
./cudaHashcat64.bin -m 1800 -a 0 hash dict ERROR: Shader Model 1.0 - 1.3 based GPU detected. Support for CUDA was dropped by NVidia.
Mi gráfica ya no está soportada por CUDA :(
CPU
./hashcat-cli64.bin -n 2 -m 1800 -a 0 hash dict $6$bwbfkx6h$1qPTzJWY.mK71F0MjLA5iihgUpr/AJmp0CPZY1qUhe46cWyZDzmJketQYfX.MIYY/vQw5Cyg877GZDbWmX3Mn/:alfaexploit All hashes have been recovered Input.Mode: Dict (dict) Index.....: 1/1 (segment), 4 (words), 18 (bytes) Recovered.: 1/1 hashes, 1/1 salts Speed/sec.: - plains, - words Progress..: 4/4 (100.00%) Running...: 00:00:00:01 Estimated.: --:--:--:--
NOTA: -n 2 me permite utilizar los dos cores de mi core2duo
Modos de crackeo:
0 = Straight: Simplemente corre todas las palabras del diccionario contra la lista de hashes, teniendo un buen diccionario aumentarán las posibilidades de recuperar el hash.
1 = Combination: Combina las palabras del diccionario dado. Ejemplo: aa bb -> aa, bb, aabb, bbaa
2 = Toggle-Case: Cambia todas las letras minúsculas a mayúsculas y viceversa. DÃgitos y caracteres especiales son ignorados.
3 = Brute-force: Fuerza bruta debe ser usado como último recurso, no es efectivo contra contraseñas largas y puede consumir mucho tiempo, deberemos indicarle la longitud min/max a probar y el charset.
4 = Permutation: Toma las letras de una palabra y las reordena. Ejemplo: abc se vuelve abc, acb, bca, bac.
5 = Table-Lookup: Rompe la palabra del diccionario en carácteres individuales y aplica una regla definida en table-file=FILE a cada uno. Por ejemplo password es roto en cada carácter: p a s s w o r d.
1 = Combination: Combina las palabras del diccionario dado. Ejemplo: aa bb -> aa, bb, aabb, bbaa
2 = Toggle-Case: Cambia todas las letras minúsculas a mayúsculas y viceversa. DÃgitos y caracteres especiales son ignorados.
3 = Brute-force: Fuerza bruta debe ser usado como último recurso, no es efectivo contra contraseñas largas y puede consumir mucho tiempo, deberemos indicarle la longitud min/max a probar y el charset.
4 = Permutation: Toma las letras de una palabra y las reordena. Ejemplo: abc se vuelve abc, acb, bca, bac.
5 = Table-Lookup: Rompe la palabra del diccionario en carácteres individuales y aplica una regla definida en table-file=FILE a cada uno. Por ejemplo password es roto en cada carácter: p a s s w o r d.
Entonces hashcat mira en la tabla por las reglas que deben ser aplicadas a cada carácter. En este caso nuestra tabla tendrÃa:
vi tabla.table a=a a=A p=p p=P o=o o=O o=0 (cero)
Ahora cada carácter que coincida será cambiado y probado. Asà que por cada a -> a y A será probada, por cada p -> p y P será probado y por cada o -> o, O y 0 será probado.
Para este tipo de ataque hay que indicar el fichero table y la longituda min/max de las palabras del diccionario, por defecto no comprueba palabras mayores de 10 carácteres.
--table-file=./tabla.table --table-min=1 --table-max=20
En este web podemos encontrar una buena lista de diccionarios:
Crackeo de passwords mediante HashCat
Reviewed by PDFREEBOOK
on
13:25
Rating:
Post a Comment