Cómo Descifrar Contraseñas Utilizando GPU y CPU en Linux
Cómo Descifrar Contraseñas Utilizando GPU y CPU en Linux

Cómo Descifrar Contraseñas Utilizando GPU y CPU en Linux

Si te preguntas cómo descifrar contraseñas con GPU y CPU en Linux, sigue leyendo. Este artículo muestra qué controladores y programas instalar para que hashcat y programas similares de fuerza bruta puedan utilizar una GPU y una CPU para descifrar contraseñas.

Hashcat utiliza OpenCL. Según Wikipedia, OpenCL (Open Computing Language) es un marco de trabajo para escribir programas que se ejecutan en plataformas heterogéneas que consisten en unidades de procesamiento central (CPU), unidades de procesamiento gráfico (GPU), procesadores de señales digitales (DSP), matrices de compuertas programables en campo (FPGAs) y otros procesadores o aceleradores de hardware.

OpenCL especifica lenguajes de programación (basados en C99 y C++11) para programar estos dispositivos y interfaces de programación de aplicaciones (API) para controlar la plataforma y ejecutar programas en los dispositivos de cómputo. OpenCL proporciona una interfaz estándar para la computación paralela utilizando paralelismo basado en tareas y datos.

OpenCL es un estándar abierto mantenido por el consorcio de tecnología sin fines de lucro Khronos Group. Implementaciones conformes están disponibles de Altera, AMD, Apple (OpenCL junto con OpenGL está obsoleto para el hardware de Apple, en favor de Metal 2), ARM, Creative, IBM, Imagination, Intel, Nvidia, Qualcomm, Samsung, Vivante, Xilinx y ZiiLABS.

Es decir, debido a la universalidad de OpenCL, los programas de recuperación de contraseñas, incluido hashcat, pueden funcionar con cualquier hardware que admita OpenCL.

Pentester intentando descifrar contraseña
Pentester intentando descifrar contraseña

Las GPU de AMD, NVIDIA e Intel admiten OpenCL

La información sobre los procesadores Intel compatibles se puede encontrar en https://github.com/intel/compute-runtime (el soporte para “Intel Graphics Compute Runtime for oneAPI Level Zero and OpenCL” apareció con Gen8) y https://www.intel.la/content/www/xl/es/support/articles/000005524/graphics.html (soporte de OpenCL para diferentes generaciones y modelos de procesadores).

Las tarjetas de video de AMD y NVIDIA también admiten en su mayoría OpenCL, excepto las muy antiguas.

OpenCL requiere la instalación de controladores y herramientas para interactuar con OpenCL. Este artículo te ayudará a instalar OpenCL en Linux. Instrucciones similares para Windows se brindan en el artículo “Manual de Hashcat: cómo usar el programa para descifrar contraseñas”.

Entonces, los requisitos para que hashcat funcione con OpenCL son los siguientes:

  • Para tarjetas gráficas de AMD, necesitas: Plataforma de software “RadeonOpenCompute (ROCm)” (1.6.180 o posterior)
  • Los procesadores Intel requieren: “OpenCL Runtime for Intel Core and Intel Xeon Processors” (16.1.1 o posterior)
  • Para tarjetas gráficas de NVIDIA, debes tener: “NVIDIA Driver” (367.x o posterior)

Para procesadores antiguos (anteriores a Broadwell), se utiliza el “OpenCL 2.0 GPU Driver Package for Linux” (Iris, Iris Pro).

Este artículo te mostrará cómo instalar todo lo que necesitas para usar OpenCL en tarjetas gráficas NVIDIA y procesadores modernos de Intel. Las instrucciones se darán en el ejemplo de Kali Linux (también deberían ser adecuadas para Debian, Linux Mint, Ubuntu y sus derivados) y Arch Linux (BlackArch).

Cómo Habilitar OpenCL en Kali Linux (Debian, Linux Mint, Ubuntu) para Hashcat

Habilitar OpenCL para NVIDIA

Comienza con una actualización completa del sistema y luego reinicia:

sudo apt update && sudo apt full-upgrade -y
reboot

Después de actualizar el sistema, necesitamos verificar los módulos del kernel nouveau (controladores Nvidia de código abierto, que entrarán en conflicto con los propietarios):

lsmod | grep -i nouveau

Si el comando anterior mostró algo, por ejemplo:

nouveau 1499136 1
mxm_wmi 16384 1 nouveau
wmi 16384 2 mxm_wmi,nouveau
video 40960 1 nouveau

Esto significa que nouveau está en uso. Por lo tanto, debes agregarlos a la lista negra:

echo -e "blacklist nouveau\noptions nouveau modeset=0\nalias nouveau off" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf

Después de cambiar los parámetros del kernel, necesitamos actualizar nuestro initramfs y reiniciar.

update-initramfs -u && reboot

Después de reiniciar y verificar que los módulos nouveau no están cargados, procedemos a instalar el cargador ICD de OpenCL, los controladores y el kit de herramientas CUDA.

sudo apt install -y ocl-icd-libopencl1 nvidia-driver nvidia-cuda-toolkit
Instalar OpenCL para NVIDIA en Kali Linux
Instalar OpenCL para NVIDIA en Kali Linux

Durante la instalación del controlador, el sistema crea nuevos módulos de kernel, por lo que se requiere otro reinicio.

Verificación de los controladores instalados

Ahora nuestra sistema debería estar listo, necesitamos verificar que los controladores se hayan cargado correctamente. Podemos verificar esto rápidamente ejecutando la herramienta nvidia-smi.

nvidia-smi
Ejecución del comando nvidia-smi
Ejecución del comando nvidia-smi

La salida muestra que nuestro controlador y GPU están bien, por lo que podemos proceder a descifrar contraseñas. Antes de continuar, verifiquemos nuevamente y asegurémonos de que hashcat y CUDA funcionen juntos.

hashcat -I
Verificación de hashcat y CUDA
Verificación de hashcat y CUDA

Nota: Si obtienes el error clGetDeviceIDs(): CL_DEVICE_NOT_FOUND marcado como Platform ID Vendor: Mesa, entonces ejecuta:

sudo apt remove mesa-opencl-icd

Habilitación de OpenCL para Intel

Si tu CPU admite OpenCL, instala los siguientes paquetes:

sudo apt install firmware-misc-nonfree intel-opencl-icd

Echemos un vistazo nuevamente a la lista de dispositivos (se debería agregar un nuevo dispositivo):

hashcat -I

Y ejecuta el benchmark nuevamente:

hashcat -b -D 1,2 --force
Comprobar benchmark de hashcat
Comprobar benchmark de hashcat
Ejecución de benchmark de hashcat
Ejecución de benchmark de hashcat

Cómo Habilitar OpenCL en Arch Linux (BlackArch) para Hashcat

Habilitar OpenCL para NVIDIA

Si está instalado, elimina xf86-video-nouveau:

sudo pacman -R xf86-video-nouveau

Instala el controlador propietario de NVIDIA:

sudo pacman -S nvidia nvidia-utils

Instala el controlador CUDA y otros paquetes necesarios, así como hashcat:

sudo pacman -S opencl-nvidia opencl-headers cuda hashcat

Habilitar OpenCL para Intel:

sudo pacman -S linux-firmware intel-compute-runtime pocl

Ahora verifica la lista de dispositivos:

hashcat -I

Ejecuta el benchmark:

hashcat -b -D 1,2 --force

Paquete beignet

https://github.com/intel/beignet

Beignet es una implementación de OpenCL para las iGPUs de Intel IvyBridge y Haswell. Este paquete está actualmente descontinuado y debería ser reemplazado por intel-compute-runtime. Si tienes beignet instalado en tu sistema, aparecerá un dispositivo OpenCL adicional. Sin embargo, este dispositivo es inestable con Hashcat.

Puedes probar cómo se comporta beignet en tu sistema. Tal vez para procesadores más antiguos, esta sea la única opción.

OpenCL para AMD

Si tienes una tarjeta AMD, comparte con otros lectores tu experiencia instalando el controlador de AMD con soporte para OpenCL. Escribe tus comandos de instalación en los comentarios y agregaré una nueva sección al artículo. Si es posible, toma capturas de pantalla y/o realiza pruebas de rendimiento.

Nota Adicional

Para instalar OpenCL en sistemas Linux con tarjetas gráficas AMD, puedes seguir estos pasos generales. Ten en cuenta que los detalles exactos pueden variar según la distribución de Linux que estés utilizando. Aquí tienes una guía básica:

  1. Verifica la compatibilidad de tu tarjeta gráfica AMD con OpenCL: Antes de comenzar, asegúrate de que tu tarjeta gráfica AMD sea compatible con OpenCL. Puedes verificar esto consultando la documentación de AMD o utilizando herramientas de diagnóstico como clinfo.
  2. Instala los controladores de AMD: Debes asegurarte de tener instalados los controladores de AMD para tu tarjeta gráfica. Dependiendo de la distribución de Linux, es posible que puedas instalar los controladores a través de los repositorios del sistema o descargándolos directamente desde el sitio web de AMD.
  3. Instala el paquete OpenCL: En muchas distribuciones de Linux, puedes instalar el paquete OpenCL para tarjetas gráficas AMD a través de los repositorios. Por ejemplo, en Ubuntu, puedes usar el siguiente comando:
sudo apt-get install ocl-icd-libopencl1
  1. Verifica la instalación: Después de instalar los controladores y el paquete OpenCL, puedes verificar si OpenCL está funcionando correctamente ejecutando el siguiente comando:
clinfo

Esto mostrará información sobre las plataformas y dispositivos OpenCL disponibles en tu sistema.

  1. Instala hashcat (opcional): Si deseas utilizar hashcat u otras herramientas de cracker de contraseñas que requieren OpenCL, asegúrate de instalar la herramienta y sus dependencias según las instrucciones proporcionadas por los desarrolladores.

Recuerda que los detalles específicos pueden variar según tu distribución de Linux y tu configuración de hardware.

My Cart Close (×)

Tu carrito está vacío
Ver tienda