Где хранятся пароли от приложений в андроиде. Хранение паролей в Android телефоне. Как это работает

Привет Хабр! Я молодой разработчик, специализирующийся на 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-права.

Следовательно, они должны либо хранить пароль в виде обычного текста, запрашивать его при каждой попытке подключения, либо шифровать его, и требовать от пользователя ввода другой фразы, чтобы разблокировать место хранения. Разница в том, что пользователи мобильных телефонов не привыкли регистрироваться на своих телефонах с именем пользователя и паролем, и даже если они это делают, они, как правило, оставляют свои телефоны 24 часа в сутки. Хранилище паролей, расшифрованное во время входа в систему, будет доступно для карманного устройства, даже если оно безопасно хранится, когда телефон отключен.

Реализация

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

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

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

Вывод

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

Надеюсь, эта статья была информативной. Спасибо за внимание!

Атака карманника обнаруживает еще одну проблему безопасности мобильных паролей: существует различие между мерами безопасности, которые защищают учетные данные пользователей на диске, когда телефон выключен, и меры, которые защищают учетные данные во время активного сеанса.

В конечном итоге появилось множество предложений, которые позволяют предлагать «уровни безопасности», выбираемые пользователем, благодаря которым пользователи, ориентированные на безопасность, могут обеспечить надежное шифрование своих учетных данных за счет автоматического доступа, и более неважное управление может обойтись без него.

Как вам наверняка должно быть известно, одной из вещей, которую стоковый веб-браузер Google умеет синхронизировать между всеми вашим устройствами – это данные (логин и пароль) для входа на различные сайты.

В то время, как во многих случаях эта опция может оказаться полезной и удобной, большинство из нес не хотели бы доверять компании Google пароли для входа в интернет-банкинг или торговые площадки, такие как eBay или Aliexpress. А что делать тем, кто случайно или автоматически нажал на «Сохранить пароль» при входе на один из таких сайтов?

Большинство фундаментальных криптологических методов и необходимых программных библиотек существуют для реализации такой услуги. То, что выглядит на первый взгляд огромным пробелом в безопасности, на самом деле не так уж плохо. Оба варианта требуют, чтобы вы либо внедрили вашу систему, либо активировали функцию отладки в системе. Оба не рекомендуются, если вы не совсем знакомы с последствиями.

Без корня путь к базе данных паролей недоступен и, таким образом, не обеспечивает поверхность атаки для атак извне. Конечно, желательно зашифровать пароли в базе данных. Об этой ошибке уже сообщалось и исправлено исправление. Мы также рекомендуем, чтобы вы продолжали укоренять свою систему, только если знаете, какие последствия это может иметь. Просто такие пробелы могут быть освобождены корневым доступом и оставить хакерам много места для обмана. Тем не менее, даже если пароли хранятся в нормальной, незатронутой системе, вы не получите данные без корня.

Не беда, в любой момент вы можете удалить сохраненные ранее в браузере Chrome для Android свои учетные данные для того или иного сайта.

Для этого вам нужно всего лишь перейти в меню настроек браузера и кликнуть по пункту «Сохранять пароли», после чего вы увидите следующее окно со списком сайтов, для которых вы ранее сохранили пароль входа, а также кнопкой включения и выключения этой опции для всех сайтов, которые бы будете посещать в дальнейшем:

Зачем мне вводить мой главный пароль?

Таким образом, безопасность предоставляется нормальным смертным. В качестве альтернативы. Это связано с тем, что требуется расшифровать ваши данные. Ваш главный пароль не сохраняется в приложении или на наших серверах, а это означает, что единственный способ получить доступ к вашим данным - это ввести ваш главный пароль. В главном меню нажмите Настройки, расположенные в нижней части страницы.

Об автоматических настройках блокировки и блокировки при выходе

Вы можете установить таймер в приложении для автоматического блокирования после определенного периода бездействия. Это очень полезно, особенно если ваш телефон украден и вы хотите удостовериться, что никто не может получить доступ к вашим данным. Вы можете выбрать время между 5 и 15 минутами. Вы также можете отключить это, выбрав «Никогда», но мы не рекомендуем эту конфигурацию, так как она не очень безопасна.

Кликнув по конкретному сайту, вы откроете окно следующего вида, на котором можно удалить ваши учетные данные:

Кстати, посмотреть или отредактировать пароли вы можете только в настольной версии браузера, в Chrome для Android эта опция недоступна.

Блокировать приложение при выходе

Если вы активировали эту функцию, приложение будет автоматически заблокировано при выходе из нее. Эти две функции можно найти в меню «Настройки» в разделе «Автоматическая блокировка». Как мы говорим, устройства, с которыми мы подключались, будут по-прежнему иметь доступ к Интернету, потому что у них есть ключ, хранящийся в системе, но если мы хотим подключить другой телефон или мы хотим передать код другу, мы столкнемся с проблемой.

Что мы можем сделать в этом случае? Однако для просмотра этих ключей у нас должны быть права суперпользователя. Когда мы делаем этот процесс, мы получим предупреждение от разработчиков, указывающее, что их приложение не является программным обеспечением для взлома паролей, но предназначено для отображения ключей, хранящихся в устройстве, для консультаций в любое время.

Кроме того, как вы уже, наверное заметили на скриншоте выше, в пункте меню «Сохранять пароли», вы также увидите и перечень сайтов, пароли для которых не сохраняются. Таким образом, если вы хотели бы включить эту опцию для одного из них, вам нужно выбрать его из списка и удалить в открывшемся окне.

Напомню, что хранить трудно запоминаемые пароли для доступа к конфиденциальным данным лучше всего в специальном приложении типа Android. Keeper , а еще лучше - пользоваться для этого генератором паролей

Как будто это история просмотров. Чтобы не выполнять этот процесс для повторного запроса ключа, мы рекомендуем сделать снимок экрана и сохранить файл в безопасном месте, чтобы вы могли легко проконсультироваться с ним, если вам это нужно. В некоторых приложениях или устройствах отображается неверная ошибка пароля, поскольку они не могут попросить вас ввести код безопасности при попытке входа в систему. Решением этой проблемы является создание паролей приложений для использования вместо обычного пароля, но только для этих приложений, которые не поддерживают двухэтапную аутентификацию.