Probablemente todos los usuarios del navegador Google Chrome conozcan la famosa ventana que pregunta si queremos almacenar nuestra contraseña al iniciar sesión en alguna página web. En este artículo explicaremos el mecanismo que utiliza para almacenar y proteger aquellas contraseñas que aceptamos guardar y analizaremos algunos aspectos de la seguridad de estos.
Al hacer clic en el botón “aceptar” estamos permitiendo que Google Chrome guarde en el equipo tanto el usuario como la contraseña que fueron ingresados en el formulario de inicio de sesión de un sitio web.
El archivo que contiene la base de datos es utilizado únicamente por Google Chrome, por lo que se supone que ningún otro software benigno accederá al mismo.
Cabe destacar que por motivos básicos de seguridad las contraseñas no son almacenadas en texto plano; es decir, sin cifrar. Por el contrario, en los sistemas Windows, Google Chrome utiliza una función de cifrado provista por el sistema operativo: CryptProtectData (Crypt32.dll).
El mayor riesgo que presenta es que si un atacante tuviese acceso a la computadora podría obtener fácilmente las contraseñas, descifrarlas y robarlas en texto plano. Este tipo de comportamiento ha sido observado en múltiples códigos maliciosos e incluso en troyanos bancarios dirigidos específicamente a Latinoamérica, donde se pretende robar credenciales de acceso a sitios de banca en línea.
La dinámica de estos ataques es sencilla. De la misma forma en que anteriormente se obtuvo la estructura interna de las tablas también se puede conseguir el contenido de estas. A modo de ejemplo:
Comenzamos intentando iniciar sesión en Facebook con un usuario y contraseña ficticios. Cuando el navegador nos indique, hacemos clic en la opción para que Google Chrome guarde nuestras credenciales.
Una vez que nuestro nombre el usuario y contraseña fueron almacenados en la base de datos de Google Chrome, procedemos a buscar el archivo donde se guarda esta información.
Finalmente, basta con abrir el archivo con algún programa que permita visualizar bases de datos (en este ejemplo: DB Browser for SQL Lite).
Una vez abierto con DB Browser, al dirigirnos a la tabla “logins” podemos encontrar las entradas donde se encuentran los datos para el inicio de sesión, que incluyen: URL, usuario y contraseña. Como puede observarse en el recuadro rojo ubicado a la derecha en la Imagen 4, la contraseña almacenada está cifrada en una estructura BLOB y, al hacer clic en ese campo, el programa nos muestra la representación hexadecimal de la misma.
En este punto el atacante ya cuenta con el usuario, el sitio web y la contraseña cifrada, por lo que únicamente resta realizar el paso final: descifrarla. Para realizar esto se aprovecha del hecho de contar con acceso (físico o virtual) al equipo en cuestión, ya que es altamente probable que el usuario activo sea el mismo que guardó previamente la contraseña, permitiéndole al atacante descifrarla fácilmente utilizando la función: CryptUnprotectData (la función inversa a la mencionada previamente).
Todos estos pasos pueden ser realizados por un malware de forma rápida y automática. Sin embargo, el malware no es el único riesgo que debemos tener en cuenta, ya que actualmente existen múltiples programas de fácil acceso a través de una búsqueda online que son capaces de realizar estos mismos pasos.
Es importante remarcar que todos los riesgos mencionados se limitan únicamente a este mecanismo, es decir, al riesgo de que las contraseñas allí almacenadas sean robadas.
En Golsystems recomendamos no utilizar esta funcionalidad y, en caso de hacerlo, no utilizarla para guardar contraseñas de servicios importantes, como podría ser la banca en línea, redes sociales, portales médicos, o aquellos que contengan información personal.