Skip to content

Cracking de hashes

Resuminho

Comandos mais utilizados

Indentificando o algorítimo dos hashes

Recomendo sempre fazer uma identificação do hash que estamos trabalhando e temos duas ferramentas que podem nos auxiliar com isso, sendo elas:

hash-identifier <hash>

e

hashid <hash>

Fontes de algorítimos suportados (hashcat e john)

Uma vez identificado o hash, podemos consultar algumas fontes para quebrarmos esses hashes:

Lista de algorítimos suportados pelo JohnThe Ripper

Lista de algorítimos suportados pelo Hashcat

Pra dar agilidade pra quem está estudando, separei alguns algorítimos de hashes utilizados em máquinas Linux e o correspondente em cada ferramenta:

Início Hash Algorítimo John The Ripper Hashcat (Hash-Mode)
$1$ MD5 --format=raw-md5 500
$2a$ Blowfish --format=bf 3200
$2y$ Blowfish --format=bf 3200
$5$ SHA-256 --format=raw-sha256 7400
$6$ SHA-512 --format=raw-sha512 1800
$y$ yescrypt --format=crypt Não implementado ainda**

** Faço menção a essa discussão no github do hashcat

Palavras de um dos contribuidores do Hashcat :

"For those wondering why yescrypt hasn't been implemented yet - it's not dev laziness, it's just that yescrypt is by design extremely slow and inefficient to run on GPUs but faster on CPUs and given Hashcat is a GPU-oriented program, this is a little awkward. yescrypt is a very complex algorithm and Solar Designer is a major contributor to John the Ripper so he certainly knows how to make a difficult-to-crack algorithm. As Royce said, you can use John for now but also doesn't have GPU code so it'll be run on CPU (if you have the libraries for it)"

Em resumo: O desafio de fazer com que esse hash seja quebrado com um algorítimo que não é eficiente para quebras em GPUs, porém é mais rápido de ser processado em CPUs. Por enquanto utilizar o John The Ripper mesmo.

Comandos John The Ripper

Utilizando John The Ripper para quebrar hashes de senhas

Aqui é importante ressaltar que para que o john reconheça automaticamente os hashes de senha, o parâmetro informado deve ser o "--wordlists=" ou "-w=", caso contrário é necessário o parâmetro --format também.

Básico:

john -w=/usr/share/wordlists/rockyou.txt hash.txt

As vezes o john não encontra um algorítimo que está presente no hash dentro do arquivo hash.txt, então temos de informá-lo da seguinte maneira, (exemplo):

john --format=crypt --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

unshadow linux hashes

É necessário esse passo antes de colocar o shadow para quebrar, caso contrário, não funcionará.

unshadow /etc/shadow /etc/shadow > hashes.john
john --format=sha256crypt -w /usr/share/wordlists/rockyou.txt hashes.txt

ntlmv2

john --format=netntlmv2 --wordlist=wordlist.lst HTTP-NTLMv2-10.12.23.100.txt

john --incremental hashes-3.des.txt

zip

zip2john bank_account.zip > zip.hashes
john --wordlist=/usr/share/wordlists/rockyou.txt zip.hashes

Tutorial de regras

source:https://www.openwall.com/john/doc/RULES.shtml https://www.gracefulsecurity.com/custom-rules-for-john-the-ripper/ https://www.gracefulsecurity.com/custom-rules-for-john-the-ripper-examples/

Editando este arquivo, podemos inserir regras para mutar a a wordlist e assim conseguir uma wordlist melhorada:

sudo nano /etc/john/john.conf

Comandos Hashcat

Utilizando Hashcat para quebrar hashes de senhas

hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt