Представим себе следующую ситуацию. Мы находим смартфон под управлением Android 4.1–4.4 (ну или CyanogenMod 10–11) и вместо того, чтобы вернуть его хозяину, решаем оставить себе и вытащить из него всю конфиденциальную информацию, которую только сможем. Все это мы попытаемся сделать без специализированных инструментов вроде различных систем для прямого снятия дампа с NAND-памяти или хардварных устройств для снятия S-ON и так, чтобы владелец не узнал о том, что мы делаем, и не смог удаленно отыскать или заблокировать устройство. Сразу оговорюсь, что все это вовсе не руководство к действию, а способ исследовать безопасность смартфонов и дать информацию тем, кто хочет уберечь свои данные.
Первоочередные действия
Итак, нам в руки попал чужой смартфон. Не важно, каким образом, важно, что он уже у нас. Первое, что мы должны сделать, — это как можно быстрее отвязать его от сотовой сети, то есть, следуя завету гопников, вынуть и выкинуть SIM-карту. Однако делать это я бы рекомендовал только в том случае, если SIM-карту удастся вынуть, не выключая смартфон, то есть либо осторожно приподняв батарею, либо через боковой слот, если это смартфон с несъемной батареей (Nexus 4/5, например). Во всех остальных случаях лучше ограничиться включением режима полета, так как вполне возможно, что в Android активирован режим шифрования пользовательских данных и после отключения смартфон будет заблокирован до ввода ключа шифрования.
Также ни в коем случае нельзя подключать смартфон к какой бы то ни было сети Wi-Fi, так как, возможно, установленное на нем ПО для отслеживания (а в Android 4.4.1 оно уже встроено) сразу начнет свою работу и можно нарваться на «случайную» встречу с владельцем и его друзьями (о полиции можно не беспокоиться, она такого пострадавшего пошлет). Фронтальную камеру я бы на всякий случай чем-нибудь заклеил, возможно, она делает снимки уже сейчас и они будут отправлены при первом удобном случае.
Экран блокировки
Теперь, когда мы обезопасили свою персону, можно начать раскопки. Первая задача которую нам предостоит решить это разблокировать экран телефона. В 95% случаев он не будет иметь защиты, однако об остальных пяти процентах мы забывать не можем.
Защищенный экран блокировки в Android может быть трех основных типов. Это четырехзначный пин-код, графический ключ или снимок лица. На разблокировку первых двух дается в общей сложности двадцать попыток, разделенных по пять штук с «минутой отдыха» между ними. На разблокировку по снимку лица есть несколько попыток, после которых смартфон переключается на пин-код. Во всех трех случаях после провала всех попыток смартфон блокируется и спрашивает пароль Google.
Наша задача — попытаться обойти экран блокировки так, чтобы не скатиться к паролю Google, подобрать который уже точно не удастся. Самый простой способ это сделать — используя подключение по USB и ADB:
$ adb shell rm /data/system/gesture.key
Либо так:
$ adb shell $ cd /data/data/com.android.providers.settings/databases $ sqlite3 settings.db > update system set value=0 where name='lock_pattern_autolock'; > update system set value=0 where name='lockscreen.lockedoutpermanently'; > .quit
Однако у этого метода есть две проблемы. Он требует прав root и не сработает в Android 4.3 и выше, так как для доступа к ADB нужно подтверждение со стороны устройства, что в условиях залоченного экрана сделать невозможно. Более того, доступ по ADB может быть отключен в настройках.
Мы можем спуститься на уровень ниже и для удаления файла с ключом блокировки использовать консоли восстановления. Для этого достаточно перезагрузиться в консоль восстановления (выключение + включение с зажатой клавишей увеличения громкости) и прошить следующий файл. Он содержит скрипт, который удалит /data/system/gesture.key
и снимет блокировку, не нарушая работу текущей прошивки.
[ad name=»Responbl»]
Проблема этого подхода — зависимость от кастомной консоли восстановления. Стоковая консоль просто не примет файл как подписанный неверной цифровой подписью. Кроме того, в случае, если активировано шифрование данных, во время следующей загрузки телефон будет заблокирован и его спасет только полное удаление всех данных, что идет вразрез с нашей задачей.
Еще более низкий уровень — это fastboot, то есть манипуляция устройством на уровне загрузчика. Красота этого метода в том, что разблокированный загрузчик позволяет делать с устройством что угодно, включая загрузку и установку кастомной консоли восстановления. Для этого достаточно выключить смартфон (опять же делаем скидку на шифрование данных) и включить его в режиме загрузчика с помощью кнопки питания + «громкость вниз». После этого к устройству можно будет подключиться с помощью fastboot-клиента:
$ fastboot devices
Теперь скачиваем «сырой» образ кастомной консоли восстановления (с расширением img) для «нашего» устройства и пытаемся его загрузить без установки:
$ fastboot boot cwm-recovery.img
Если загрузчик девайса разлочен, смартфон перезагрузится в консоль, через которую можно будет активировать режим ADB, залить с его помощью «обновление», ссылка на которое приведена выше, и прошить его. Далее достаточно будет перезагрузиться, чтобы получить полный доступ к смартфону. Кстати, если ты стал обладателем одного из Nexus-устройств, его загрузчик можно легко разблокировать вот так:
$ fastboot oem unlock
Но это просто информация к размышлению, так как операция разблокировки автоматически сбрасывает устройство до заводских настроек.
Теперь о том, что делать, если все эти способы не сработали. В этом случае можно попытаться найти баг в самом экране блокировки. Удивительно, но, несмотря на отсутствие таковых в чистом Android, они довольно часто находятся в экранах блокировок фирменных прошивок от производителя. Например, в Galaxy Note 2 и Galaxy S 3 на базе Android 4.1.2 когда-то была найдена смешная ошибка, которая позволяла на короткое время получить доступ к рабочему столу, просто нажав кнопку «Экстренный вызов», затем кнопку ICE (слева внизу в номеронабирателе) и, наконец, кнопку «Домой». После этого буквально на полсекунды появлялся рабочий стол, чего вполне хватало, чтобы убрать блокировку.
Еще более тупой баг был найден в Xperia Z: можно было набрать на экстренном номеронабирателе код для входа в инженерное меню (##7378423##), с помощью него попасть в меню NFC Diag Test и далее выйти на рабочий стол тем же нажатием кнопки «Домой». Мне очень трудно представить, как могли появиться такие дикие баги, но они есть.
Что касается обхода графического ключа, тут все довольно просто. Он может быть отключен таким же способом, как и пин-код, но здесь есть еще две дополнительные возможности. Во-первых, даже несмотря на внушительное количество возможных вариантов ключей, люди в силу своей психологии чаще всего выбирают ключ, похожий на одну из букв латинского алфавита, то есть те самые Z, U, G, цифра 7 и так далее, что сводит количество возможностей к парам десятков. Во-вторых, при вводе ключа палец оставляет на экране совсем не иллюзорный след, который, даже смазанный, довольно легко угадывается. Впрочем, последний минус может быть легко нивелирован защитной матовой пленкой, на которой следы просто не остаются.
[ad name=»Responbl»]
Ну и последнее, о чем хотелось бы сказать, — это так называемый фейсконтроль. Это самый топорный вариант блокировки, который, с одной стороны, очень легко обойти, просто показав смартфону фотку владельца, но с другой — довольно трудно, так как, не зная даже имени владельца, раздобыть его фотографию не представляется возможным. Хотя попробовать сфоткать самого себя, конечно, стоит, вполне возможно, что ты похож на предыдущего владельца.
Внутри
Допустим, что мы обошли экран блокировки. Теперь наши действия будут направлены на то, чтобы вытащить как можно больше информации со смартфона. Сразу оговорюсь, что пароль Google, сервисов вроде Facebook, Twitter и номера кредитных карт нам не достанутся. Ни тех, ни других на смартфоне просто нет; вместо паролей используются аутентификационные токены, которые дают доступ к сервису только с данного смартфона, а вторые хранятся на серверах соответствующих служб (Google Play, PayPal), а вместо них используются те же токены.
Более того, не удастся даже купить что-то в Google Play, так как его последние версии принудительно запрашивают пароль Google при каждой покупке. Эту функцию, кстати, можно отключить, но даже в этом случае смысл покупок будет потерян, так как весь контент будет привязан к чужому аккаунту.
С другой стороны, мы вполне можем если не угнать аккаунты полностью, то хотя бы почитать почту, Facebook и другую личную инфу пользователя, а там уже может оказаться что-то интересное. Особый профит в этом случае даст Gmail, который можно будет использовать для того, чтобы восстановить аккаунт к другим сервисам. А если пользователь при этом еще не успел сходить в салон связи, чтобы заблокировать SIM-карту, то можно будет подтвердить идентичность и с помощью номера телефона. Вот только заниматься этим стоит лишь после отключения всех защитных механизмов (мы же не хотим, чтобы нас отследили с помощью антивора).
Удаляем антивор
Все приложения для отслеживания смартфона под управлением Android можно разделить на три группы: «трэш», «игрушки» и «потянет». Первые отличаются тем, что написаны студентами техникумов за три часа и, по сути, представляют собой самые обычные приложения, умеющие снимать данные с датчика положения и отправлять их непонятно куда. Особая прелесть таких софтин в том, что их очень просто обнаружить и удалить. Фактически достаточно пройтись по списку установленного софта, вбить в поиск непонятные названия, выявить антиворы и удалить их. Именно это и нужно сделать на первом этапе.
Второй тип приложений — это уже что-то претендующее на серьезный инструмент, но на деле им не являющееся. Обычно такой софт умеет не только отсылать координаты на удаленный сервер, но и прятать себя, а также защищаться от удаления. Вторая функция обычно реализуется с помощью создания приложения в виде сервиса без графического интерфейса. В этом случае его иконка не будет видна в списке приложений, но само приложение, конечно же, будет висеть в фоне, что легко определить с помощью любого менеджера процессов.
Защита от удаления в подобном «софте» обычно реализована через прописывание себя в администраторы устройства, поэтому второе действие, которое нужно сделать, — это пойти в «Настройки -> Безопасность -> Администраторы устройства» и просто снять галочки со всех перечисленных там приложений. Система должна запросить пин-код или пароль, но если на экране блокировки его уже нет, то доступ будет открыт сразу. Смешно, но гугловский антивор, фактически встроенный в ОС, отключается точно таким же образом.
Наконец, третий тип приложений, — это антиворы, программированием которых занимались люди. Основное отличие подобных приложений в том, что кроме маскировки они также умеют прописывать себя в раздел /system
(если есть root), из-за чего удалить их стандартными средствами становится невозможно. Беда только в том, что в списке процессов они по-прежнему будут видны, а чтобы их отключить, достаточно перейти в «Настройки -> Приложения -> Все», затем ткнуть по нужному приложению и нажать кнопку «Отключить».
Вот и вся защита. В этом списке также должны быть и нормальные приложения, реализованные в виде модуля ядра или хотя бы нативного Linux-приложения, которое ни один стандартный менеджер процессов не покажет, но я почему-то таких еще не видел. С другой стороны, команды ps и lsmod все равно бы их выдали (если это только не правильный бэкдор), так что уровень скрытности повысился бы не сильно.
Root и дамп памяти
Следующий шаг — снятие дампа внутренней памяти. Мы не можем быть уверены, что в телефоне не осталось никаких закладок, особенно если это фирменная прошивка от HTC и Samsung, поэтому перед включением сети лучше сохранить все его данные на нашем жестком диске. Иначе они могут быть удалены в результате удаленного дампа.
Для этого в обязательном порядке нужны права root (если, конечно, телефон еще не рутован). Как их получить, тема отдельной статьи, тем более что для каждого смартфона свои инструкции. Проще всего найти их на тематическом форуме и выполнить, подключив смартфон к компу по USB. В некоторых случаях рутинг потребует перезагрузки, поэтому лучше сразу убедиться, не зашифрованы ли данные смартфона (Настройки -> Безопасность -> Шифрование), иначе после ребута мы потеряем к ним доступ.
Когда root будет получен, просто копируем файлы на жесткий диск с помощью ADB. Нас интересуют только разделы /data
и /sdcard
, поэтому делаем так (инструкции для Linux):
$ adb root
$ adb pull /data
$ mkdir sdcard && cd sdcard
$ adb pull /sdcard
Все файлы будут получены в текущий каталог. При этом следует учесть, что если в смартфоне нет слота для SD-карты, то содержимое виртуальной карты памяти будет находиться в разделе /data
и вторая команда просто не понадобится.
Что дальше делать с этими файлами, покажет только фантазия. В первую очередь следует обратить внимание на содержимое /data/data
, там хранятся все приватные настройки всех установленных приложений (в том числе системных). Форматы хранения этих данных могут быть совершенно различны, но общей практикой считается хранение в традиционных для Android базах данных SQLite3. Обычно они располагаются по примерно таким путям:
/data/data/com.examble.bla-bla/setting.db
Найти их все можно с помощью команды find в Linux, запущенной в первоначальном каталоге:
$ find . -name *.db
В них могут содержаться не только личные данные, но и пароли (встроенный браузер хранит их именно так, причем в открытом виде). Достаточно лишь скачать любой графический менеджер баз данных SQLite3 и вбить в его поле поиска строку password.
Исследование приложений
Теперь мы наконец можем отключить режим полета, чтобы смартфон смог связаться с сервисами гугла и другими сайтами. SIM-карты в нем уже не должно быть, а определение местоположения (в том числе по IP) можно отключить в «Настройки -> Местоположение». После этого отследить нас уже не получится.
[ad name=»Responbl»]
Что делать дальше? Пройтись по переписке в Gmail, отыскать пароли. Особо щепетильные люди даже создают специальную папочку для писем с паролями и конфиденциальной информацией. Также можно попробовать запросить смену пароля на сервисах с подтверждением с помощью email, но в случае Google, Facebook, PayPal и другими нормальными сервисами это сработает только при наличии номера телефона, для чего придется вернуть SIM-карту на место.
В общем и целом здесь все стандартно. У нас есть email, возможно, номер телефона, но нет паролей от сервисов. Всего этого должно быть достаточно для угона многих аккаунтов, но нужно это или нет — вопрос более серьезный. Тот же аккаунт PayPal или WebMoney восстановить чрезвычайно трудно даже самому владельцу, и полученной информации здесь явно будет недостаточно. Смысл угонять аккаунты от «Одноклассников» и других подобных сайтов очень сомнительный.
Еще один совет
Очистить раздел /system
от возможных закладок можно, просто переустановив прошивку. Причем использовать лучше неофициальную и прошивать через стандартную консоль восстановления. В этом случае антивор не сможет сделать бэкап самого себя с помощью функций кастомной консоли.
Выводы
Я ни в коем случае не призываю поступать так, как описано в этой статье. Приведенная в ней информация, наоборот, предназначена для людей, которые хотят защитить свои данные. И вот здесь они могут сделать для себя несколько очевидных выводов.
- Первый: для защиты информации на смартфоне достаточно всего трех простых механизмов, уже встроенных в смартфон: пароль на экране блокировки, шифрование данных и отключенный ADB. Активированные все вместе, они полностью отрежут все пути доступа к устройству.
- Второй: иметь на смартфоне антивор очень хорошая идея, но не стоит полагаться на него на 100%. Лучшее, что он может дать, — это возможность удалить данные, если попадется не особо умный вор.
- Ну и третье, самое очевидное: сразу после потери смартфона необходимо отозвать пароль Google, поменять пароли на всех сервисах и заблокировать SIM-карту.
1 comments On Как разблокировать экран телефона андроид если забыл пароль
Pingback: Как в 5 простых шагов повысить безопасность андроид телефона. - Cryptoworld ()