Quebrar Senhas de Arquivos ZIP com John the Ripper

HydraBeginner
Pratique Agora

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.