Introdução
Neste laboratório, você aprenderá a quebrar um arquivo ZIP protegido por senha usando o John the Ripper, uma ferramenta de recuperação de senhas popular e poderosa. Este exercício o guiará pelas etapas fundamentais de um processo de quebra de senha, desde a configuração das ferramentas necessárias até a verificação da senha descoberta. Ao final deste laboratório, você entenderá como os hashes de senha são extraídos e utilizados em ataques de dicionário e de força bruta, destacando a importância do uso de senhas fortes para a proteção de arquivos.
Instalar Ferramentas Necessárias
Antes de começarmos a quebrar senhas, precisamos instalar o software necessário. Nesta etapa, você instalará o John the Ripper (JtR), a ferramenta principal deste laboratório, e o utilitário zip, que usaremos para criar nosso arquivo de destino. Utilizaremos o gerenciador de pacotes apt, que é o padrão para sistemas baseados em Debian, como o Ubuntu.
Primeiro, instale as dependências necessárias e o utilitário zip executando os seguintes comandos no seu terminal. A flag -y confirma automaticamente a instalação.
sudo apt update
sudo apt install -y git build-essential libssl-dev zlib1g-dev zip
sudo apt install -y yasm pkg-config libgmp-dev libpcap-dev libbz2-dev
O pacote padrão john dos repositórios apt não inclui o utilitário zip2john que precisamos. Vamos clonar e compilar o John the Ripper a partir do repositório oficial para obter o conjunto completo de ferramentas.
cd ~/project
git clone --depth 1 https://github.com/openwall/john -b bleeding-jumbo john
cd john/src
./configure && make -s clean && make -sj4
Aviso: O processo de compilação pode levar de 3 a 5 minutos. Por favor, seja paciente.
Após a conclusão da compilação, crie aliases para as ferramentas do John the Ripper para que você possa usá-las de qualquer lugar:
echo 'alias john="$HOME/project/john/run/john"' >> ~/.zshrc
echo 'alias zip2john="$HOME/project/john/run/zip2john"' >> ~/.zshrc
source ~/.zshrc
Agora verifique se tanto o john quanto o zip2john estão funcionando corretamente a partir de qualquer diretório:
john
Você deve ver uma saída semelhante à seguinte, indicando que o John the Ripper foi instalado com sucesso:
John the Ripper 1.9.0-jumbo-1+bleeding-7a8c81abd9 2025-08-23 23:43:48 +0200 OMP [linux-gnu 64-bit x86_64 AVX-512 AC]
Copyright (c) 1996-2025 by Solar Designer and others
Homepage: https://www.openwall.com/john/
Usage: john [OPTIONS] [PASSWORD-FILES]
Use --help to list all available options.
Verifique também se o zip2john está disponível:
zip2john
Isso deve exibir as informações de uso do utilitário zip2john.
Agora você pode navegar de volta para o diretório do seu projeto para o restante do laboratório:
cd ~/project
Com as ferramentas necessárias instaladas, você está pronto para criar um arquivo protegido por senha para o nosso exercício de quebra.
Criar um Arquivo ZIP Protegido por Senha
Para praticar a quebra de senhas, primeiro precisamos de um alvo. Nesta etapa, você criará um arquivo de texto simples e depois o arquivará em um arquivo ZIP protegido por senha. Isso simulará um cenário do mundo real onde arquivos confidenciais são protegidos com uma senha.
Primeiro, certifique-se de que você está no diretório do projeto. Seu terminal já deve estar neste diretório por padrão.
cd ~/project
Em seguida, crie um arquivo de texto simples chamado secret.txt. Este arquivo será colocado dentro do nosso arquivo ZIP protegido.
echo "my secret data" > secret.txt
Agora, use o comando zip com a flag -e (para criptografia) para criar um arquivo protegido chamado secret.zip contendo o secret.txt.
zip -e secret.zip secret.txt
Após executar o comando, você será solicitado a inserir e depois verificar uma senha. Para este laboratório, use a senha fraca password123. Isso tornará o processo de quebra mais rápido para fins de demonstração.
Nota: Ao digitar a senha, você não verá nenhum caractere exibido na tela — este é um recurso de segurança normal, não um travamento do sistema. Basta digitar a senha e pressionar Enter.
Enter password:
Verify password:
adding: secret.txt (stored 0%)
Por fim, você pode listar os arquivos no diretório para confirmar que o secret.zip foi criado.
ls -l
Você deve ver secret.txt e secret.zip na saída.
total 8
-rw-rw-r-- 1 labex labex 15 Aug 29 09:57 secret.txt
-rw-rw-r-- 1 labex labex 213 Aug 29 09:57 secret.zip
Você criou com sucesso um arquivo ZIP protegido por senha, que servirá como nosso alvo nas próximas etapas.
Extrair o Hash do Arquivo ZIP
O John the Ripper não trabalha diretamente no arquivo ZIP em si. Em vez disso, ele trabalha no hash da senha do arquivo. Um hash é uma sequência única de caracteres que representa a senha. Nesta etapa, você usará um utilitário incluído no John the Ripper chamado zip2john para extrair esse hash.
Execute o comando zip2john no seu arquivo secret.zip. Vamos redirecionar a saída usando o operador > para salvar o hash em um novo arquivo chamado zip_hash.txt:
zip2john secret.zip > zip_hash.txt
Ao executar este comando, você verá uma saída detalhada no terminal mostrando informações sobre a estrutura do arquivo ZIP:
ver 1.0 efh 5455 efh 7875 secret.zip/secret.txt PKZIP Encr: 2b chk, TS_chk, cmplen=27, decmplen=15, crc=AF1563E8 ts=4F26 cs=4f26 type=0
Essas informações mostram detalhes sobre o arquivo criptografado, incluindo parâmetros de compressão e criptografia.
Para ver como é o hash extraído, use o comando cat para exibir o conteúdo de zip_hash.txt:
cat zip_hash.txt
A saída será uma única linha de texto semelhante a esta:
secret.zip/secret.txt:$pkzip$1*2*2*0*1b*f*af1563e8*0*44*0*1b*4f26*50dbe9bcf15eafdb00ef774e1eaffef116bf5e0597fa55bb8b364c*$/pkzip$:secret.txt:secret.zip::secret.zip
A string do hash inclui o nome do arquivo original, o tipo de criptografia ($pkzip$) e os dados criptografados. Com este arquivo de hash criado, você está pronto para usar o John the Ripper para quebrar a senha.
Quebrar a Senha
Agora que você tem o hash da senha, pode usar o John the Ripper para quebrá-lo. O JtR usará suas configurações padrão, que incluem um dicionário de senhas comuns e regras para encontrar uma correspondência para o hash.
Para iniciar o processo de quebra, basta executar o comando john e fornecer seu arquivo de hash, zip_hash.txt, como entrada:
john zip_hash.txt
Como usamos uma senha muito fraca, o John the Ripper deve quebrá-la rapidamente. A saída mostrará o progresso e o resultado. O John tentará diferentes modos de ataque — primeiro o modo "single", depois o modo de lista de palavras (wordlist):
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Note: Passwords longer than 21 [worst case UTF-8] to 63 [ASCII] rejected
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, 'h' for help, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
0g 0:00:00:00 DONE 1/3 (2025-08-29 10:24) 0g/s 2619Kp/s 2619Kc/s 2619KC/s Txtsecret1900..Tzip1900
Proceeding with wordlist:/home/labex/project/john/run/password.lst
Enabling duplicate candidate password suppressor using 256 MiB
password123 (secret.zip/secret.txt)
1g 0:00:00:00 DONE 2/3 (2025-08-29 10:24) 8.333g/s 286541p/s 286541c/s 286541C/s 123456..nelly1
Use the "--show" option to display all of the cracked passwords reliably
Session completed
A linha password123 (secret.zip/secret.txt) indica que a senha foi quebrada com sucesso. Observe que o John primeiro tenta o modo "single" (que não encontrou a senha) e depois passa para o modo wordlist, onde encontra a senha com sucesso.
Uma vez que uma senha foi quebrada, o John a armazena em um arquivo. Para visualizar quaisquer senhas quebradas para um determinado arquivo de hash, você pode usar a opção --show.
john --show zip_hash.txt
Este comando exibirá a senha quebrada em um formato claro, vinculando-a ao arquivo de origem.
secret.zip/secret.txt:password123:secret.txt:secret.zip::secret.zip
1 password hash cracked, 0 left
Você usou com sucesso o John the Ripper para recuperar a senha a partir do hash do arquivo ZIP. O passo final é verificar se esta senha funciona.
Verificar o Acesso com a Senha Descoberta
A etapa final deste processo é confirmar se a senha que você quebrou está correta. Você fará isso usando a senha para extrair o conteúdo do arquivo secret.zip. Esta etapa valida o resultado do seu esforço de quebra de senha.
Use o comando unzip para extrair o arquivo.
unzip secret.zip
O comando solicitará a senha. Digite password123, que é a senha que o John the Ripper recuperou.
Archive: secret.zip
[secret.zip] secret.txt password:
replace secret.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: yes
extracting: secret.txt
Você pode ver uma solicitação perguntando se deseja substituir o arquivo secret.txt existente (caso ele ainda exista da Etapa 2). Digite yes para confirmar a substituição. Se a senha estiver correta, o comando unzip extrairá o secret.txt para o seu diretório atual sem erros.
Para concluir a verificação, exiba o conteúdo do arquivo extraído para garantir que os dados estão intactos.
cat secret.txt
A saída deve corresponder ao texto original que criamos na Etapa 2.
my secret data
Ao extrair o arquivo com sucesso e visualizar seu conteúdo original, você confirmou que a senha recuperada pelo John the Ripper está correta. Isso completa o ciclo completo de criação de um arquivo protegido, quebra de sua senha e verificação do resultado.
Resumo
Neste laboratório, você adquiriu experiência prática com a quebra de senhas usando o John the Ripper. Você aprendeu como instalar as ferramentas necessárias, criar um arquivo ZIP protegido por senha e extrair seu hash de senha usando o zip2john. Em seguida, utilizou com sucesso o John the Ripper para quebrar a senha a partir do hash e, por fim, verificou a senha descoberta usando-a para acessar o arquivo protegido. Este exercício demonstra uma técnica fundamental em testes de segurança e reforça a vulnerabilidade de senhas fracas.


