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.-f2seleciona 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
7z2johnpara 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.


