Introdução
VeraCrypt é uma ferramenta popular de código aberto para criptografia "on-the-fly". Embora forneça segurança robusta, as senhas podem, por vezes, ser o elo mais fraco. Compreender como testar a força destas senhas é uma habilidade crítica em auditoria de segurança e testes de penetração.
Neste laboratório, você assumirá o papel de um analista de segurança. Primeiro, criará um volume criptografado VeraCrypt com uma senha que segue um padrão conhecido. Em seguida, aprenderá a extrair os dados de hash necessários deste volume. Finalmente, usará o Hashcat, uma poderosa ferramenta de recuperação de senhas, para realizar um "ataque de máscara" (mask attack) para quebrar a senha. Este processo lhe proporcionará experiência prática com técnicas fundamentais utilizadas em forense digital e hacking ético.
Criar um Pequeno Volume Criptografado VeraCrypt
Nesta etapa, você usará a interface de linha de comando do VeraCrypt para criar um novo contêiner de arquivo criptografado. Este contêiner servirá como nosso alvo para o exercício de recuperação de senha. Usaremos intencionalmente uma estrutura de senha simples para demonstrar a eficácia de um ataque de máscara nas etapas posteriores.
Você será guiado por um processo de criação interativo. Por favor, siga as instruções cuidadosamente.
Primeiro, execute o comando para criar um novo volume. O sinalizador -t habilita o modo de texto, e -c significa criar (create).
veracrypt -t -c
O programa agora fará uma série de perguntas. Responda-as da seguinte forma:
- Tipo de Volume: Pressione
Enterpara selecionar o padrãoNormal. - Localização do Volume: Digite
myvolume.hce pressioneEnter. Isso criará o arquivo do volume em seu diretório atual (~/project). - Tamanho do Volume: Digite
1M(para 1 Megabyte) e pressioneEnter. Um tamanho pequeno é suficiente para este laboratório. - Algoritmo de Criptografia: Pressione
Enterpara selecionar o padrãoAES. - Algoritmo de Hash: Pressione
Enterpara selecionar o padrãoSHA-512. - Sistema de Arquivos: Pressione
Enterpara selecionar o padrãoFAT. - Senha: Este é um passo crítico. Para este laboratório, insira a senha
LabEx2024e pressioneEnter. - Re-digite a Senha: Digite
LabEx2024novamente e pressioneEnter. - PIM: Pressione
Enterpara usar o padrão (sem PIM). - Arquivos-chave (Keyfiles): Pressione
Enterpara pular o uso de arquivos-chave. - Coleta de Entropia: A ferramenta pedirá que você digite pelo menos 320 caracteres aleatórios para gerar entropia criptográfica. Basta digitar caracteres aleatórios no seu teclado até que a barra de progresso esteja completa e, em seguida, pressione
Enter.
Após a etapa final, o VeraCrypt criará o arquivo. Você pode verificar sua criação com o comando ls.
ls -l myvolume.hc
Você deverá ver uma saída semelhante a esta, confirmando que o arquivo existe e seu tamanho é de aproximadamente 1MB.
-rw-r--r-- 1 labex labex 1048576 Dec 01 12:34 myvolume.hc
Você agora criou com sucesso um volume VeraCrypt criptografado.
Extrair os Primeiros 512 Bytes como o Hash
Nesta etapa, você extrairá o hash da senha do volume VeraCrypt que acabou de criar. Para contêineres VeraCrypt padrão que usam algoritmos de hash como SHA-512 ou RIPEMD-160, os dados necessários para a verificação da senha são armazenados nos primeiros 512 bytes do arquivo do volume. O Hashcat pode usar esses dados diretamente para realizar um ataque de quebra.
Usaremos o comando dd, uma utilidade poderosa para copiar e converter dados.
Use o seguinte comando para ler os primeiros 512 bytes de myvolume.hc e gravá-los em um novo arquivo chamado veracrypt.hash.
if=myvolume.hc: Especifica o arquivo de entrada (input file).of=veracrypt.hash: Especifica o arquivo de saída (output file).bs=512: Define o tamanho do bloco (block size) para 512 bytes.count=1: Especifica para copiar apenas 1 bloco.
dd if=myvolume.hc of=veracrypt.hash bs=512 count=1
O comando será executado e mostrará um resumo da operação.
1+0 records in
1+0 records out
512 bytes copied, 0.00012345 s, 4.1 MB/s
Agora, verifique se o novo arquivo de hash foi criado e tem exatamente 512 bytes de tamanho.
ls -l veracrypt.hash
A saída deve ser semelhante a esta:
-rw-r--r-- 1 labex labex 512 Dec 01 12:35 veracrypt.hash
Você extraiu com sucesso os dados de hash que o Hashcat usará para o ataque.
Identificar o Modo Correto do Hashcat para VeraCrypt
Nesta etapa, você aprenderá como encontrar o "modo de hash" correto para o Hashcat. O Hashcat suporta centenas de tipos de hash diferentes, e você precisa dizer a ele exatamente qual tipo está tentando quebrar. Cada tipo é identificado por um número único.
Como criamos nosso volume com criptografia AES e o algoritmo de hash SHA-512, precisamos encontrar o modo correspondente no Hashcat. Você pode fazer isso pesquisando na saída de ajuda do Hashcat.
Use o seguinte comando para exibir as informações de ajuda do Hashcat e filtrá-las por linhas que contenham "VeraCrypt". O comando grep -i realiza uma pesquisa que não diferencia maiúsculas de minúsculas.
hashcat --help | grep -i veracrypt
A saída listará todos os modos de hash relacionados ao VeraCrypt.
...
13711 | VeraCrypt RIPEMD160 + XTS 512 bit | Operating System
13712 | VeraCrypt RIPEMD160 + XTS 1024 bit | Operating System
13713 | VeraCrypt RIPEMD160 + XTS 1536 bit | Operating System
13721 | VeraCrypt SHA512 + XTS 512 bit | Operating System
13722 | VeraCrypt SHA512 + XTS 1024 bit | Operating System
13723 | VeraCrypt SHA512 + XTS 1536 bit | Operating System
13731 | VeraCrypt SHA256 + XTS 512 bit | Operating System
13732 | VeraCrypt SHA256 + XTS 1024 bit | Operating System
13733 | VeraCrypt SHA256 + XTS 1536 bit | Operating System
13751 | VeraCrypt Whirlpool + XTS 512 bit | Operating System
13752 | VeraCrypt Whirlpool + XTS 1024 bit | Operating System
13753 | VeraCrypt Whirlpool + XTS 1536 bit | Operating System
...
Procure na lista. Com base em nossas escolhas na Etapa 1 (SHA512), o modo correto para nosso volume é 13721. Você usará este número de modo na etapa final para dizer ao Hashcat como interpretar o arquivo veracrypt.hash.
Construir um Ataque de Máscara para uma Estrutura de Senha Conhecida
Nesta etapa, você construirá uma "máscara" para um ataque Hashcat. Um ataque de máscara é incrivelmente eficiente quando você tem algum conhecimento sobre a estrutura da senha. Para nosso laboratório, sabemos que a senha é LabEx2024. Vamos fingir que sabemos apenas a estrutura: a palavra "LabEx" seguida por quatro dígitos (como um ano).
O Hashcat usa placeholders especiais, ou "charsets", para definir uma máscara:
?l= uma letra minúscula (a...z)?u= uma letra maiúscula (A...Z)?d= um dígito (0...9)?s= um caractere especial (!,@,#, etc.)
Com base em nossa estrutura assumida ("LabEx" + quatro dígitos), a máscara seria LabEx?d?d?d?d. Isso diz ao Hashcat para tentar todas as combinações começando com a string literal "LabEx" e terminando com qualquer sequência de quatro dígitos de 0000 a 9999.
Vamos fazer uma simulação para ver quais senhas esta máscara gerará. O flag -a 3 especifica um ataque de máscara, e --stdout diz ao Hashcat para imprimir os candidatos gerados na tela em vez de realizar um ataque real.
hashcat --stdout -a 3 LabEx?d?d?d?d
Este comando imprimirá rapidamente milhares de senhas potenciais no seu terminal, começando com LabEx0000, LabEx0001, e assim por diante, até atingir LabEx9999. Você pode pressionar Ctrl+C para interromper a saída a qualquer momento.
Isso confirma que nossa máscara foi construída corretamente para incluir a senha alvo, LabEx2024.
Executar o Ataque para Recuperar a Senha do Volume
Nesta etapa final, você combinará todas as peças para lançar o ataque e recuperar a senha do volume VeraCrypt. Você tem o arquivo de hash (veracrypt.hash), o modo de hash (13721) e a máscara de ataque (LabEx?d?d?d?d).
Vamos montar o comando final do Hashcat:
-m 13721: Define o modo de hash para VeraCrypt (SHA512).-a 3: Define o modo de ataque como ataque de máscara.veracrypt.hash: O arquivo de hash alvo.LabEx?d?d?d?d: A máscara de senha a ser usada.
Agora, execute o comando no seu terminal:
hashcat -m 13721 -a 3 veracrypt.hash LabEx?d?d?d?d
O Hashcat será iniciado. Como o espaço de senhas é pequeno, o ataque deve terminar muito rapidamente. Você verá atualizações de status e, em seguida, o resultado final.
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: VeraCrypt SHA512 + XTS 512 bit
Hash.Target......: veracrypt.hash
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Mask.......: LabEx?d?d?d?d [9]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: XXXXXX H/s (0.01ms) @ Accel:X Loops:X
Recovered........: 1/1 (100.00%) Digests
Progress.........: 10000/10000 (100.00%)
Rejected.........: 0/10000 (0.00%)
Restore.Point....: 10000/10000 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1
Candidates.#1....: LabEx0000 -> LabEx9999
Hardware.Mon.#1..: Util: 99%
veracrypt.hash:LabEx2024
All hashes have been recovered.
...
Sucesso! A linha veracrypt.hash:LabEx2024 mostra que o Hashcat recuperou com sucesso a senha.
O Hashcat salva automaticamente as senhas quebradas em um arquivo chamado hashcat.potfile. Você pode visualizar a senha recuperada a qualquer momento usando a opção --show:
hashcat -m 13721 --show veracrypt.hash
Isso simplesmente exibirá novamente o hash e a senha quebrados.
veracrypt.hash:LabEx2024
Parabéns, você quebrou com sucesso uma senha de volume VeraCrypt usando Hashcat!
Resumo
Neste laboratório, você adquiriu experiência prática em análise de segurança de senhas ao ter como alvo um volume criptografado VeraCrypt.
Você executou com sucesso as etapas chave de um processo de recuperação de senha:
- Criou um container criptografado usando as ferramentas de linha de comando do VeraCrypt.
- Extraiu os dados de hash de 512 bytes necessários para um ataque offline.
- Utilizou o sistema de ajuda do Hashcat para identificar o modo de hash correto para seu alvo.
- Construiu e testou um ataque de máscara direcionado com base em uma estrutura de senha conhecida.
- Executou o ataque para recuperar com sucesso a senha do volume.
Essas habilidades são fundamentais nas áreas de hacking ético e forense digital, demonstrando como políticas e estruturas de senhas podem ser testadas quanto a fraquezas. Compreender esses vetores de ataque é o primeiro passo para construir defesas mais fortes.


