Cracking de senhas e hashes utilizando Hashcat

Cracking de senhas e hashes utilizando Hashcat

Hashcat é uma ferramenta poderosa, de código aberto e gratuita e que tem como finalidade o cracking ou quebra de senhas. Ela suporta diversos algoritmos de hash e, neste post, vamos dar uma olhada em alguns exemplos básicos de como quebrar hashes usando o Hashcat.

TL;DR

O uso básico consiste na seguinte linha de comando:

hashcat -a [Attack mode] -m [Tipo da hash] [Hash ou Arquivo contendo as hashes] [Wordlist]

Exemplo de comando (quebrar hash NTLM):

hashcat -a 0 -m 1000 hashes.txt /usr/share/wordlists/rockyou.txt

Primeiramente, o que é cracking de senhas?

A quebra (ou cracking) de senhas é o nome que se dá ao processo de obtenção de uma senha a partir de uma determinada hash. Por conta do avanço da segurança da informação, a maioria das senhas que você encontrará em um sistema não são armazenadas em clear text (texto claro ou que lê-se normalmente), mas sim no formato de hashes.

Uma hash é uma string, gerada pela execução de uma função de hash criptográfica. Ao fazer isso, é produzida uma saída exclusiva para aquela senha específica. Veja abaixo uma ilustração do processo de hashing.

Processo de Hashing

Parâmetros mais utilizados

ParâmetroDescrição
-aEspecifica o modo de ataque (serão fornecidos alguns exemplos abaixo)
-mEspecifica o tipo da hash (Por exemplo -m 0 para hashes MD5)

Attack modes do Hashcat

O Hashcat possui 6 modos de ataque, listados abaixo:

Attack mode (-a)Descrição
0Dicionário: Tenta todas as palavras de uma lista
1Combinador: Concatena palavras de múltiplas listas
3Bruteforce ou Máscara: trying all characters from given charsets, per position
6Híbrido (Wordlist + Máscara): Combina uma Wordlist com uma Máscara
7Híbrido (Máscara+ Wordlist): Combina uma Máscara e uma Wordlist
9Associação: Usa uma dica (nome de usuário, arquivo, data, etc.) que possa ter influenciado na geração da senha

Exemplos de diferentes attack modes

Ataque de dicionário

O attack mode de dicionário (-a 0) é o mais utilizado e neste modo o hashcat irá tentar quebrar a senha a partir de uma wordlist. No comando abaixo, por exemplo, estamos tentando quebrar hashes MD5 utilizando wordlist rockyou:

hashcat -a 0 -m 0 hashes.txt /usr/share/wordlists/rockyou.txt

Ataque combinador

O attack mode combinador (-a 1) realiza a concatenação de duas wordlists, veja a ilustração abaixo:

Hashcat combinator

No exemplo abaixo estamos quebrando a hash MD5 correspondente a string “password” utilizando o attack mode combinador:

hashcat -m 0 -a 1 5f4dcc3b5aa765d61d8327deb882cf99 wordlist1.txt wordlist2.txt

Ataque de Bruteforce ou Máscara

No attack mode de Bruteforce ou Máscara (-a 3) o hashcat tenta todos os caracteres possíveis (começando com um caractere e aumentando):

hashcat -m 0 -a 3 42f749ade7f9e195bf475f37a44cafcb

Também é possível fornecer uma máscara da seguinte maneira:

hashcat -m 0 -a 3 42f749ade7f9e195bf475f37a44cafcb Password?d?d?d 

No exemplo acima estamos tentando quebrar a hash em questão com a string “Password” + 3 dígitos numéricos.

Veja abaixo a lista completa de máscaras possíveis:

  • ?l: Letras minúsculas (abcdefghijklmnopqrstuvwxyz)
  • ?u: Letras maiúsculas (ABCDEFGHIJKLMNOPQRSTUVWXYZ)
  • ?d: Dígitos (0123456789)
  • ?s: Símbolos especiais (!"#$%&’()*+,-./:;<=>?@[]^_`{|}~)
  • ?a: Letras minúsculas e maiúsculas (equivalente a ?l?u)
  • ?h: Hexadecimal (0123456789abcdef)
  • ?i: Imprimíveis (0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&’()*+,-./:;<=>?@[]^_`{|}~)

E se eu não souber com qual tipo de hash estou lidando?

Caso você não saiba com qual tipo de hash você está lidando, basta utilizar ferramentas como hashid, hash-identifier ou o website https://hashes.com/en/tools/hash_identifier .


E se eu não souber qual o número do módulo da hash no hashcat?

Neste caso você pode utilizar o comando abaixo para identificar o número do módulo:

hashcat -h | grep -i <Tipo de hash>
Help do Hashcat

Por exemplo, neste caso o módulo a ser utilizado para quebrar hashes MD5 é -m 0.

Por fim, agradecemos a leitura e esperamos que este post tenha te ajudado de alguma maneira! Caso tenha alguma dúvida, entre em contato conosco pelo Telegram , Facebook ou Instagram ! Veja mais posts no IronLinux !