Introdução
O Hashcat é uma ferramenta de recuperação de senhas mundialmente renomada, capaz de aproveitar o imenso poder de processamento das GPUs para quebrar hashes em velocidades incríveis. No entanto, para obter o máximo do seu hardware, você precisa saber como configurá-lo e ajustá-lo corretamente. Usar as configurações erradas pode levar a um desempenho subótimo ou até mesmo à instabilidade do hardware.
Neste laboratório, você aprenderá a usar várias flags relacionadas ao OpenCL do Hashcat para gerenciar e otimizar o desempenho da sua GPU. Você praticará a listagem de dispositivos disponíveis, a seleção de uma GPU específica para uma tarefa, a implementação de salvaguardas térmicas e a experimentação com opções de ajuste de desempenho. Essas habilidades são essenciais para qualquer pessoa que deseje usar o Hashcat de forma eficaz e segura.
Listar Dispositivos OpenCL Disponíveis com --opencl-devices
Nesta etapa, você aprenderá a identificar os dispositivos computacionais que o Hashcat pode utilizar. Antes de poder atribuir uma tarefa a uma GPU ou CPU, você precisa saber como o sistema a reconhece. O Hashcat fornece uma flag específica para este propósito.
A flag --opencl-devices consulta o framework OpenCL (Open Computing Language) do sistema e lista todos os dispositivos compatíveis, como GPUs e CPUs. Cada dispositivo é atribuído um ID único, que você usará em etapas posteriores para direcioná-lo especificamente.
Execute o seguinte comando no seu terminal para listar todos os dispositivos OpenCL disponíveis:
hashcat --opencl-devices
Você verá uma saída semelhante à seguinte. Os detalhes exatos, especialmente os nomes dos dispositivos e as informações da plataforma, variarão dependendo do hardware do ambiente do laboratório.
hashcat (v6.2.6) starting
OpenCL Info:
Platform ID #1
Vendor : The pocl project
Name : Portable Computing Language
Version : OpenCL 3.0 PoCL 3.1+g3a94695b, LLVM 14.0.0, RELOC, SLEEF, DISTRO, POCL_DEBUG
Device ID #1
Type : CPU
Vendor ID : 1024
Vendor : GenuineIntel
Name : 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz
Version : OpenCL 3.0 PoCL 3.1+g3a94695b, LLVM 14.0.0, RELOC, SLEEF, DISTRO, POCL_DEBUG
Processor(s) : 8
Clock : 3000
...
Platform ID #2
Vendor : NVIDIA Corporation
Name : NVIDIA CUDA
Version : OpenCL 3.0 CUDA 12.2.142
Device ID #2
Type : GPU
Vendor ID : 4318
Vendor : NVIDIA Corporation
Name : NVIDIA T4
Version : OpenCL 3.0 CUDA
Processor(s) : 40
Clock : 1590
...
Anote o Device ID para cada entrada. Neste exemplo, o Device ID #2 é a GPU NVIDIA T4, que é ideal para cracking de hashes.
Selecionar uma GPU Específica para Cracking com -d
Nesta etapa, você aprenderá a instruir o Hashcat a usar um dispositivo específico para uma tarefa de cracking. Isso é particularmente útil em sistemas com múltiplas GPUs ou quando você deseja evitar o uso da CPU, que geralmente é muito mais lenta para este tipo de trabalho.
A flag -d (ou --devices) permite que você especifique quais IDs de dispositivo usar. Você pode encontrar o ID correto na saída do comando da etapa anterior.
Agora executaremos uma tarefa simples de cracking direcionada à GPU. Usaremos os arquivos hash.txt e wordlist.txt preparados no seu diretório ~/project. O comando especifica o tipo de hash (-m 0 para MD5), o modo de ataque (-a 0 para um ataque de dicionário) e o dispositivo alvo. Assumindo que a GPU seja o Device ID #2 do nosso exemplo anterior, o comando seria:
hashcat -m 0 -a 0 ~/project/hash.txt ~/project/wordlist.txt -d 2
Se a sua GPU tiver um ID diferente, por favor, ajuste o número após -d de acordo.
Após executar o comando, o Hashcat iniciará o ataque exclusivamente no dispositivo especificado e deverá encontrar rapidamente a senha.
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 5d41402abc4b2a76b9719d911017c592
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#2.........: 104.6 kH/s (0.00ms) @ Accel:128 Loops:128 Thr:1024 Vec:1
Recovered........: 1/1 (100.00%) Digests
Progress.........: 2/2 (100.00%)
Rejected.........: 0/2 (0.00%)
Restore.Point....: 1/2 (50.00%)
Restore.Sub.#2...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#2....: wrongpass -> password
Hardware.Mon.#2..: Temp: 40c Fan: 30% Util: 13% Core:1410MHz Mem:5000MHz Bus:16
5d41402abc4b2a76b9719d911017c592:password
Started: ...
Stopped: ...
A saída confirma que o hash foi quebrado e a senha é password.
Compreender a Flag --gpu-temp-retain
Nesta etapa, você aprenderá sobre um recurso de segurança crucial para proteger seu hardware. Executar uma GPU a 100% de utilização por períodos prolongados gera uma quantidade significativa de calor. Se não for gerenciado, altas temperaturas podem causar thermal throttling (onde a GPU desacelera para esfriar) ou até mesmo danos permanentes.
A flag --gpu-temp-retain instrui o Hashcat a monitorar a temperatura da GPU e ajustar automaticamente a carga de trabalho para mantê-la em ou abaixo de um valor especificado em Celsius. Esta é uma excelente maneira de garantir estabilidade e longevidade para seu hardware durante longas sessões de cracking.
Vamos executar o mesmo ataque de antes, mas desta vez adicionaremos a flag para manter a temperatura da GPU em ou abaixo de 85°C. Esta é uma temperatura geralmente segura para a maioria das GPUs sob carga.
hashcat -m 0 -a 0 ~/project/hash.txt ~/project/wordlist.txt -d 2 --gpu-temp-retain=85
Como nossa tarefa de cracking é muito curta, você não verá o gerenciamento de temperatura em ação. No entanto, o comando será aceito e o Hashcat habilitará o recurso. Em um trabalho de cracking de várias horas ou vários dias, esta flag estaria ativamente funcionando em segundo plano, potencialmente reduzindo a velocidade ligeiramente em troca de segurança térmica.
A saída será a mesma da etapa anterior, pois a senha é encontrada quase instantaneamente. O ponto principal é saber como aplicar essa configuração protetora.
Session..........: hashcat
Status...........: Cracked
...
5d41402abc4b2a76b9719d911017c592:password
...
Experimentar com --opencl-vector-width para Encontrar a Configuração Ótima
Nesta etapa, você explorará uma opção de ajuste de desempenho. A flag --opencl-vector-width controla quantos "threads" ou itens de trabalho são agrupados para processamento em uma única instrução. Isso também é conhecido como largura SIMD (Single Instruction, Multiple Data).
O valor ideal para esta configuração depende muito da arquitetura específica da GPU e do tipo de hash que está sendo quebrado. A única maneira de encontrar a melhor configuração é experimentando. Valores permitidos são tipicamente potências de dois, como 1, 2, 4, 8 ou 16.
Para testar o efeito desta flag, podemos usar o modo de benchmark integrado do Hashcat (-b). Vamos executar um benchmark para MD5 (-m 0) e definir a largura do vetor para 4.
hashcat -m 0 -b --opencl-vector-width 4
O Hashcat executará um benchmark e exibirá a velocidade para cada dispositivo. Preste atenção à linha Speed para sua GPU.
...
Hashtype: MD5
Speed.#2.........: 480.3 MH/s (94.38ms) @ Accel:256 Loops:1024 Thr:256 Vec:4
...
Agora, tente executar o benchmark novamente com uma largura de vetor diferente, por exemplo, 8:
hashcat -m 0 -b --opencl-vector-width 8
Compare a Speed desta execução com a anterior. Testando diferentes valores, você pode determinar a largura de vetor ideal para sua combinação específica de hardware e hash, permitindo maximizar seu desempenho de cracking. Para este laboratório, simplesmente experimentar com o comando é suficiente.
Monitorar a Temperatura e a Velocidade do Ventilador da GPU Durante um Ataque
Nesta etapa final, você aprenderá como monitorar os sinais vitais da sua GPU em tempo real enquanto o Hashcat está em execução. Isso é essencial para diagnosticar problemas de desempenho e garantir que suas configurações térmicas estejam funcionando como esperado.
Usaremos a utilidade nvidia-smi (NVIDIA System Management Interface), uma poderosa ferramenta de linha de comando para gerenciar e monitorar GPUs NVIDIA. Para ver as estatísticas atualizadas em tempo real, executaremos com o comando watch.
Primeiro, você precisa abrir uma segunda janela de terminal. Você pode fazer isso clicando no ícone "+" na barra de guias do terminal na parte inferior da tela.
Em seu novo (segundo) terminal, execute o seguinte comando. Ele executará nvidia-smi a cada segundo e atualizará a tela com os dados mais recentes.
watch -n 1 nvidia-smi
Você verá um painel mostrando o nome da GPU, temperatura, velocidade do ventilador, uso de energia e utilização de memória.
Agora, volte ao seu terminal original (primeiro). Inicie um benchmark pesado para colocar a GPU sob uma carga significativa. Usaremos a flag -w 4 (perfil de carga de trabalho 4, para "Insane") para maximizar a carga.
hashcat -m 0 -b -w 4
Mude sua visualização de volta para o segundo terminal executando watch. Você deverá ver os valores Temp, Pwr e GPU-Util aumentarem significativamente à medida que a GPU trabalha intensamente no benchmark. Isso lhe dá uma visão ao vivo do status do seu hardware.
Quando terminar de observar, pressione Ctrl+C no primeiro terminal para parar o benchmark do Hashcat e, em seguida, pressione Ctrl+C no segundo terminal para parar o comando watch.
Resumo
Neste laboratório, você adquiriu experiência prática com várias flags chave do Hashcat para gerenciar e ajustar o desempenho da GPU.
Você aprendeu a:
- Listar todos os dispositivos compatíveis com OpenCL disponíveis usando
--opencl-devices. - Direcionar uma GPU específica para uma tarefa com a flag
-d. - Proteger seu hardware contra superaquecimento definindo um limite térmico com
--gpu-temp-retain. - Experimentar com a flag
--opencl-vector-widthno modo de benchmark para encontrar configurações de desempenho ideais. - Monitorar as estatísticas em tempo real da sua GPU usando
nvidia-smiewatchdurante uma carga de trabalho pesada.
Dominar esses comandos permite que você passe de um usuário básico para um praticante avançado, capaz de maximizar a velocidade de cracking enquanto garante a segurança e a estabilidade do seu hardware.


