Use o John the Ripper para Quebrar Documentos do Office (DOCX, XLSX, PPTX)

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você explorará o processo de quebra de documentos Microsoft Office protegidos por senha (DOCX, XLSX, PPTX) usando a poderosa ferramenta de quebra de senhas, John the Ripper. Usaremos o office2john.py para extrair o hash da senha dos arquivos do Office e, em seguida, forneceremos este hash ao John the Ripper para quebra. Este laboratório demonstrará as etapas envolvidas em um cenário prático, ajudando você a entender as implicações de segurança de senhas fracas em documentos do Office.

Criar um Arquivo DOCX Protegido por Senha

Nesta etapa, você criará um arquivo DOCX simples e o protegerá com uma senha. Este arquivo será então usado nas etapas subsequentes para extrair e quebrar seu hash de senha.

Primeiro, vamos instalar o libreoffice-writer para criar o arquivo DOCX.

sudo apt install -y libreoffice-writer

Após a instalação, abra o LibreOffice Writer.

libreoffice --writer &

Uma nova janela do LibreOffice Writer será aberta.

  1. Digite algum texto, por exemplo, "Este é um documento de teste."
  2. Vá para Arquivo -> Salvar como....
  3. Na caixa de diálogo Salvar como, navegue até /home/labex/project/.
  4. Digite secret.docx como nome do arquivo.
  5. Marque a caixa Salvar com senha.
  6. Clique em Salvar.
  7. Na caixa de diálogo Definir Senha, digite password123 como senha em ambos os campos Inserir senha e Confirmar senha.
  8. Clique em OK.
  9. Feche o LibreOffice Writer.

Verifique se o arquivo secret.docx existe no seu diretório ~/project.

ls -l ~/project/secret.docx

-rw-r--r-- 1 labex labex XXXX Month XX XX:XX /home/labex/project/secret.docx

Extrair Hash de DOCX usando office2john

Nesta etapa, você usará o script office2john.py, que faz parte do conjunto John the Ripper, para extrair o hash da senha do arquivo secret.docx que você criou. Este hash é o que o John the Ripper tentará quebrar.

Primeiro, localize o script office2john.py. Ele geralmente é encontrado no diretório /usr/share/john/.

find /usr/share/john/ -name office2john.py

/usr/share/john/office2john.py

Agora, use o office2john.py para extrair o hash do secret.docx e salvá-lo em um arquivo chamado hash.txt.

python3 /usr/share/john/office2john.py ~/project/secret.docx > ~/project/hash.txt

Exiba o conteúdo de hash.txt para ver o hash extraído.

cat ~/project/hash.txt

secret.docx:$office$*2007*100000*256*16*XXXXXXXXXXXXXXX*XXXXXXXXXXXXXXX*XXXXXXXXXXXXXXX*XXXXXXXXXXXXXXX

A saída mostrará uma longa string começando com secret.docx:$office$..., que é o hash da sua senha.

Quebrar Hash de DOCX com John the Ripper

Agora que você extraiu o hash, usará o John the Ripper para quebrá-lo. Usaremos uma wordlist simples para esta demonstração, pois nossa senha é "password123", que é uma palavra comum.

O John the Ripper vem com uma wordlist padrão localizada em /usr/share/john/password.lst. Vamos usar esta wordlist.

john --wordlist=/usr/share/john/password.lst ~/project/hash.txt

O John the Ripper começará a processar o hash. Se a senha estiver na wordlist, ele a encontrará rapidamente.


Using default input encoding: UTF-8
Loaded 1 password hash (Office, 2007/2010/2013/2016 [MD5/SHA1/SHA256/SHA512 RC4/AES])
Will run till all hashes are cracked, by default
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (secret.docx)
1g 0:00:00:00 DONE (20XX-XX-XX XX:XX) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Session completed.

Após a quebra, você pode visualizar as senhas quebradas usando a opção --show.

john --show ~/project/hash.txt

secret.docx:password123

1 password hash cracked, 0 left

Esta saída confirma que o John the Ripper quebrou com sucesso a senha para secret.docx como password123.

Repetir para Arquivos XLSX e PPTX

Nesta etapa, você aplicará o mesmo processo aos arquivos XLSX (Excel) e PPTX (PowerPoint) para demonstrar que office2john.py e John the Ripper funcionam de forma semelhante em diferentes tipos de documentos do Office.

Primeiro, instale libreoffice-calc e libreoffice-impress.

sudo apt install -y libreoffice-calc libreoffice-impress

Criar um Arquivo XLSX Protegido por Senha:

  1. Abra o LibreOffice Calc:
    libreoffice --calc &
  2. Digite algum texto, por exemplo, "Spreadsheet data."
  3. Vá em Arquivo -> Salvar Como....
  4. Navegue até /home/labex/project/.
  5. Digite secret.xlsx como nome do arquivo.
  6. Marque Salvar com senha.
  7. Clique em Salvar.
  8. Defina a senha como password123 e confirme.
  9. Clique em OK e feche o LibreOffice Calc.

Extrair Hash do XLSX:

python3 /usr/share/john/office2john.py ~/project/secret.xlsx >> ~/project/hash.txt

Criar um Arquivo PPTX Protegido por Senha:

  1. Abra o LibreOffice Impress:
    libreoffice --impress &
  2. Adicione um título, por exemplo, "Presentation Title."
  3. Vá em Arquivo -> Salvar Como....
  4. Navegue até /home/labex/project/.
  5. Digite secret.pptx como nome do arquivo.
  6. Marque Salvar com senha.
  7. Clique em Salvar.
  8. Defina a senha como password123 e confirme.
  9. Clique em OK e feche o LibreOffice Impress.

Extrair Hash do PPTX:

python3 /usr/share/john/office2john.py ~/project/secret.pptx >> ~/project/hash.txt

Quebrar Todos os Hashes:
Agora, execute o John the Ripper no arquivo hash.txt atualizado, que agora contém os hashes para DOCX, XLSX e PPTX.

john --wordlist=/usr/share/john/password.lst ~/project/hash.txt

Using default input encoding: UTF-8
Loaded 3 password hashes (Office, 2007/2010/2013/2016 [MD5/SHA1/SHA256/SHA512 RC4/AES])
Will run till all hashes are cracked, by default
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (secret.xlsx)
password123      (secret.pptx)
password123      (secret.docx)
3g 0:00:00:00 DONE (20XX-XX-XX XX:XX) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Session completed.

Verifique todas as senhas quebradas:

john --show ~/project/hash.txt

secret.xlsx:password123
secret.pptx:password123
secret.docx:password123

3 password hashes cracked, 0 left

Compreender a Criptografia de Documentos do Office

Nesta etapa, discutiremos brevemente os mecanismos de criptografia usados pelos documentos do Microsoft Office e por que ferramentas como o John the Ripper são eficazes.

Documentos modernos do Microsoft Office (DOCX, XLSX, PPTX) usam formatos baseados em XML (Open XML). Quando uma senha é definida, o conteúdo do documento é criptografado. O processo de criptografia envolve a derivação de uma chave de criptografia da senha do usuário usando uma função de derivação de chave (KDF) como PBKDF2 (Password-Based Key Derivation Function 2).

O office2john.py funciona extraindo os parâmetros necessários da estrutura XML do documento do Office, como o salt (sal), a contagem de iterações e o hash do verificador criptografado. Esses parâmetros, juntamente com o tipo de hash (por exemplo, Office 2007/2010/2013/2016), formam a string de "hash" que o John the Ripper entende.

O John the Ripper, então, realiza um ataque de força bruta ou de dicionário. Para cada palavra em sua wordlist (ou cada combinação em um ataque de força bruta), ele aplica a mesma KDF com os parâmetros extraídos para gerar uma chave candidata. Se essa chave candidata corresponder ao hash do verificador criptografado, a senha é encontrada.

A força da criptografia depende muito da complexidade e do comprimento da senha. Senhas fracas ou comuns, como "password123", são facilmente quebradas usando ataques de dicionário, como demonstrado neste laboratório. Senhas fortes, que são longas, aleatórias e contêm uma mistura de caracteres, aumentam significativamente o tempo e os recursos computacionais necessários para a quebra, tornando-as muito mais seguras.

Este exercício destaca a importância de usar senhas fortes e exclusivas para documentos confidenciais para protegê-los contra acesso não autorizado.

Resumo

Neste laboratório, você aprendeu com sucesso como extrair hashes de senha de documentos protegidos por senha do Microsoft Office (DOCX, XLSX, PPTX) usando office2john.py. Em seguida, você usou o John the Ripper para quebrar esses hashes extraídos, demonstrando a vulnerabilidade de documentos protegidos com senhas fracas. Esta experiência prática forneceu insights sobre o processo de quebra de senhas e reforçou a importância de usar senhas fortes e complexas para proteger seus ativos digitais.