Hola, en este artículo queremos contar acerca de nuestra pequeña investigación sobre seguridad de contraseñas en TeamViewer. El método puede ayudar durante el tiempo pentest después de la explotación a tener acceso a otra máquina usando TeamViewer.
Hace unos días trabajé en mi Windows VPS de la nube con TeamViewer (donde establecí una contraseña personalizada). Después del trabajo desconecté, en la próxima vez cuando quise conectar, vi que TeamViewer había llenado automáticamente la contraseña.
(https://scontent.faep3-1.fna.fbcdn.net/v/t1.0-9/20597159_1923471997935692_6549232049207082678_n.png?oh=5f2f2b7b0caee3585a04f3f12ef1209b&oe=5A309DCB)
Creo que "Interesante, ¿cómo puedo tener acceso a la contraseña? ¿Cómo se guarda la contraseña en mi computadora? "
Ubicación de la contraseña
Dejé la memoria del TeamViewer y de la contraseña grepped.
(https://scontent.faep3-1.fna.fbcdn.net/v/t1.0-9/20620749_1923472111269014_3074474129546131401_n.png?oh=6afa0a6a7a2c5a6acefe9b89a82f6eaa&oe=5A36745B)
la contraseña de la memoria se almacena en formato Unicode. Resulta que si terminas de trabajar con TeamViewer y no matar el proceso (o salir de TeamViewer
(https://scontent.faep3-1.fna.fbcdn.net/v/t1.0-9/20525508_1923472221269003_2130263476126442205_n.png?oh=f45e5b7973ecf09d3fed8a162bd9d28c&oe=59F6BB0C)
La contraseña se almacenará en la memoria:
Después de analizar entendimos que el primer área roja es un comienzo de datos mágicos, en el segundo extremo mágico de datos (de vez en cuando, los datos mágicos finales tiene este valor = 00 00 00 20 00 00).
Script para obtener la contraseña:
Para extraer contraseñas de la memoria escribimos dos mini programas, en lenguaje Python y C ++.
Thx Frida equipo para una herramienta maravillosa! Nuestra secuencia de comandos python se adjunta al proceso TeamViewer.exe, obtiene la dirección base y el tamaño de memoria de cada biblioteca en este proceso. Después de eso, descarga una por una área de memoria, busca partes con [00 88] bytes al inicio y [00 00 00] bytes al final y las copia en la matriz. El siguiente y el último paso es elegir raws de decodificación final de acuerdo con la política regexp y contraseña.
(https://scontent.faep3-1.fna.fbcdn.net/v/t1.0-9/20476513_1923472421268983_939144020707577671_n.png?oh=a42aed9cb8ee2f8f37d7a66e3fd8cca2&oe=59F42E53)
Después de ejecutar el código C ++, obtendrá esta vista "asdQWE123" es la contraseña
(https://scontent.faep3-1.fna.fbcdn.net/v/t1.0-9/20479626_1923472527935639_861573163521955428_n.png?oh=37505e220b45343a7a76edcbaa4ecf89&oe=5A340013)
Para el futuro
Los programas pueden extraer ID remoto y contraseñas, pero también obtiene algunas fechas falsas positivas. Si tendremos tiempo libre, trataremos de reducir las tasas de falsos positivos.
Ejemplo:
(https://scontent.faep3-1.fna.fbcdn.net/v/t1.0-9/20597249_1923472611268964_1479125963499495427_n.png?oh=703fb8c87ac6b7c3aed4eed75c90fc9b&oe=5A039B08)
Ejemplo python:
(https://scontent.faep3-1.fna.fbcdn.net/v/t1.0-9/20526084_1923472797935612_525724387087647115_n.png?oh=48fa5586d970f0f119d55a7c8e0f732b&oe=59FDA331)
Fuente y codigos: https://github.com/vah13/extractTVpasswords
Excelente artículo, muy bien redactado y explicado, felicitaciones.
Enviado desde mi SM-A520F mediante Tapatalk
Gran aporte!! , a ponerlo en practica a ver que tal! ;)
Esto me hizo acordar a una mania que tengo de ponerle un presinto a mi memoria para que no puedan realizar un dump físico XD
Buen post