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