Extracción de contraseñas de TeamViewer de la memoria

Cuando Vahagn Vardanian aka vah_13 intentó volver a conectarse por Teamviewer a su VPS Windows en la nube, se dio cuenta de que la contraseña se había rellenado automáticamente:


Entonces pensó "Interesante, ¿cómo puedo acceder a la contraseña? ¿Cómo se almacena la contraseña en mi PC?" Así que volcó la memoria de TeamViewer y buscó (grep) la contraseña:


Como veis, la contraseña se almacena en la memoria en formato Unicode. Y resulta que si terminas de trabajar con TeamViewer y no matas el proceso (o sales de TeamViewer)



la contraseña se queda almacenada en la memoria!

Después de analizarlo, Vahagn entendió que la primera área señalada en rojo es el inicio del "magic data", y en la segunda el final (de vez en cuando el magic data final tienen este valor = 00 00 00 20 00 00).

Script para obtener la password

Para extraer las contraseñas de la memoria, escribieron dos mini programas, en Python y en C++.

El primer script TV_POC.py, contribución de Vladimir Egorov (@NotSoFunny), usa Frida para adjuntarse al proceso TeamViewer.exe, obtener la dirección base y el tamaño de memoria de cada biblioteca en ese proceso. Después, va volcando una por una cada área de memoria, busca partes con [00 88] bytes al inicio y [00 00 00] bytes al final y las copia en el array. El siguiente y el último paso es elegir y decodificar raws de acuerdo con la política de contraseña y las expresiones regulares.


Después de ejecutar el código C++, obtendremos la vista con la contraseña "asdQWE123":


Proyecto: https://github.com/vah13/extractTVpasswords

Comentarios