Что такое Root-права на Android слышали многие, но далеко немногие получили их из опасения навредить своему устройству. Вероятно, отчасти они правы, ведь имея доступ к учетной записи главного администратора, вы автоматически получаете не только полный контроль над операционной системой с возможностью настройки вашего устройства в соответствии со своими предпочтениями, но и лазейку для непрошеных гостей.
- Преимущества Root
- Недостатки Root
- Виды Root прав
- Как получить Root права?
- Как проверить, что права root получены?
- В чем плюсы и минусы Root прав на Andrid.
- Почему нужно подключать смартфон или планшет для получения Root напрямую к компьютеру?
- Что такое root-доступ
- Что такое root-права
- Для чего используется root
- Чем опасны рут-права
- Стоит ли устанавливать root-права
- Как получить root-права на Android
- Как рутировать Android через ПК
- Программы для root-прав
- Как получить root-права без ПК
- Устройства с root-правами
- Как проверить успешность загрузки
- Как удалить root-права с Android
- Заключение
- Что такое root-права?
- Зачем нужны root-права?
- Кому НЕ нужны root-права
- Способы получения root
- Как получить root-права?
- Настройка Magisk или как пройти SafetyNet
- Опасности root-прав
- Выводы
- Мой набор Magisk-модулей
- Вступление
- Постановка задачи
- Что же плохого происходит когда загрузчик разблокируется?
- Как устроено хранилище
- Как устроено шифрование хранилища
Преимущества Root
В первую очередь, получение Root дает возможность удалять стандартные приложения, навязываемые производителями устройств, менять темы и ярлыки, а так же запускать специализированные приложения, существенно расширяющие возможности смартфона (обычно такие приложения требуют Root-прав). Кроме того, появляется возможность изменять системные файлы (Recovery image, Bootloader или изображения, выводимые при загрузке), запускать исполняемые файлы Linux, устанавливать приложения на карту памяти или переносить на нее кэш программ. В отдельных случаях после модификаций ОС, доступных только после получения Root-прав, возможно даже добиться небольшого, но все же увеличения производительности времени автономной работы.
Недостатки Root
Как и во всем другом, в получении Root доступа имеются свои недостатки. В первую очередь, устройство лишается гарантии и в случае «чего-то такого», при условии, что вы не сможете откатить свой «девайс» на официальную прошивку, ремонтировать его придется исключительно за свой счет.
Процедура рутования несложная — делая все в соответствии с описаниями можно добиться желаемого, но если у вас нет никакого опыта, потенциальный риск сохраняется — при неблагоприятном стечении обстоятельств устройство может превратиться в непригодный для использования «кирпич».
Еще один немаловажный недостаток — открытие Root-привилегий подразумевает вмешательство в системные файлы и влечет за собой потерю возможности обновляться «по воздуху» (устанавливать OTA обновления). Точнее, возможность обновляться может и не пропасть, но последствия обновления будут непредсказуемыми. Самое безобидное из них — потеря root-привилегий, но возможны и более фатальные варианты — вплоть до получения «кирпича».
Виды Root прав
Cуществует несколько видов Root прав:
Как получить Root права?
На форуме 4PDA описана масса универсальных способов и методов получения Root прав на устройствах под управлением Android. Большинство из них подразумевает использование специальных программ и компьютера. Среди таких программ хорошо известны Universal AndRoot, Unlock Root, z4root, Revolutionary и другие, обещающие получение желаемого в «два клика». К сожалению, не все из них способны на 100% помочь добиться желаемого, конкретно для вашего мобильного устройства. Более того, подобное программное обеспечение может определяться как вирусное, так как оно вносит изменения в ядро операционной системы Android. В данном случае антивирус отчасти прав — все эти программы являются вирусными эксплоитами, проникающими в ядро системы и при их скачивании или установке рекомендуется отключить защитное ПО.
Другой способ получения Root-прав заключается в установке на смартфон модифицированой прошивки. В этом случае всю работу за вас уже проделали специалисты, а вам только остается выбрать ту прошивку, которая подходит именно для вашего устройства. Кстати, там же вы найдете различные украшательства и дополнения для своей модели смартфона.
В телефонах с NAND lock сделать Root все же можно, но он будет неполнофункциональным (можно получить только Shell root или Temporary Root). Уточнить, имеет ли Ваш аппарат NAND lock, можно в ветке обсуждения Вашей модели в разделе Android — Устройства.
Как проверить, что права root получены?
Теперь вы знаете зачем в операционной системе Android нужно получать Root-права. Некоторые пользователи считают, что Root необходим, а другие и без него живут достаточно неплохо. Выполнять эту процедуру или нет – решать только вам, только не забывайте про гарантию и все будет хорошо.
Сейчас часто задают вопрос, зачем root права на Android? Попробуем разобраться, что они собой представляют и в чем их преимущества. Если говорить о рут правах для Android, то в принципе это то же, что для Apple джейл. Несмотря на то что Андроид и iOS являются самыми популярными мобильными системами на всем земном шаре, по своим особенностям и функциональности они кардинально различаются. В программном обеспечение от Apple, в отличие от продукта Google, уровень пользовательских возможностей сильно ограничен.
Вместе с тем при всех своих достоинствах Андроид тоже не дает полной свободы действий. Однако достичь этого все же можно, если получить Рут права (суперпользователя), но во время операции нужно быть предельно внимательными и заранее узнать, например, как получить root права на китайском планшете/смартфоне, чтобы не столкнуться с ошибками.
Если провести аналогию со всем известной Windows, то это по сути права администратора. Несмотря на то, что с такими правами вы получаете свободу действий, здесь имеются свои преимущества и недостатки (вплоть до потери устройства), и сейчас мы их рассмотрим.
В чем плюсы и минусы Root прав на Andrid.
Первым делом я расскажу о том, какие минусы присутствуют в получении прав суперпользователя, а потом перечислю основные плюсы.
Чтобы понять, зачем root права на Android и нужны ли они вам, следует для начала узнать обо всех преимуществах, которые они дают.
Почему нужно подключать смартфон или планшет для получения Root напрямую к компьютеру?
В конце хотелось бы уточнить, что при проведении различных экспериментов, должен использоваться исключительно родной USB-кабель. Причем подключать его необходимо напрямую в компьютер, минуя любые хабы. Причина в том, что китайским подделкам, независимо от их цены, исключая фирменную периферию, присущ один существенный недостаток — на самом ответственном этапе они просто глючат, будучи не в состоянии справиться с такой задачей.
Это совсем не новость, даже прошивку телефонов Siemens осуществляли лишь посредством родного USB, хотя найти его было не просто, да и цены на него были приличные. Если не придерживаться этого правила, то получая, к примеру, Recovery можно превратить аппарат в дорогостоящий «кирпич», хотя сам по себе он должен предотвращать такие случаи. Поэтому следует быть очень внимательным!
Теперь вы знаете зачем root права на Android и сами сможете решить нужны они вам или нет. Получив их, вы откроете для себя совершенно новые возможности, но следует заранее оценить все риски. Даже опытность и осторожность пользователя не даст гарантии, что все пройдет, как надо. И, несмотря на то, что возможность вернуть все назад, есть практически всегда, следует быть готовым тратить на это свои силы и время, а их может потребоваться немало.
Пользовательская система Android считается открытой по сравнению с другими. Рут позволяет получить почти безграничный доступ к приложениям и файлам системы. Из статьи вы узнаете, как взять полный контроль над своим устройством и нужно ли это на самом деле.
Что такое root-доступ
Часть системных файлов в Android защищены, и обычный пользователь не может их редактировать. Рут – это специальный аккаунт, называемый «суперпользователем», который предоставляет доступ и права ко всем функциям операционной системы. Получение разрешения к использованию всех функций системы называется рутированием.
Что такое root-права
Пользователь, имеющий полный доступ к файлам и действиям операционной системы, обладает рут-правами. Ему доступны действия, которые нельзя совершить в обычном режиме. Есть несколько вариантов получения root-прав, но для начала рассмотрим зачем нужен данный специальный аккаунт.
Для чего используется root
Рут-доступ позволяет менять любые настройки системы:
● Прежде всего это удаление основных приложений, которые нельзя стереть в обычном режиме.
● Работа с хакерскими утилитами, предназначенные для взлома приложений и сайтов.
● Любое изменение интерфейса: от стандартной раскладки до значками базовых приложений.
● Увеличение производительности телефона за счет изменения частоты работы процессора и видео ускорителя.
● Полное блокирование рекламы и уведомлений в браузерах и приложениях.
● Полное резервное копирование данных, включающее настройки и привязанные аккаунты.
● Более гибкое управление приложениями, установление разрешающих и запрещающих функций.
Чем опасны рут-права
Несмотря на большое количество преимуществ, полный доступ к операционной системе может быть опасным, в некоторых случаях даже фатальным:
● Пользователю могут отказать в гарантийном обслуживании устройства. Многие компании не ремонтируют девайс бесплатно, если обнаруживают на нем root. Прежде чем рутировать телефон, узнайте о политике производителя.
● Устройство может легко выйти из строя. С неограниченными возможностями доступа нужно уметь справляться. Пользователь может довести устройство до состояния «кирпича», при котором телефон постоянно перезагружается или не включается вообще.
● Высокая вероятность заражения вирусом. Программа становится уязвимой для вредоносных ПО, поэтому внимательно проверяйте файлы перед их скачиванием. Попадание вируса может не просто замедлить работу девайса, но и полностью стереть все данные.
● Многие программы не работают на устройстве с root-доступом. Такие как приложения банка, стриминговые сервисы и другие, где могут быть перехвачены личные данные. Есть специальные утилиты, маскирующие рут, но остается вероятность сбоя работы устройства.
● Неполадки с обновлением. Обновить операционную систему через настройки на телефоне теперь не получится. Придется найти другие способы, читай утилиты, чтобы ее обойти.
Стоит ли устанавливать root-права
В рутировании телефона есть плюсы и минусы. Обычному пользователю вполне хватает основных функций смартфона. Если же вас не испугали возможные последствия установки рут на свой девайс, а желание стать супеюзером велико – рассмотрим несколько способов, как можно это сделать.
Как получить root-права на Android
Есть три варианта для установки аккаунта суперпользователя:
Рассмотрим каждый метод отдельно.
Как рутировать Android через ПК
Для начала вам необходимо подключить устройство к вашему компьютеру. Удобнее всего это сделать через USB-кабель. Перед непосредственным рутированием телефона измените некоторые параметры в настройках. Вам необходимо разрешить установку приложений из неизвестных источников: сделать это можно в пункте «специальные возможности». Дальше выбираем утилиты для установки.
Программы для root-прав
При установке любой программы антивирус будет сообщать о надвигающейся угрозе. Не стоит обращать на это внимание: любой файл, требующий доступ к основным операционным данным, будет рассматриваться как взлом системы.
● Kingo Root. Один из самых популярных утилитов для рутирования смартфона и планшета. В базе более 10 000 различных моделей Android, включая самые последние 11 и 12. Помимо рут-сервиса в приложении есть другие дополнительные функции. Доступна версия на русском языке.
● Unlock Root. Утилит подходит для более старых версий Android от 2.1 до 4.0.3. Среди «старичков» программного обеспечения пользуется широким спросом. Интерфейс не выглядит современно, но достаточно прост для понимания.
Как получить root-права без ПК
Рутировать телефон можно и без помощи компьютера. Функция активируется сразу на смартфоне через одно из установленных приложений. Вот лишь некоторые из них:
● Framaroot. Программа может быть установлена сразу за несколько устройств, объединенных одним аккаунтом. Вместе с ней загружается дополнение SuperSu, отвечающее за работу рут-системы. Если вы захотите стереть программу с телефона, это можно сделать прямо в ней, выбрав функцию
● Baidu root. Утилит работает с операционной системой Android2 и выше. Приложение не полностью переведена на русский язык, но интерфейс прост для понимания. Российские программисты отметили, что не все телефона марки Samsung совместимы с этим сервисом.
● Root Genius. Программа ежегодно обновляется, но последняя версия пока доступна только на китайском языке. Разработчик предупреждает о разном времени рутирования в зависимости от марки и модели девайса.
Устройства с root-правами
Основным поставщиком девайсов с уже имеющимися рут является Китай. Сегодня основные силы разработчиков направлены на создание программ для рутирования. Но на рынке все еще можно найти root smartphone марок UMI со встроенным Super Su, легко управляемым в настройках; Elephone, чья новая модель почти точная копия Galaxy S7 от южнокорейского бренда Samsung; Doogee — бюджетная модель с измененной версией Android. Производство таких смартфонов уменьшается, также некоторые компании перестали открыто говорить о выпуске подобных линеек гаджетов.
Как проверить успешность загрузки
Убедиться в правильной работе приложения можно несколькими способами:
Как удалить root-права с Android
Некоторые пользователи после использования рут-доступа решают вернуться к стандартному аккаунту. Чаще всего это происходит, когда ненужные приложения удалены, или необходимо отремонтировать телефон на гарантии. Удалить программу можно через:
● Мобильное приложения. Необходимо установить SuperSu или его аналог и в настройках выбрать функцию После завершения перезагрузите устройство.
● Утилит для ПК. Метод считается более трудоемким из-за работы в нескольких программах. Дело для специалиста.
Заключение
Перед установкой рут-прав на устройство тщательно
подумайте о возможных негативных последствиях. Предварительно изучите
информацию на форумах, официальных сайтах, или проконсультируетесь у
IT-мастера.
Доброго времени суток всем моим читателям! Сегодня, продолжая цикл статей о кастомизации своего устройства, расскажу о том что такое права «root», зачем они нужны, кому они абсолютно точно не нужны и, если вы все-таки решили, как их получить.
Что такое root-права?
Сразу оговорюсь — я не буду вдаваться в технические детали реализации самого процесса рутирования телефона, поскольку недостаточно компетентен в этом, да и статья не про это.
Простыми словами — это права суперпользователя, которые вы можете делегировать одним приложениям и отказывать в доступе к ним другим. С этими правами приложения могут использовать команду su и обходить стандартные ограничения Android, получать доступ к системным файлам и папкам, внедряться в память других процессов и так далее.
Зачастую, в схеме root имеются 2 части — сервер, который выполняет основную программную работу и клиент, который необходим для взаимодействия пользователя с первым, позволяя гибко настраивать систему выдачи этих самых прав.
Подробнее вы можете почитать на сайтах, как ни странно, компаний, разрабатывающих антивирусные решения, вроде Eset или Kaspersky, поскольку данный вопрос непосредственно связан с безопасностью системы Android.
Зачем нужны root-права?
Честно говоря, когда мне задают вопрос, зачем я получал root-права на своем девайсе, я иногда впадаю в ступор, поскольку использую какое-то специфичное ПО, требующее таких разрешений достаточно редко и точечно.
Как хорошие примеры могу привести эффективное использование программ-firewalls, которые с помощью расширенных прав могут более гибко и эффективно контролировать траффик. Также, программы предназначенные для очистки «мусорных» файлов работают гораздо эффективнее, как и разнообразные файловые менеджеры, которые могут позволить вам редактировать системные файлы. Программы для резервного копирования приложений могут сохранять все данные приложения.
Отдельно хотелось бы упомянуть Xposed Framework — специализированное ПО в виде фреймворка, позволяющее одним приложениям изменять поведение системных функций Android в других приложениях и получать более полный доступ к их ресурсам. Например, именно на этом принципе основан Xposed-модуль для перевода текста на любой язык прямо в целевом приложении.
Кому НЕ нужны root-права
Именно так. Если вы сидите на данном ресурсе и дочитали до этого момента, полагаю, вы настроены решительно и будет проще перечислить все ПРОТИВ, нежели все ЗА. Преимуществ у расширенных прав действительно много, но это силой надо уметь управлять. Таким образом, список пользователей, которым я бы не рекомендовал получать root, можно сформулировать примерно так:
Способы получения root
Раньше, когда деревья были высокими а слоны мохнатыми, во времена Android ~4, существовали специальные утилиты как на само устройство так и на ПК, с помощью которых можно было получить root.
Если выражаться точнее, эти утилиты взламывали систему одним из множества способов и снисходительно делились с вами кусочком этого доступа.
Большая часть таких утилит была на китайском языке и тыкаться приходилось буквально вслепую. Вот самые яркие представители этого класса:
Преимущества такого способа получения очевидны — простота получения и относительно высокий шанс успеха. Однако такие недостатки как шпионаж, фоновая установка ПО и в целом непрозрачность схемы, как по мне, перекрывают это преимущество с лихвой. Тем более, что на последних версиях Android вероятность успеха получения прав с помощью этих утилит всё ниже. Не рекомендую данный способ к применению.
В определенный момент, как альтернатива этим утилитам, на арену рутирования выходит OpenSource-проект Magisk разработанный, несомненно, талантливым, программистом, под ником topjohnwu.
Главная особенность данного метода — возможность «внесистемного» внесения изменений с помощью подключаемых модулей. Это означает, что с выключением Magisk-модуля, отменялись изменения в системе, которые вносил этот модуль.
Работает это, на самом деле, проще чем можно подумать. В корне файловой системы создается «зеркало» раздела data (так и называется — data_mirror) и необходимые изменения вносятся в систему посредством создания символических ссылок на этот раздел.
Также, старые версии Magisk «из коробки» способны скрыть факт наличия root-прав от программ, которые не любят их (банковские приложения, например). Новые версии требуют установки дополнительных модулей.
Как получить root-права?
Мы, наконец, переходим от скучных лекций к решительным действиям.
Для получения таких прав, вы можете воспользоваться одной из перечисленных выше утилит, но только в том случае, если у вас есть возможность восстановить систему и нет возможности установить Magisk. В целом, я всё равно не рекомендую такие утилиты к применению.
Более подробно мы будем рассматривать установку Magisk на примере самой последней версии (25.2).
Предполагается, что вы уже разблокировали загрузчик и установили сторонний recovery. Устанавливать стороннюю прошивку необязательно, это не должно вызвать проблем.
Первым делом нам необходимо, как обычно, сделать полный бекап разделов системы на внешний носитель, вроде sd-карты, чтобы если что-то пойдет не так, вернуть как было.
Следующим шагом будет скачивание установочного файла Magisk (исключительно из официального репозитория!). Если ваш recovery позволяет устанавливать APK как zip-архивы, как, например, OrangeFox, то скачанный файл в исходном виде копируем на внешнюю память устройства, поскольку внутренняя зачастую шифруется и вы просто не найдете этот файл из recovery. В случае, если у вас другой recovery, файл Magisk.apk необходимо переименовать в Magisk.zip и таким же образом скопировать на устройство.
Далее необходимо загрузиться в recovery и сделать отдельно резервную копию раздела boot.img. Далее поясню, зачем.
В Magisk имеется возможность полного удаления root с помощью переименования файла установки в uninstall.zip и прошивки в recovery, НО, он не работает на системах с включенным шифрованием data.
Если вдруг какой-то модуль выведет систему из строя и у вас не будет возможности загрузиться в систему, будет очень проблемно этот самый модуль отключить или отключить весь Magisk.
Имея на руках boot исходной системы (без Magisk) мы сможем восстановить конкретно этот раздел и, в большинстве случаев, работоспособность системы.
После того, как бекапы сделаны, люки задраены, просто прошиваем установочный файл Magisk как любой другой архив через recovery. Всё.
В общем и целом, ничего сложного в самом процессе установки нет, после прошивки и загрузки системы, в меню приложений появится приложение «Magisk», которое при первом запуске обновится и будет работать. Самое важно и интересное кроется в настройке.
Настройка Magisk или как пройти SafetyNet
В новых версиях (24+) Magisk на смену Magisk Hide пришел новый метод сокрытия root — Zygisk. Его название состоит из слов Zygote — материнского низкоуровнего процесса Android, с помощью которого происходит работа Magisk и собственно названия приложения.
По умолчанию этот режим отключен в настройках Magisk, но я рекомендую включить его при первой же возможности.
Сразу после этого необходимо установить два модуля из Github-репозиториев — Universal SafetyNet Fix и Shamico. Первый нужен для прохождения CTS-аттестации (сертификация устройства SafetyNet), а второй для корректной работы функции скрытия root и DenyList magisk. Установка модулей интуитивно понятна и не должна вызвать вопросов.
Не уходя далеко после установки модулей переходим в раздел «Настройка DenyList», не активируя пункт «Активировать DenyList».
В этом меню мы увидим список установленных приложений. Скрытие root по умолчанию применено к сервисам Google, отдельно включать не надо! В большинстве случаев достаточно проставить галочки рядом с приложениями, от которых вы хотите скрыть рут, но бывают случаи, когда это не работает (например, некоторые банковские приложения). Тогда я советую нажать на плашку с названием приложения. Откроется весь список компонентов, от которых скрывается рут и проставить переключатель возле каждого из них. Приложений, которые обходили бы этот метод я еще не видел.
Для закрепления рекомендую использовать функцию «Скрыть приложение Magisk», поскольку его наличие можно вычислить элементарно по списку установленных приложений (так, например, работает MirPay). MagiskManager пересоберется со случайным именем пакета и предложит себя установить.
Если есть возможность, можно ограничить конкретным приложениям доступ к списку приложений с помощью Xposed-модулей вроде Thanox или XPrivacy Lua и тогда скрывать Magisk Manager не обязательно.
После проделанных действий необходимо как можно скорее перезагрузить телефон. Загрузка может быть слегка дольше, чем обычно.
Без должной настройки сервисы Google вскоре заметят чужака в системе и забракуют устройство по CTS.
Скрытие root для приложения необходимо делать до первого запуска целевого приложения! Мне попадались довольно злопамятные программы, которые раз увидев root, сохраняли мой id на сервере, приходилось либо перешивать устройство, либо подсовывать им фейковый Android ID.
Опасности root-прав
Не буду утверждать, что root-права это безопасно — любой необкатанный magisk модуль может привести систему в нерабочее состояние, при неумелом редактировании системных файлов система также придет в негодность, а функционал программ, запрашивающих root не всегда прозрачен. Не давайте root права приложениям, которым, по вашему мнению, они не нужны! Периодически такие права запрашивают Яндекс Карты, статистики ради или для чего-то еще — неизвестно, но проверять не хочется.
Говорить о том, что наличие root как-то сильно ослабляет защиту системы тоже не буду — доступ вполне себе контролируемый, и если вы будете соблюдать элементарную цифровую гигену, никаких проблем не будет.
Самое опасное, наверное — потеря гарантии производителя, что логично.
Выводы
Root-права — мощный инструмент, который дает широкий доступ к системе, но как и любой инструмент, им нужно уметь пользоваться, а в неумелых руках он принесет больше вреда, чем пользы.
Мой набор Magisk-модулей
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Получали ли вы Root на своем устройстве?
Нет и не планирую
Нет, но хочу попробовать
Да, но сейчас не имею
Да, пользуюсь root-правами
Проголосовали 127 пользователей.
Воздержались 9 пользователей.
Если вы являетесь регулярным читателем Хабра, то должно быть заметили что за последние несколько лет вышло немало статей о сборе персональных данных с мобильных устройств, и о попытках противодействия этому, было несколько отличных статей с детальными инструкциями по превращению своего смартфона на базе ОС Android в настоящую цитадель приватности и безопасности.
Часто для этого рекомендуется получение прав суперпользователя в системе (root-права), удаление системных приложений от Google и от производителя устройства, или даже полная замена стандартной ОС на альтернативные сборки, чаще всего LineageOS (бывший CyanogenMod). При этом первым шагом в этом процессе всегда будет так называемая «разблокировка загрузчика». Во время её выполнения устройство несколько раз покажет нам страшные предупреждения о том, что теперь оно станет более уязвимо для злоумышленников, но мы смело нажимаем «подтвердить» и шьём root или самую свежую сборку кастомной прошивки, не задумываясь о том какие проблемы создаёт нам незаблокированный загрузчик.
Я хочу рассказать вам как погоня за приватностью и безопасностью может привести к бóльшим проблемам чем использование стоковых устройств, как при физическом доступе к устройству можно установить в android бэкдор который может пережить сброс до заводских настроек, как можно вытащить данные из зашифрованного устройства не зная пин-код, не входя в систему и без запущенного режима отладки в меню разработчика.
Вступление
Сразу в начале оговорюсь, что все упомянутые опасности будут касаться наших устройств только если у злоумышленника есть физический доступ к девайсу. Поэтому можно просуммировать необходимые начальные условия:
Если задуматься, то ситуация с физическим доступом к смартфону не такая уж и невероятная. Например, последние годы набирает тенденция проверки мобильных устройств пограничниками при въезде в страну. Количество подобных проверок увеличивается в разы с каждым годом и вскоре может стать повсеместно распространённой практикой. С одной стороны это вопиющий произвол, нарушение законов и вторжение в частную жизнь, с другой стороны, законы большинства стран в этом моменте очень скользкие, плюс, например, на границе вы ещё не попали на территорию страны, поэтому и законы защищающие вашу частную жизнь ещё могут не действовать. В общем, «отжать мобилу» у вас смогут в подавляющем большинстве случаев. В журнале Хакер есть отличная статья обозревающая эту проблему. Если по каким-либо причинам вас задержит полиция, то все ваши электронные устройства также будут изъяты и, как и на границе, могут быть незаметно для вас пробэкдорены.
Постановка задачи
Итак, представим ситуацию, мы – злоумышленник, получивший на некоторое время в свои руки смартфон. Устройство – смартфон на базе android с разблокированным загрузчиком. Устройство имеет встроенное шифрование хранилища, его тип – аппаратный, т.е. ключи хранятся в TEE. Устройство заблокировано, для разблокировки необходимо ввести пин-код. Причём устройство находится в BFU (before-first-unlock) состоянии, это значит, что после включения устройства код разблокировки не вводился ни разу и файловая система зашифрована. На устройстве не включен режим отладки и подключиться по adb к нему невозможно. В нём содержатся данные, которые нам необходимо изъять. Устройство нужно будет вернуть владельцу, неповреждённое, в рабочем состоянии, причём владельцу не должно бросаться в глаза что его устройство было скомпрометировано.
Звучит как невыполнимая задача, и так бы оно и было, если бы нам любезно не открыл дверь сам владелец. Современные смартфоны очень хороши с точки зрения безопасности. Возможная поверхность атаки у них крайне мала. В последних версиях ОС android сделано очень многое для защиты данных пользователей. Защита системы выстроена в несколько уровней. Данные шифруются, подписи проверяются, ключи хранятся аппаратно. Везде используется подход «least privilege» – запрещено всё что не разрешено. Приложения работают в рамках серьёзных ограничений. Можно смело утверждать, что современные смартфоны являются одними из лучших примеров безопасных устройств, которые создавал человек.
Если пользователь не совершает явно странные действия вроде скачивания странных apk со странных ресурсов и не выдаёт им явно руками привилегий администратора устройства, то навредить пользователю или украсть его данные довольно затруднительно. И даже эти проблемы являются скорее не дырами в безопасности системы, а следствием свободы, которую android предоставляет пользователям, однако не все распоряжаются ей правильно. Прошли времена, когда безопасность android была поводом для шуток. На сайте известного брокера эксплоитов, компании Zerodium, FCP — full-chain with persistence или полная цепочка удалённой эксплуатации устройства с закреплением в системе в настоящий момент является самым дорогим эксплоитом, за который компания готова выложить до двух с половиной миллионов долларов.
Разблокированный загрузчик роняет уровень сложности этой задачи от невозможного до тривиального. Почему-то тема опасности открытых загрузчиков поднимается довольно редко, и, мне кажется, её значимость здорово недооценена, поэтому давайте разбираться.
Код с примером будет приведён довольно упрощённый и не в самом изощрённом варианте, но рабочий и явно демонстрирующий то, как именно это работает.
Все действия я проводил на устройствах на OnePlus 5T (он же dumpling по принятой в android device tree классификации) на стоковой OxygenOS и LineageOS с версиями соответствующими android 9 и 10, и XiaomiMI6 (он же sagit). Из-за этого некоторые нюансы структуры разделов, и выводы некоторых команд у вас могут отличаться, но общая суть происходящего не изменится.
Я буду часто ссылаться на ресурс source.android.com. Это примерно тоже самое что и developer.android.com но не для разработчиков приложений, а для разработчиков устройств. Там хорошо описана работа ОС, системных компонентов, и т.д. Очень рекомендую, вряд ли где-то можно найти более структурированную информацию по устройству системы.
Что же плохого происходит когда загрузчик разблокируется?
Загрузка системы начинается с загрузчика. Загрузчик – это небольшой бинарный компонент, который запускается непосредственно чипсетом и отвечает за загрузку и запуск ядра. Если в настольных дистрибутивах linux мы привыкли в основном к загрузчику grub, то на android смартфонах у нас загрузчиком является aboot. Процесс загрузки происходит следующим образом:
Таблица хэшей dm-verity
Весь этот процесс называется boot flow и отлично проиллюстрирован здесь:
У загрузки с avb может быть 4 конечных состояния, условно обозначаемых цветами:
Задача механизмов avb и dm-verity убедиться в том, что загружаемые ядро и система не были изменены и дошли до устройства пользователя в таком виде в каком их выпустил производитель устройства. Если пользователь решил установить root-права или альтернативную сборку ОС, то он неминуемо нарушит хэши партиций и чтобы система могла продолжить работу а не уходила сразу в «красное состояние» в котором откажется загружаться, ему придётся разблокировать загрузчик и с точки зрения avb перевести устройство в «оранжевое состояние» где android будет закрывать глаза на модификации системы. Этим пользуются и инструменты для получения root, и сторонние сборки, этим могут воспользоваться и злоумышленники, этим воспользуемся и мы.
Логическим следствием перехода в «оранжевое состояние» и отключения avb является возможность загружать образы с ядром не подписанные производителем устройства. Среди любителей модифицировать android самым популярным проектом такого рода является «Team Win Recovery Project» или просто TWRP. TWRP позволяет делать с устройством практически всё, в частности монтировать и модифицировать любые разделы не загружаясь в саму систему непосредственно. Именно эта возможность нам будет нужна для нашей задачи, но для начала надо разобраться с тем, как именно данные пользователя хранятся на устройстве.
Как устроено хранилище
Если мы посмотрим на структуру разделов на хранилище смартфона, то увидим что их на устройстве довольно много.
Большинство из них небольшие, и содержат, например, логотип производителя девайса, который отображается сразу после подачи питания на плату устройства. Есть раздел содержащий прошивку, работающую на baseband процессоре и отвечающую за мобильную связь, звонки и интернет по стандартам 2G, 3G, LTE и т.д. Есть разделы содержащие BLOBы необходимые для работы с некоторыми устройствами. Нас будет интересовать всего несколько разделов, содержание которых монтируется в файловую систему и напрямую используется во время работы ОС:
Данные приложений, «internal storage», находятся по пути /data/data. В этой директории сложены директории-песочницы отдельных приложений, соответствующие их полным именам пакетов. Например:
drwx—— 8 u0_a69 u0_a69 4096 2021-01-29 13:31 com.google.android.youtube
Общее хранилище, «external storage», находится по пути /data/media/0, внешние SD-карты соответственно будут называться /data/media/1. Во время работы оно линкуется в /storage.
Как устроено шифрование хранилища
Для начала разберёмся как устроено шифрование хранилища, потому что это самое труднопреодолимое препятствие для изъятия данных. Шифрование применяется на уровне файловой системы. Существует два основных подхода к организации шифрования:
До первого ввода кода разблокировки данные пользователя всегда зашифрованы, после первого ввода – всегда расшифрованы. Даже когда пользователь в дальнейшем нажимает кнопку питания или система сама уходит в сон, то данные, с точки зрения ОС, больше не переходят в зашифрованное состояние, теперь их защищает только экран блокировки. В android пока не предусмотрен механизм очищения ключей для расшифровки файловой системы из памяти после определённого периода неактивности.
Это значит, что если после того, как устройство было разблокировано хотя бы однажды подключиться к нему, например по adb, то пользовательские данные будут доступны и можно получить к ним доступ даже если экран заблокирован.
Вот так выглядит общее хранилище до первого ввода кода разблокировки:
# ls -la /data/media/0/
total 100
drwxrwx— 13 media_rw media_rw 4096 2021-01-29 10:45 .
drwxrwx— 4 media_rw media_rw 4096 2021-01-29 10:43 ..
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 3aIg6706qnt+JRerXQc,9B
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 5RxSnwRfzXH5JsgykyuneB
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 9QCg2626EAEHNRc,IpjzjC
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 XLrhnulSzxYVPwgkHhs8YC
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:45 ZC6kM5uXi6,coHL+OYgLCB
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 kJJ0DN8Tmhcs7hicwcEZ3A
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 mPaCm6PJHF9,MyimVTRozC
drwxrwxr-x 3 media_rw media_rw 4096 2021-01-29 10:43 qIkgta78EOvsfnjupFXQ+C
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 uAP,C13tjXpxdP8PWVeMRD
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 v33cOjp,wu+hlgBIWnQdjB
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 xxjD9tk7bDh9XZUzoDwMbB
А вот так после:
# ls -la /data/media/0/
total 100
drwxrwx— 13 media_rw media_rw 4096 2021-01-29 10:45 .
drwxrwx— 4 media_rw media_rw 4096 2021-01-29 10:43 ..
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 Alarms
drwxrwxr-x 3 media_rw media_rw 4096 2021-01-29 10:43 Android
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 DCIM
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 Download
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 Movies
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 Music
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 Notifications
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 Pictures
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 Podcasts
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:43 Ringtones
drwxrwxr-x 2 media_rw media_rw 4096 2021-01-29 10:45 bluetooth
На самом деле, шифрование хранилища – самая трудно преодолимая часть нашей задачи по извлечению данных. Обойти шифрование с ключами в аппаратном ТЕЕ никак не представляется возможным, но зато из этой информации следует несколько полезных выводов, а наша задача начинает формироваться в конкретные технические требования.
Это подводит нас к мысли о том, что можно воспользоваться возможностью модифицировать никогда не шифруемую часть системы, внедрить в неё агента, который никак не затронет и не испортит зашифрованные данные, а в последствие даст нам доступ к ней после того как устройство будет возвращено пользователю и он сам первый раз введёт код разблокировки. Поскольку пользователь явно не будет вводить код разблокировки подключив устройство к нашему usb кабелю или находясь в нашей локальной сети, то использование adb нам не подходит и необходимо организовать удалённый доступ в формате reverse-shell.