Quebrar Arquivos 7z Protegidos por Senha

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá o processo fundamental de quebrar um arquivo 7z protegido por senha. O 7-Zip é um arquivador de arquivos popular com uma alta taxa de compressão, e permite que os usuários criptografem arquivos com uma senha. Simularemos um cenário onde você precisa recuperar uma senha esquecida.

Você usará uma combinação de ferramentas poderosas e padrão da indústria: p7zip para criar o arquivo, o conjunto John the Ripper para extrair o hash da senha e Hashcat para realizar a quebra real. Esta experiência prática o guiará através da criação de um alvo, extração de seu hash criptográfico e uso de um ataque de máscara para encontrar eficientemente a senha.

Criar um Arquivo 7z Protegido por Senha

Nesta etapa, começaremos criando um arquivo de exemplo e, em seguida, o comprimiremos em um arquivo 7z protegido por senha. Este arquivo será nosso alvo para o processo de quebra de senha nas etapas subsequentes.

Primeiro, vamos criar um arquivo de texto simples chamado secret.txt em seu diretório atual, ~/project.

echo "This is a secret file." > secret.txt

Agora, usaremos o comando 7z para criar um arquivo chamado secret.7z a partir de secret.txt. Nós o protegeremos com a senha LabEx2024. O sinalizador -p é usado para especificar a senha diretamente.

7z a -pLabEx2024 secret.7z secret.txt

Você deverá ver uma saída indicando que o arquivo foi criado e comprimido com sucesso.

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs LE)

Scanning the drive:
1 file, 25 bytes (1 KiB)

Creating archive: secret.7z

Items to compress: 1


Files read from disk: 1
Archive size: 228 bytes (1 KiB)
Everything is Ok

Você agora criou com sucesso o arquivo protegido por senha com o qual trabalharemos.

Usar 7z2john.pl para Extrair o Hash

Nesta etapa, você extrairá o hash da senha do arquivo secret.7z. Ferramentas de quebra de senha como o Hashcat não funcionam diretamente no arquivo do archive; elas precisam de uma representação de string específica da chave de criptografia da senha, conhecida como hash.

Usaremos o 7z2john, um utilitário do conjunto John the Ripper, que é projetado especificamente para extrair esses hashes de arquivos 7z.

Execute o seguinte comando para processar secret.7z e salvar seu hash em um novo arquivo chamado hash.txt. O símbolo > redireciona a saída do comando para o arquivo especificado.

/usr/sbin/7z2john secret.7z > hash.txt

O comando não produzirá nenhuma saída visível no terminal porque foi redirecionado. Para confirmar que o hash foi extraído, visualize o conteúdo de hash.txt:

cat hash.txt

A saída será uma string longa, que é o hash que representa a senha. Ela será prefixada com o nome do arquivo.

secret.7z:$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301

Agora você tem o hash pronto para a próxima etapa de preparação.

Limpar o Hash Extraído para o Hashcat

Nesta etapa, precisamos preparar o hash extraído para o Hashcat. A saída do 7z2john é formatada para o John the Ripper e inclui o nome do arquivo como um prefixo (por exemplo, secret.7z:). O Hashcat, no entanto, requer apenas a string pura do hash para funcionar corretamente.

Usaremos o comando cut para remover o prefixo do nome do arquivo. O comando cut é um utilitário simples para extrair seções de linhas de arquivos. Diremos a ele para usar o dois pontos (:) como delimitador e para selecionar o segundo campo.

Execute o seguinte comando para limpar o hash e salvá-lo em um novo arquivo, hashcat.txt:

cut -d':' -f2 hash.txt > hashcat.txt
  • -d':' define o delimitador como dois pontos.
  • -f2 seleciona o segundo campo após a divisão.

Vamos verificar o conteúdo do nosso novo arquivo para garantir que o prefixo foi removido.

cat hashcat.txt

A saída agora deve ser apenas a string do hash, sem a parte secret.7z:.

$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301

O hash agora está no formato correto para o Hashcat.

Selecionar o Modo de Hash para 7-Zip

Nesta etapa, identificaremos o "modo de hash" correto que o Hashcat precisa para entender e processar nosso hash 7-Zip. O Hashcat suporta centenas de tipos de hash diferentes, e cada um tem um código numérico exclusivo. Você deve especificar o código correto para que o Hashcat funcione.

Podemos encontrar o modo para 7-Zip pesquisando no menu de ajuda do Hashcat. Usaremos o grep para filtrar a saída em busca do termo "7-Zip".

hashcat --help | grep -i "7-Zip"

O sinalizador -i no grep torna a pesquisa insensível a maiúsculas e minúsculas. A saída mostrará o número do modo associado aos arquivos 7-Zip.

11600 | 7-Zip                                          | Archives

Como você pode ver na saída, o modo de hash para 7-Zip é 11600. Usaremos este número na próxima etapa quando executarmos o ataque de quebra.

Executar um Ataque de Máscara para Quebrar a Senha do 7z

Nesta etapa final, usaremos o Hashcat para quebrar a senha. Realizaremos um "ataque de máscara", que é um tipo de ataque de força bruta altamente eficaz quando você tem algum conhecimento sobre a estrutura da senha.

Nossa senha é LabEx2024. Podemos descrever sua estrutura com uma máscara:

  • Começa com uma letra maiúscula (?u).
  • Seguido por duas letras minúsculas (?l?l).
  • Seguido por uma letra maiúscula e uma letra minúscula (?u?l).
  • Termina com quatro dígitos (?d?d?d?d).

A máscara completa é ?u?l?l?u?l?d?d?d?d.

Agora, vamos construir o comando Hashcat:

  • -m 11600: Especifica o modo de hash 7-Zip que encontramos na etapa anterior.
  • -a 3: Define o modo de ataque como "Força Bruta / Máscara" (Brute-force / Mask).
  • hashcat.txt: Nosso arquivo contendo o hash limpo.
  • ?u?l?l?u?l?d?d?d?d: A máscara da senha.

Execute o comando para iniciar o ataque:

hashcat -m 11600 -a 3 hashcat.txt ?u?l?l?u?l?d?d?d?d

O Hashcat iniciará e você verá sua tela de status. Como a senha é simples e a máscara é precisa, ela deverá ser quebrada muito rapidamente.

...
Session..........: hashcat
Status...........: Cracked
...

Quando o status mostrar Cracked, a senha foi encontrada. Para visualizar a senha recuperada, você pode usar o sinalizador --show com o mesmo comando:

hashcat -m 11600 hashcat.txt --show

Isso exibirá o hash seguido pela senha quebrada.

$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301:LabEx2024

Parabéns! Você quebrou com sucesso a senha do arquivo 7z.

Resumo

Neste laboratório, você percorreu com sucesso o processo completo de quebra de uma senha de arquivo 7z protegida por senha.

Você aprendeu como:

  • Criar um arquivo 7z protegido por senha usando o comando 7z.
  • Usar a utilidade 7z2john para extrair o hash da senha do arquivo.
  • Limpar e formatar o hash extraído para uso com o Hashcat.
  • Identificar o modo de hash correto no Hashcat para um tipo de hash específico.
  • Executar um ataque de máscara direcionado com o Hashcat para recuperar eficientemente a senha.

Este fluxo de trabalho fornece uma base sólida para entender os princípios de quebra de senha e a aplicação prática de ferramentas poderosas como o John the Ripper e o Hashcat.