Usar John the Ripper para Descifrar Documentos de Office (DOCX, XLSX, PPTX)

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, explorará el proceso de descifrado de documentos de Microsoft Office protegidos con contraseña (DOCX, XLSX, PPTX) utilizando la potente herramienta de descifrado de contraseñas, John the Ripper. Utilizaremos office2john.py para extraer el hash de la contraseña de los archivos de Office y luego alimentaremos este hash a John the Ripper para su descifrado. Este laboratorio demostrará los pasos involucrados en un escenario práctico, ayudándole a comprender las implicaciones de seguridad de las contraseñas débiles en los documentos de Office.

Crear un archivo DOCX protegido con contraseña

En este paso, creará un archivo DOCX simple y lo protegerá con una contraseña. Este archivo se utilizará posteriormente para extraer y descifrar su hash de contraseña.

Primero, instalemos libreoffice-writer para crear el archivo DOCX.

sudo apt install -y libreoffice-writer

Una vez instalado, abra LibreOffice Writer.

libreoffice --writer &

Se abrirá una nueva ventana de LibreOffice Writer.

  1. Escriba algún texto, por ejemplo, "Este es un documento de prueba".
  2. Vaya a Archivo -> Guardar como....
  3. En el cuadro de diálogo Guardar como, navegue hasta /home/labex/project/.
  4. Introduzca secret.docx como nombre de archivo.
  5. Marque la casilla Guardar con contraseña.
  6. Haga clic en Guardar.
  7. En el cuadro de diálogo Establecer contraseña, introduzca password123 como contraseña en ambos campos Introducir contraseña y Confirmar contraseña.
  8. Haga clic en Aceptar.
  9. Cierre LibreOffice Writer.

Verifique que el archivo secret.docx existe en su directorio ~/project.

ls -l ~/project/secret.docx

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

Extraer Hash de DOCX usando office2john

En este paso, utilizará el script office2john.py, que forma parte de la suite John the Ripper, para extraer el hash de la contraseña del archivo secret.docx que creó. Este hash es lo que John the Ripper intentará descifrar.

Primero, localice el script office2john.py. Normalmente se encuentra en el directorio /usr/share/john/.

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

/usr/share/john/office2john.py

Ahora, utilice office2john.py para extraer el hash de secret.docx y guárdelo en un archivo llamado hash.txt.

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

Muestre el contenido de hash.txt para ver el hash extraído.

cat ~/project/hash.txt

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

La salida mostrará una cadena larga que comienza con secret.docx:$office$..., que es el hash de su contraseña.

Descifrar Hash de DOCX con John the Ripper

Ahora que ha extraído el hash, utilizará John the Ripper para descifrarlo. Utilizaremos una lista de palabras simple para esta demostración, ya que nuestra contraseña es "password123", que es una palabra común.

John the Ripper viene con una lista de palabras predeterminada ubicada en /usr/share/john/password.lst. Usemos esta lista de palabras.

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

John the Ripper comenzará a procesar el hash. Si la contraseña está en la lista de palabras, la encontrará rápidamente.


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.

Después de descifrar, puede ver las contraseñas descifradas usando la opción --show.

john --show ~/project/hash.txt

secret.docx:password123

1 password hash cracked, 0 left

Esta salida confirma que John the Ripper descifró con éxito la contraseña de secret.docx como password123.

Repetir para Archivos XLSX y PPTX

En este paso, aplicará el mismo proceso a los archivos XLSX (Excel) y PPTX (PowerPoint) para demostrar que office2john.py y John the Ripper funcionan de manera similar en diferentes tipos de documentos de Office.

Primero, instale libreoffice-calc e libreoffice-impress.

sudo apt install -y libreoffice-calc libreoffice-impress

Crear un Archivo XLSX Protegido con Contraseña:

  1. Abra LibreOffice Calc:
    libreoffice --calc &
  2. Escriba algún texto, por ejemplo, "Spreadsheet data."
  3. Vaya a Archivo -> Guardar como....
  4. Navegue hasta /home/labex/project/.
  5. Introduzca secret.xlsx como nombre de archivo.
  6. Marque Guardar con contraseña.
  7. Haga clic en Guardar.
  8. Establezca la contraseña en password123 y confirme.
  9. Haga clic en Aceptar y cierre LibreOffice Calc.

Extraer Hash de XLSX:

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

Crear un Archivo PPTX Protegido con Contraseña:

  1. Abra LibreOffice Impress:
    libreoffice --impress &
  2. Añada un título, por ejemplo, "Presentation Title."
  3. Vaya a Archivo -> Guardar como....
  4. Navegue hasta /home/labex/project/.
  5. Introduzca secret.pptx como nombre de archivo.
  6. Marque Guardar con contraseña.
  7. Haga clic en Guardar.
  8. Establezca la contraseña en password123 y confirme.
  9. Haga clic en Aceptar y cierre LibreOffice Impress.

Extraer Hash de PPTX:

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

Descifrar Todos los Hashes:
Ahora, ejecute John the Ripper en el archivo hash.txt actualizado, que ahora contiene los hashes para DOCX, XLSX y 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 las contraseñas descifradas:

john --show ~/project/hash.txt

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

3 password hashes cracked, 0 left

Comprender el Cifrado de Documentos de Office

En este paso, discutiremos brevemente los mecanismos de cifrado utilizados por los documentos de Microsoft Office y por qué herramientas como John the Ripper son efectivas.

Los documentos modernos de Microsoft Office (DOCX, XLSX, PPTX) utilizan formatos basados en XML (Open XML). Cuando se establece una contraseña, el contenido del documento se cifra. El proceso de cifrado implica derivar una clave de cifrado de la contraseña del usuario utilizando una función de derivación de clave (KDF) como PBKDF2 (Password-Based Key Derivation Function 2).

office2john.py funciona extrayendo los parámetros necesarios de la estructura XML del documento de Office, como la sal (salt), el recuento de iteraciones (iteration count) y el hash del verificador cifrado (encrypted verifier hash). Estos parámetros, junto con el tipo de hash (por ejemplo, Office 2007/2010/2013/2016), forman la cadena de "hash" que John the Ripper entiende.

John the Ripper realiza entonces un ataque de fuerza bruta o de diccionario. Para cada palabra de su lista de palabras (o cada combinación en un ataque de fuerza bruta), aplica la misma KDF con los parámetros extraídos para generar una clave candidata. Si esta clave candidata coincide con el hash del verificador cifrado, se encuentra la contraseña.

La fortaleza del cifrado depende en gran medida de la complejidad y longitud de la contraseña. Las contraseñas débiles o comunes, como "password123", se descifran fácilmente utilizando ataques de diccionario, como se demostró en este laboratorio. Las contraseñas fuertes, que son largas, aleatorias y contienen una mezcla de caracteres, aumentan significativamente el tiempo y los recursos computacionales necesarios para el descifrado, haciéndolas mucho más seguras.

Este ejercicio resalta la importancia de usar contraseñas fuertes y únicas para documentos confidenciales para protegerlos del acceso no autorizado.

Resumen

En este laboratorio, aprendió con éxito cómo extraer hashes de contraseñas de documentos de Microsoft Office protegidos con contraseña (DOCX, XLSX, PPTX) utilizando office2john.py. Luego utilizó John the Ripper para descifrar estos hashes extraídos, demostrando la vulnerabilidad de los documentos protegidos con contraseñas débiles. Esta experiencia práctica proporcionó una visión del proceso de descifrado de contraseñas y reforzó la importancia de usar contraseñas fuertes y complejas para proteger sus activos digitales.