Pull to refresh

Хранение пользовательских паролей в Google Chrome на Android

Reading time2 min
Views39K
image

Привет Хабр! Я молодой разработчик, специализирующийся на Android-разработке и информационной безопасности. Не так давно я задался вопросом: каким образом Google Chrome хранит сохраненные пароли пользователей? Анализируя информацию из сети и файлы самого хрома (особенно информативной была эта статья), я обнаружил определенные сходства и отличия в реализации сохранения паролей на разных платформах, и для демонстрации написал приложения для извлечения паролей из Android версии браузера.

Как это работает?


Как мы можем знать из разных публикаций в сети на эту тему, Google Chrome на ПК хранит пароли своих пользователей в следующей директории:

«C:\Users\SomeUser\AppData\Local\Google\Chrome\User Data\Default\» в файле "Login Data".

Данный файл является базой данных SQLite, и его вполне можно открыть и посмотреть. В таблице logins мы можем видеть следующие, интересующие нас поля: origin_url (адрес сайта), username_value (логин), password_value(пароль). Пароль представлен байтовым массивом, и зашифрован через машинный ключ, индивидуальный для каждой системы. Подробнее можно узнать из этой статьи. Таким образом, какая-никакая защита в Windows клиенте присутствует.

Android


Но так как я больше увлекаюсь Android'ом, то мое внимание забрал на себя, соответственно, Android-клиент браузера.

«Расковыряв» пакет Google Chrome (com.android.chrome), я обнаружил, что его структура очень напоминает структуру ПК-клиента, и не составило труда найти точно такую же базу данных, отвечающую за хранение паролей пользователя. Полный путь к БД следующий: "/data/data/com.android.chrome/app_chrome/Default/Login Data". В целом, эта база данных очень похожа на свою «старшую сестру» из ПК-версии, имея лишь одно, но очень значительное отличие — пароли тут хранятся в открытом виде. Возникает вопрос: можно ли программно извлечь пароли из базы? Ответ оказался весьма очевидным — да, если у вашего приложения есть root-права.

Реализация


Для большей наглядности было решено сделать свой инструмент для извлечения паролей из базы данных браузера.

Если описать его работу в двух словах, то оно работает так:

  • Получает root.
  • Копирует базу данных Chrome в свою директорию.
  • С помощью chmod получает доступ к копии БД.
  • Открывает БД, и извлекает информацию о логинах и паролях.

Приложение было размещено в Google Play.

Проект на GitHub: ChromeOR.

Вывод


Как вывод из проделанной работы, можно сказать, что при наличии root-прав, вытащить базу паролей из браузера и отправить ее на свой сервер — задача вполне решаемая, и этот факт должен заставлять задуматься над тем, стоит ли доверять какому-либо приложению права суперпользователя.

Надеюсь, эта статья была информативной. Спасибо за внимание!
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+20
Comments26

Articles

Change theme settings