Skip to content

Crackear archivos Office y PDF protegidos con contraseña usando hashcat

Extrae el hash de un Word, Excel o PDF cifrado con office2john / pdf2john, y elige el modo hashcat correcto —de 9400 a 10700— para recuperar la contraseña.

Publicado el 4 min de lectura

Un .docx bloqueado con «Restringir edición» y un PDF que exige una contraseña antes de que Acrobat lo abra siquiera parecen dos problemas distintos. Por debajo, es el mismo problema: una clave de cifrado derivada de una contraseña mediante una función de derivación que hay que recalcular en cada intento. Extrae el hash correcto, elige el modo hashcat correcto, y ambos caen con el mismo flujo de diccionario y reglas que ya usas en todas partes.

Paso uno: sacar el hash del archivo

Ni hashcat ni John the Ripper leen directamente un .docx, un .xlsx o un .pdf. Primero hay que extraer los parámetros de cifrado con el script *2john correspondiente, incluido en la distribución jumbo de John the Ripper (en su carpeta run/):

python3 office2john.py protegido.docx > office.hash
python3 pdf2john.py protegido.pdf > pdf.hash

Ambos imprimen una línea nombre:hash. Quita el prefijo del nombre de archivo antes de pasarla a hashcat; John, en cambio, acepta la línea tal cual:

cut -d: -f2- office.hash > office_hashcat.txt

Elegir el modo de Office

Los hashes de Office se autodescriben: la cadena empieza por $office$*2007*, $office$*2010* o $office$*2013*, así que no hace falta adivinar:

Versión de OfficePrefijo del hashModo hashcatDerivación
2007$office$*2007*-m 9400SHA-1, 50.000 iteraciones
2010$office$*2010*-m 9500SHA-1, 100.000 iteraciones
2013 / 2016 / 2019 / 365$office$*2013*-m 9600SHA-512, 100.000 iteraciones
hashcat -m 9600 office_hashcat.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule

John detecta las tres versiones automáticamente bajo un solo formato:

john --format=office office.hash --wordlist=rockyou.txt

2013 es la versión para la que hay que reservar tiempo. Office pasó de SHA-1 a SHA-512 manteniendo las 100.000 iteraciones, lo que se traduce en unos pocos cientos de miles de intentos por segundo en una GPU potente —un terreno parecido al de bcrypt, muy lejos de los miles de millones por segundo del NTLM en bruto.

Elegir el modo de PDF

El cifrado de PDF evolucionó de forma distinta según la versión de Acrobat, y hashcat lo reparte en varios modos. Los dos extremos del rango están cubiertos en este sitio:

Revisión PDFModo hashcatNotas
1.1–1.3 (Acrobat 2–4)-m 10400RC4 de 40 o 128 bits, sin KDF por intento — rápido
1.4–1.6 (Acrobat 5–8)-m 10500RC4 o AES-128, una sola ronda de MD5
1.7 Level 3 (Acrobat 9)-m 10600AES-128, SHA-256
1.7 Level 8 (Acrobat 10–11)-m 10700AES-256, SHA-256 x 64 rondas — el lento

pdf2john.py anota la revisión dentro de la propia cadena $pdf$, así que lees el modo en el hash en lugar de adivinarlo a partir del archivo:

hashcat -m 10700 pdf_hashcat.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule

John, de nuevo, cubre toda la familia bajo un solo formato:

john --format=pdf pdf.hash --wordlist=rockyou.txt

Un PDF antiguo (10400) se crackea casi a la velocidad de un hash en bruto. Un PDF AES-256 moderno (10700) es lento a propósito, la misma decisión de diseño que sha512crypt o DCC2: el número de iteraciones existe precisamente para encarecer la fuerza bruta, así que una lista de contraseñas dirigida rinde mucho más aquí que un ataque por máscara a ciegas. Si no has leído cómo elegir diccionario y reglas, empieza por ahí antes de quemar horas con la lista equivocada.

La trampa del PDF: dos contraseñas, un solo archivo

Un PDF puede llevar una contraseña de usuario (necesaria para abrir el documento) y una contraseña de propietario (necesaria para cambiar permisos como imprimir o copiar), de forma independiente. Muchos PDF «protegidos» solo fijan una contraseña de propietario y dejan la de usuario vacía, lo que significa que el archivo se abre sin ningún aviso aunque pdf2john.py extraiga un hash tranquilamente y hashcat lo crackee sin problema. Antes de gastar tiempo de GPU, prueba simplemente a abrir el archivo con una contraseña vacía. Si se abre, lo que realmente necesitas «crackear» es quitar las restricciones de la contraseña de propietario, algo que la mayoría de herramientas para PDF hacen en cuanto les das la contraseña de usuario vacía, sin necesidad de crackear nada.

Cuándo no merece la pena el tiempo de GPU

Si identificar el hash te dice que es Office 2013 o PDF 10700 protegiendo un documento sin ninguna otra pista, trátalo como tratarías un sha512crypt robusto: una lista corta y dirigida gana a una lista genérica larga, y un ataque por máscara exhaustivo más allá de seis o siete caracteres no es realista en hardware doméstico. Resuelve primero la cuestión de la procedencia —consulta cómo encontrar el modo hashcat correcto si la cadena extraída no encaja claramente en ninguna de las tablas anteriores— y luego dedica tu tiempo al diccionario, no al espacio de claves.

Artículos relacionados

Comparación práctica de hashcat y John the Ripper: fortalezas en GPU y CPU, detección automática, modos -m, formatos jumbo, diccionarios y reglas, con comandos de ejemplo.
¿Tienes un hash misterioso? Aprende las señales que revelan su tipo —longitud, conjunto de caracteres y prefijos como $2y$ o $6$— e identifícalo de forma privada en tu navegador.
MD5 y SHA-1 caen en segundos ante una GPU porque son rápidos y a menudo sin sal. Descubre por qué los KDF lentos como bcrypt y Argon2 resisten, y qué deben hacer los defensores.