Em hackers éticos e testes de penetração, a quebra de senha é crucial para obter acesso a um sistema ou servidor.
Em sistemas e bancos de dados, as senhas raramente são salvas em formato de texto simples.
As senhas são sempre criptografadas antes de serem armazenadas no banco de dados e o hash é comparado durante o processo de verificação.
Dependendo da criptografia empregada, diferentes sistemas armazenam hashes de senha de maneiras diferentes. E se você tiver hashes, poderá quebrar qualquer senha facilmente.
E neste artigo, exploraremos como quebrar hashes de senha usando uma ferramenta de linha de comando útil e excelente Hashcat.
Então vamos começar.
Mas antes disso…
últimas postagens
O que é uma função Hash?
Hashing é o processo de converter um texto de entrada normal em uma string de texto de tamanho fixo usando alguma função matemática que é conhecida como Função Hash. Qualquer texto, independentemente do tamanho, pode ser transformado em uma combinação aleatória de números inteiros e alfabetos usando um algoritmo.
- A entrada refere-se à mensagem que será hash.
- A função de hash é o algoritmo de criptografia como MD5 e SHA-256 que converte uma string em um valor de hash.
- E, finalmente, o valor de hash é o resultado.
O que é Hashcat?
Hashcat é a ferramenta de recuperação de senha mais rápida. Ele foi projetado para quebrar as senhas de alta complexidade em um curto período de tempo. E essa ferramenta também é capaz de ataques de lista de palavras e força bruta.
Hashcat tem duas variantes. Baseado em CPU e GPU (Graphical Processing Unit). A ferramenta baseada em GPU pode quebrar os hashes em menos tempo que a CPU. Você pode verificar os requisitos do driver da GPU em seu site oficial.
Características
- Gratuito e de código aberto
- Mais de 200 variações de tipo de hash podem ser implementadas.
- Suporta vários sistemas operacionais como Linux, Windows e macOS.
- Multiplataformas como suporte a CPU e GPU estão disponíveis.
- Vários hashes podem ser quebrados ao mesmo tempo.
- Arquivos hex-salt e hex-charset são suportados, juntamente com o ajuste automático de desempenho.
- Um sistema de benchmarking integrado está disponível.
- Redes de cracking distribuídas podem ser suportadas usando sobreposições.
E você pode ver outros recursos também no site deles.
Instalação do Hashcat
Primeiro, certifique-se de que seu sistema Linux esteja atualizado com os programas e ferramentas mais recentes.
Para isso, abra um terminal e digite:
$ sudo apt update && sudo apt upgrade
Hashcat geralmente é pré-instalado no Kali Linux. Você pode encontrar a ferramenta na seção de quebra de senha. Mas se você precisar instalá-lo manualmente em qualquer distribuição Linux, digite o seguinte comando no terminal.
$ sudo apt-get install hashcat
Uso da ferramenta
Para começar com o Hashcat, precisaremos de alguns hashes de senha. Se você não tiver um hash para quebrar, criaremos alguns hashes primeiro.
Para criar hashes usando a linha de comando, basta seguir o formato abaixo.
echo -n "input" | algorithm | tr -d "-">>outputfiename
Por exemplo, você pode ver que transformei algumas palavras em hashes usando o algoritmo md5 abaixo.
┌──(root💀kali)-[/home/writer/Desktop] └─# echo -n "etechpt.com" | md5sum | tr -d "-">>crackhash.txt echo -n "password123" | md5sum | tr -d "-">>crackhash.txt echo -n "Webtechnology" | md5sum | tr -d "-">>crackhash.txt echo -n "microsoftteams" | md5sum | tr -d "-">>crackhash.txt echo -n "recyclebin" | md5sum | tr -d "-">>crackhash.txt
E a saída será salva no arquivo crackhash.txt.
Agora vamos verificar os hashes que foram salvos no arquivo fornecido.
┌──(root💀kali)-[/home/writer/Desktop] └─# cat crackhash.txt 066d45208667198296e0688629e28b14 482c811da5d5b4bcd497ffeaa98491e3 72a2bc267579aae943326d17e14a8048 2192d208d304b75bcd00b29bc8de5024 caae8dd682acb088ed63e2d492fe1e13
Você pode ver, agora temos alguns hashes para quebrar. Este é o procedimento para criar um hash usando o algoritmo de sua escolha.
O próximo passo é iniciar uma ferramenta Hashcat em sua máquina Linux. Basta usar o seguinte comando para usar o Hashcat.
$ hashcat --help
Ele mostrará todas as opções que você precisa saber para executar a ferramenta. No terminal, você pode encontrar todos os modos de ataque e hash.
A forma geral do comando é
$ hashcat -a num -m num hashfile wordlistfile
Aqui o ‘num’ representa um ataque específico e um modo de hash a ser usado. Se você rolar o terminal, poderá encontrar os números exatos para cada modo de ataque e hash, como para md4 – o número é 0 e para o algoritmo sha256 – o número é 1740.
A lista de palavras que vou usar é a lista de palavras rockyou. Você pode encontrar facilmente essa lista de palavras no caminho /usr/share/wordlists.
Você pode até usar o comando locate para encontrar esse caminho da lista de palavras.
┌──(root💀kali)-[/home/writer] └─# locate rockyou.txt
E, finalmente, para quebrar os hashes usando o arquivo wordlist, use o seguinte comando.
$ hashcat -a 0 -m 0 ./crackhash.txt rockyou.txt
Depois de executar este comando, você pode obter um erro de tempo de execução ( erro de exceção de comprimento de token ) que pode ser resolvido facilmente.
Para resolver isso, salve cada hash separadamente em um arquivo diferente. Este erro ocorre se você tiver uma baixa velocidade de CPU ou GPU. Se o seu computador tiver um processador de alta velocidade, você pode facilmente quebrar todos os hashes ao mesmo tempo como um único arquivo.
Então depois de corrigir o erro e tudo mais, o resultado será assim.
┌──(root💀kali)-[/home/writer/Desktop] └─# hashcat -a 0 -m 0 hashcrack.txt rockyou.txt hashcat (v6.1.1) starting... OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project] ============================================================================================================================= * Device #1: pthread-Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz, 2403/2467 MB (1024 MB allocatable), 4MCU Minimum password length supported by kernel: 0 Maximum password length supported by kernel: 256 Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Rules: 1 Dictionary cache built: * Filename..: rockyou.txt * Passwords.: 14344405 * Bytes.....: 139921671 * Keyspace..: 14344398 * Runtime...: 1 sec 8276b0e763d7c9044d255e025fe0c212: [email protected] Session..........: hashcat Status...........: Cracked Hash.Name........: MD5 Hash.Target......: 8276b0e763d7c9044d255e025fe0c212 Time.Started.....: Sun Dec 12 08:06:15 2021 (0 secs) Time.Estimated...: Sun Dec 12 08:06:15 2021 (0 secs) Guess.Base.......: File (rockyou.txt) Guess.Queue......: 1/1 (100.00%) Speed.#1.........: 1059.6 kH/s (0.52ms) @ Accel:1024 Loops:1 Thr:1 Vec:8 Recovered........: 1/1 (100.00%) Digests Progress.........: 4096/14344398 (0.03%) Rejected.........: 0/4096 (0.00%) Restore.Point....: 0/14344398 (0.00%) Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1 Candidates.#1....: 123456 -> pampam Started: Sun Dec 12 08:06:13 2021 Stopped: Sun Dec 12 08:06:16 2021
No resultado acima, após os detalhes do cache do dicionário, você pode notar que o hash foi quebrado e a senha foi revelada.
Conclusão
Espero que você tenha entendido melhor como usar o Hashcat para quebrar senhas.
Você também pode estar interessado em conhecer as várias ferramentas de força bruta para testes de penetração e algumas das melhores ferramentas de pentesting.