Cracking de senhas e hashes utilizando Hashcat
- Gustavo Viana
- Segurança ofensiva , Segurança da informação
- 17 de novembro de 2023
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.
Parâmetros mais utilizados
Parâmetro | Descrição |
---|---|
-a | Especifica o modo de ataque (serão fornecidos alguns exemplos abaixo) |
-m | Especifica 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 |
---|---|
0 | Dicionário: Tenta todas as palavras de uma lista |
1 | Combinador: Concatena palavras de múltiplas listas |
3 | Bruteforce ou Máscara: trying all characters from given charsets, per position |
6 | Híbrido (Wordlist + Máscara): Combina uma Wordlist com uma Máscara |
7 | Híbrido (Máscara+ Wordlist): Combina uma Máscara e uma Wordlist |
9 | Associaçã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:
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>
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 !