Recuperación de una contraseña maestra de un administrador de contraseñas bloqueadas de SafeInCloud

Después de leer este artículo, quería investigar otro administrador de contraseñas para detectar vulnerabilidades similares.

En comentarios al artículo, Dark_Angel hizo una pregunta:
¿Qué hay de SafeInCloud?


El estudio se realizó en la versión gratuita de Windows de SafeInCloud v.19.0.2

Cuando conocí el producto por primera vez, me causó una muy buena impresión.
Sin embargo, investigaciones posteriores revelaron exactamente la misma vulnerabilidad.

A diferencia de 1Password, SafeInCloud almacena todas sus contraseñas en texto claro incluso en un estado bloqueado (después del primer desbloqueo).

Para obtener la contraseña de la base de datos, solo lea la memoria de la aplicación. ¡La ofuscación de datos está completamente ausente! La contraseña maestra (y todas las demás contraseñas y entradas) nunca se sobrescribe después del primer desbloqueo exitoso de la base de datos, incluso si el usuario la bloquea.

Sus contraseñas pueden filtrarse en los siguientes casos:

+ Envío de un informe de error en cualquier software. Muy a menudo, los desarrolladores vuelcan la memoria de todas las aplicaciones con fines de depuración.
+ Si usa una computadora, no solo usted.
+ Al obtener acceso físico a la computadora de un atacante.
+ Al iniciar el malware.
+ Es posible que el contenido de la memoria se intercambie.
+ Cualquier otra cosa ...

La aplicación de Windows está escrita en .net, lo que simplifica enormemente el análisis del código fuente.



La aplicación está escrita en .net

Después del descifrado exitoso de la base de datos (XDatabase), la base de datos descifrada y la contraseña maestra se guardan como campos de clase en la instancia Singleton de la clase DatabaseModel.



Establecer campos con una base de datos y una contraseña maestra de ella

Todas las entradas y contraseñas se almacenan en la memoria de forma clara, incluso después de que el usuario bloquea la aplicación. La contraseña maestra se encuentra en el borrado junto a ella.



La contraseña se almacena en la propiedad Contraseña, _database es un campo de la clase XDatabase que contiene la base de datos descifrada.


Base de datos en formato XML.

Al volver a desbloquear la aplicación, se realiza una verificación elemental:



Si la contraseña ingresada por el usuario coincide con la almacenada en la memoria, se completa el desbloqueo.

Se escribió una sencilla utilidad SafeInCloudExtractor para automatizar la extracción de la contraseña maestra.
La utilidad extrae la contraseña maestra y la ruta local al archivo de la base de datos.

¿Qué administrador de contraseñas usas? Escribe en los comentarios!

ACTUALIZAR Después de informar un problema, el autor de SiC recibió críticas muy negativas (hasta insultos). Bajo presión de los usuarios, se lanzó una versión beta con "protección contra hackers". Es decir, con protección de la utilidad SafeInCloudExtractor. ¡Parece que el problema está resuelto! Las contraseñas se borran de la memoria. Sin embargo, esto no es así y aquí está la razón:
Una versión actualizada de SiC también almacena todas las contraseñas en la memoria. Para complicar el análisis del código, se aplicó un ofuscador + se agregó una verificación IsDebuggerPresent. Las contraseñas se almacenan en texto claro en la memoria y se almacenan. Parece que el autor no entiende contra qué defenderse. En lugar de solucionar el problema, PoC fue deshabilitado. Lo más probable es que el autor no tenga las calificaciones y el conocimiento necesarios para desarrollar software relacionado con la seguridad. ¡Sé vigilante!

Source: https://habr.com/ru/post/444904/


All Articles