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.
- Digite algum texto, por exemplo, "Este é um documento de teste."
- Vá para
Arquivo->Salvar como.... - Na caixa de diálogo
Salvar como, navegue até/home/labex/project/. - Digite
secret.docxcomo nome do arquivo. - Marque a caixa
Salvar com senha. - Clique em
Salvar. - Na caixa de diálogo
Definir Senha, digitepassword123como senha em ambos os camposInserir senhaeConfirmar senha. - Clique em
OK. - 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:
- Abra o LibreOffice Calc:
libreoffice --calc & - Digite algum texto, por exemplo, "Spreadsheet data."
- Vá em
Arquivo->Salvar Como.... - Navegue até
/home/labex/project/. - Digite
secret.xlsxcomo nome do arquivo. - Marque
Salvar com senha. - Clique em
Salvar. - Defina a senha como
password123e confirme. - Clique em
OKe 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:
- Abra o LibreOffice Impress:
libreoffice --impress & - Adicione um título, por exemplo, "Presentation Title."
- Vá em
Arquivo->Salvar Como.... - Navegue até
/home/labex/project/. - Digite
secret.pptxcomo nome do arquivo. - Marque
Salvar com senha. - Clique em
Salvar. - Defina a senha como
password123e confirme. - Clique em
OKe 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.


