Archivo

Archivo para marzo, 2023

Rompiendo contraseñas de documentos de MS Word

sábado, 4 de marzo de 2023 Sin comentarios

Hace 15 años dejé protegidos con contraseña una serie de documentos de Microsoft Word (versión XP/2003) que impedían su apertura. Con el pasar del tiempo y la contínua renovación de contraseñas, en algún momento puntual, dejé de recordar qué contraseña usé para proteger dichos documentos.

Pensé que en la actualidad no sería difícil encontrar algún mecanismo para romper el sistema de contraseñas que usaba MS Office en 2003 (MD5 + RC4) y me puse manos a la obra en busca de algún programa que me facilitase la tarea. Había dos planteamientos:

  • Eliminando la solicitud de la contraseña.
  • Ataque por fuerza bruta para averiguar la contraseña.

En el primer caso encontré algún artículo en Internet que, mediante la edición del documento .doc con un editor hexadecimal, eliminando la zona en la que se albergaba la contraseña se deshabilitaba la solicitud de la misma, pero no encontraba los patrones con los cuales identificarla y, tras varios intentos, aquello se convirtió en un callejón sin salida. Al menos averigüe que Office 2003 sigue funcionando en Windows 10 y de forma bastante rápida.

El segundo caso me llevó algo más de tiempo porque el mercado está lleno de páginas webs milagrosas y programas en versión demo que sólo me sirvieron para saber que la contraseña tenía más de 6 caracteres y que por fuerza bruta, con un AMD 5900X de 12 núcleos, me llevaría al menos 36 horas. Pero luego descubrí que existía una combinación de software libre bastante más potente.

Primero necesitaríamos extraer el hash de la contraseña del fichero .doc. Este trabajo lo puede hacer un script que podremos descargar desde esta URL y luego utilizaremos el proyecto de HashCat para obtener nuestro objetivo.

Teniéndolo todo en un mismo directorio, los comandos a utilizar serían los siguientes:

python3 office2hashcat.py ficheroObjetivo.doc > hash.txt

./hashcat.bin -a 3 -m 9700 hash.txt

El primer comando extrae de forma inmediata el hash de la contraseña y lo almacena en un fichero de texto «hash.txt» y tendrá el siguiente aspecto:

$oldoffice$1*04477077758555626246182730342136*b1b72ff351e41a7c68f6b45c4e938bd6*0d95331895e99f73ef8b6fbc4a78ac1a

Con lo anterior y consultando la información de la wiki de HashCat sabremos que nuestro hash-mode será el 9700 (-m 9700). Además, como carecemos de diccionario de palabras o sospechamos que no sería de utilidad para encontrar la contraseña,  indicaremos que nuestro modo de ataque será por fuerza bruta (-a 3).

Como contamos con una RTX 3800, HashCat saca provecho de ello y la utiliza para empezar el ataque que nos informa que durará como máximo alrededor de 90 minutos, bastante menos que las 36 horas que nos daban algunos programas en su versión demo. Pero el asombro llega por partida doble cuando el programa termina con éxito al cabo de 15 minutos y nos provee de una contraseña que en mi vida hubiese utilizado. Esto último se debe a las posibles colisiones que existen cuando contamos con cifrados débiles, donde dos palabras diferentes pueden tener el mismo hash.

Finalmente, la contraseña obtenida nos permite abrir esos ficheros sin mayores problemas.

Conclusiones:

  • La cantidad de desinformación, de páginas web fachada y porquería inútil es cada vez mayor en Internet. Resulta dolorosamente penoso el uso de buscadores hoy en día.
  • La contraseña que crees que no vas a olvidar en tu vida no existe, el paso de los años hace estragos en la memoria.
  • Con un hardware comercial a la mano de mucha gente se pueden romper contraseñas en minutos, donde sólo la longitud de la misma y la dureza del cifrado ponen trabas.