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.
- Escriba algún texto, por ejemplo, "Este es un documento de prueba".
- Vaya a
Archivo->Guardar como.... - En el cuadro de diálogo
Guardar como, navegue hasta/home/labex/project/. - Introduzca
secret.docxcomo nombre de archivo. - Marque la casilla
Guardar con contraseña. - Haga clic en
Guardar. - En el cuadro de diálogo
Establecer contraseña, introduzcapassword123como contraseña en ambos camposIntroducir contraseñayConfirmar contraseña. - Haga clic en
Aceptar. - 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:
- Abra LibreOffice Calc:
libreoffice --calc & - Escriba algún texto, por ejemplo, "Spreadsheet data."
- Vaya a
Archivo->Guardar como.... - Navegue hasta
/home/labex/project/. - Introduzca
secret.xlsxcomo nombre de archivo. - Marque
Guardar con contraseña. - Haga clic en
Guardar. - Establezca la contraseña en
password123y confirme. - Haga clic en
Aceptary 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:
- Abra LibreOffice Impress:
libreoffice --impress & - Añada un título, por ejemplo, "Presentation Title."
- Vaya a
Archivo->Guardar como.... - Navegue hasta
/home/labex/project/. - Introduzca
secret.pptxcomo nombre de archivo. - Marque
Guardar con contraseña. - Haga clic en
Guardar. - Establezca la contraseña en
password123y confirme. - Haga clic en
Aceptary 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.


