Вы сможете избавиться от рекламы и мусорных программ, а также расширить возможности своего устройства.
- Зачем нужны root‑права на Android
- В чём плюсы и минусы root‑доступа
- Как подготовиться к получению root‑прав на Android
- Как получить root‑права на Android
- Как отключить root‑права на Android
- Стоит ли использовать приложения для получения root‑прав на Android
- Что такое Root и права суперпользователя
- Проверка Root-прав на смартфоне
- Список приложений
- Практическая проверка
- Программа Root Checker
- Терминал
- Как установить рут на Xiaomi через TWRP
- Установка Magisk Manager
- Обновление Magisk Manager
- Как удалить рут-права с телефона
- Отключение при помощи Magisk
- Ручное удаление Root прав
- Рутирование Xiaomi через SuperSU
- Рут-права на Xiaomi без компьютера
- Включение режима Суперпользователя на телефоне
- Установка Root на Xiaomi A-серии
- Что такое root-права?
- Зачем нужны root-права?
- Кому НЕ нужны root-права
- Способы получения root
- Как получить root-права?
- Настройка Magisk или как пройти SafetyNet
- Опасности root-прав
- Выводы
- Мой набор Magisk-модулей
- Вступление
- Постановка задачи
- Что же плохого происходит когда загрузчик разблокируется?
- Как устроено хранилище
- Как устроено шифрование хранилища
Зачем нужны root‑права на Android
Root‑доступ — это возможность работать с корневой папкой Android, термин пришёл из UNIX‑подобных систем. Пользователь с root‑правами может выполнять любые операции с системой и именуется «суперпользователь». Разбираемся, какие полезные возможности может дать root‑доступ на Android.
В чём плюсы и минусы root‑доступа
Активация режима суперпользователя на вашем смартфоне обеспечит вам несколько весомых преимуществ.
Но у всех этих манипуляций могут быть и негативные последствия.
Как подготовиться к получению root‑прав на Android
Перед манипуляциями с режимом суперпользователя нужно проделать следующее.
Как получить root‑права на Android
Универсального рецепта для всех Android‑устройств нет. Поэтому во всём придётся разбираться самостоятельно. К счастью, сообщество пользователей форума 4PDA создаёт подробные инструкции для всех мало‑мальски популярных моделей смартфонов. Нужно только найти соответствующую для своего Android. Алгоритм примерно следующий:
1. Зарегистрируйтесь на 4PDA. Без этого вам нельзя будет скачивать оттуда файлы, прошивки и утилиты.
2. Найдите тему, посвящённую вашему устройству. Будьте аккуратны в написании названия модели и убедитесь, что не путаете свой телефон с его модификацией. Например, Xiaomi Redmi Note 9 — это не то же самое, что Xiaomi Redmi Note 9S.
3. Разблокируйте загрузчик (Bootloader). Сначала отыщите инструкцию по разблокировке загрузчика для вашей модели. Для этого следует прочитать заголовки в шапке темы на 4PDA. Пользователи оформляют их кто во что горазд, поэтому нужный алгоритм может быть найден в разделе «Инструкции», «Прошивки» или в отдельном пункте «Разблокировка загрузчика». Можете воспользоваться Google, составив запрос site:https://4pda.ru/ разблокировка загрузчика «модель вашего телефона».
Если не можете найти подходящее руководство сами — вот несколько официальных инструкций по разблокировке Bootloader для популярных производителей смартфонов:
Возможно, вам придётся подождать какое‑то время. Например, устройства Xiaomi порой получают одобрение на разблокировку до 1 440 часов. А иногда это происходит мгновенно. В общем, будьте готовы ко всему.
4. Установите кастомный Recovery. Самый популярный — Team Win Recovery Project (TWRP). Найти подходящий образ TWRP и инструкции по его установке можно в теме 4PDA, посвящённой вашему устройству. Для установки будет нужен USB‑кабель.
5. Установите приложение для разблокировки root. Самое продвинутое и популярное — Magisk. Оно подходит для устройств с Android 5.0 и новее. Найдите руководство по установке Magisk в теме по вашему девайсу на 4PDA. В большинстве случаев оно сводится к тому, чтобы загрузить Magisk отсюда. Поместите ZIP‑архив в память смартфона и установите его через TWRP. Перезагрузитесь и установите Magisk Manager, который позволяет управлять правами root через удобный графический интерфейс.
Выполняйте действия, чётко следуя инструкциям с 4PDA, и у вас всё получится.
Как отключить root‑права на Android
Это может понадобиться, если вы не можете установить какое‑нибудь приложение, не работающее с root‑доступом (например, банковскую или платёжную программу), а Magisk Hide не помогает. Или вы хотите отдать телефон на ремонт в сервис.
Для того, чтобы убрать и TWRP, придётся перепрошить ваш Android, что удалит все данные и вернёт его к заводским настройкам. Отыщите раздел «Официальные прошивки» в теме 4PDA, посвящённой вашему устройству, и следуйте найденным там инструкциям.
Стоит ли использовать приложения для получения root‑прав на Android
Иногда получить права суперпользователя можно, просто нажав кнопку в специальной программе. Правда, это работает далеко не со всеми устройствами Android.
Однако мы (как и специалисты форума XDA Developers) не рекомендуем пользоваться программами для получения root‑прав на Android «в один клик», потому что они часто устанавливают на ваш смартфон рекламные или вредоносные приложения. Так что подобным утилитам не стоит доверять. Помните: своими руками доступ получать всегда надёжнее.
Смартфоны от компании Xiaomi обладают неплохими характеристиками и мощной защитой. Иногда эта защита препятствует нормальной установке нужных программ. Для решения проблемы необходимо использовать root-права.
Прежде чем рассказывать про то, как получить рут-права на Xiaomi, необходимо упомянуть зачем вообще нужны права суперпользователя и почему их нужно использовать с осторожностью.
Что такое Root и права суперпользователя
Root – это учётная запись администратора на смартфоне. По умолчанию пользователь работает под записью «гостя», поэтому ему не разрешается изменять системные файлы или удалять предустановленные приложения.
Права суперпользователя – это разрешение системы пользователю управлять системными приложениями, редактировать системные файлы и заниматься тонкой настройкой ОС. Именно эти права выдаются после рутирования Xiaomi.
Включение Root прав даёт следующие преимущества:
Это далеко не все преимущества, но они основные. Однако есть и недостатки. Самым существенным является тот факт, что рутированные телефоны Xiaomi не будут получать обновления ОТА.
Также на смартфонах с Root не работает система бесконтактной оплаты Google Pay. Впрочем, в современных приложениях для управления правами суперпользователя есть возможность обойти это ограничение. По крайней мере у Magisk точно есть соответствующая функциональность, об этом я расскажу ниже по тексту.
Есть несколько типов root-прав на Xiaomi:
Рут на Xiaomi позволяет использовать устройство на полную. Именно поэтому многие спешат установить рут на только что приобретённый смартфон.
Внимание! Производитель не зря предупреждает, что установка рут-прав на Xiaomi делает телефон уязвимым. Дело в том, что на Android-вирусу, для старта своей разрушительной деятельности, как раз нужны права суперпользователя. Поэтому без явной необходимости не рекомендуется устанавливать рут.
Проверка Root-прав на смартфоне
Перед тем как получать права суперпользователя, стоит проверить, не установлен ли Root уже на телефоне Сяоми. Сделать это можно несколькими способами.
Список приложений
Нужно посмотреть на главный экран смартфона или в список приложений. Если в списке имеются программы с названиями Magisk или SuperSU, то рут на этом телефоне точно установлен, поскольку они предназначены для управления правами суперпользователя.
Практическая проверка
Запустите какое-либо приложение, способное работать с файловой системой ОС (например, ES Проводник). Если после запуска появится сообщение о том, что ему были предоставлены права суперпользователя, рут на месте.
Программа Root Checker
Подходит не всем смартфонам. Можно установить приложение Root Checker (ссылка в Google Play) и запустить его.
Достаточно нажать на кнопку «Проверка ROOT». Программа просканирует ОС телефона и выдаст заключение, которое выглядит примерно так:
Терминал
Работает только на старых смартфонах Xiaomi, которые были рутированы при помощи SuperSU.
Нужно открыть терминал (который устанавливается вместе с SuperSU), ввести в консоли su и нажать «Ввод». Если появится значок $, то рут-прав нет. А если #, то есть.
Внимание! При работе с терминалом нужно быть осторожным. Всего одна неправильная команда может повесить всю систему. В некоторых случаях даже придётся перепрошивать смартфон.
Если знаете другие способы проверить root-права на Xiaomi, обязательно напишите об этом в комментариях.
Как установить рут на Xiaomi через TWRP
Установка root на Сяоми — это сложный, многоэтапный процесс. Сначала потребуется разблокировать загрузчик, установить рекавери TWRP и прошить заранее скачанный ZIP-архив с рутом.
Установка root через TWRP Recovery предполагает использование Magisk для управления правами суперпользователя. Только после его установки и обновления вы получите полноценные права администратора на телефоне.
Про разблокировку загрузчика и установку кастомного рекавери TWRP можно прочитать по ссылкам — там я подробно рассказал как это сделать.
Установка Magisk Manager
Процесс установки не займёт много времени. Но мало просто установить его, потребуется обновить некоторые параметры программы. Иначе она не сможет нормально работать.
Обновление Magisk Manager
Последний шаг нужен для того, чтобы на Xiaomi с рутом мог работать сервис Google Pay. Как раз SafetyNet отвечает за это. Если всё сделано правильно, то после завершения проверки на экране появится сообщение «Тест пройден».
Внимание! Использовать Magisk нужно аккуратно, приложение позволяет полноценно управлять смартфоном. Но нужно чётко понимать, каким программам можно давать соответствующие права, а какие могут причинить вред ОС. Перед первым запуском такой программы на телефоне будет появляться уведомление о том, что приложение требует прав суперпользователя. Давать программе их или нет – решать вам.
Теперь на вашем телефоне Xiaomi установлены права Root.
Как удалить рут-права с телефона
Если по какой-то причине права суперпользователя больше не нужны, можно убрать root-права с телефона. Для этого есть 2 варианта: первый основан на всё том же приложении Magisk, а второй является универсальным.
Отключение при помощи Magisk
Как отключить root доступ:
Во время проведения процедуры телефон перезагрузится. Вместе с приложением будет удалён root доступ на смартфоне.
Ручное удаление Root прав
Для этого способа нам понадобится какой-либо кастомный файловый менеджер. Например, Total Commander.
После рестарта телефона права суперпользователя будут удалены с устройства.
Внимание! Есть программы для удаления рут-прав под названием Universal Unroot. Она позволяет удалить рут с любого смартфона всего за несколько тапов. Это удобно, и утилита находится в свободном доступе в Google Play (ссылка), но она платная.
Чтобы откатить Root в MIUI, нужно установить стоковую официальную прошивку.
Рутирование Xiaomi через SuperSU
Это альтернативная программа для управления правами суперпользователя на смартфонах, позволяющее их отключить. Процесс установки такой же, как и в случае с Magisk. Потребуется разблокированный загрузчик и рекавери TWRP.
Однако от использования SuperSU следует отказаться. Проект давно заброшен и не поддерживается разработчиками. Старые версии SuperSU не могут работать с актуальными смартфонами. Также количество багов зашкаливает.
Поэтому многие специалисты рекомендуют использовать исключительно Magisk. Особенно с актуальными моделями смартфонов Xiaomi. Так безопаснее и надёжнее. Ведь Magisk постоянно обновляется, разработчики расширяют список поддерживаемых телефонов и своевременно исправляют баги.
Рут-права на Xiaomi без компьютера
Если нет желания возиться с кастомным рекавери и делать всё вручную, существуют приложения, позволяющие получить Root в один клик. Даже без ПК. Самым популярным и эффективным является KingRoot от китайских разработчиков.
Во время проведения процедуры телефон перезагрузится. В случае успеха вы увидите соответствующее сообщение на смартфоне. Если же процесс завершится с ошибкой, то появится соответствующий текст.
Внимание! Использование программ типа KingRoot не рекомендуется. В официальном Google Play их нет. А файлы APK на сторонних ресурсах могут быть заражены вирусами. А ведь эта программа модифицирует системные файлы. Поэтому вирусам ничего не стоит их повредить.
Включение режима Суперпользователя на телефоне
Обычно режим Root включается автоматически. В большинстве случаев он не включён постоянно, а активируется по запросу. Достаточно запустить приложение, которое требует прав суперпользователя, и на экране появится предложение предоставить программе права.
Поэтому вручную включать Root не требуется. Если же вам нужно модифицировать системные файлы или настройки при помощи терминала, то в терминале достаточно ввести su и нажать на «Ввод». После этого можно будет использовать соответствующие команды.
Эмулятор терминала сначала нужно будет установить, можно взять Terminal Emulator for Android (ссылка на Google Play). Установка происходит по стандартному сценарию.
Установка Root на Xiaomi A-серии
Получение рут-прав на Xiaomi A-серии (Mi A1, A2 и A3) ничем не отличается от телефонов с MIUI. Требуется разблокированный загрузчик, установка рекавери TWRP и заранее скачанный ZIP-пакет с Magisk. Не стоит забывать о приложении Magisk Manager и его обновлении. Пошаговые инструкции приведены выше по тексту.
Можно использовать те же KingRoot или Framaroot на самом смартфоне. Однако процент успеха в этом случае будет невелик. С Xiaomi серии А даже проще работать, поскольку на этих телефонах установлен чистый Android.
Root-права позволяют полноценно пользоваться смартфоном и настраивать его. Однако не нужно забывать, что у рутированных телефонов Xiaomi есть недостатки в плане безопасности. Если это вас не пугает – смело устанавливайте рут.
Вот такое how-to по root получилось. Если есть что дополнить или хотите поправить, обязательно пишите в комментариях.
Доброго времени суток всем моим читателям! Сегодня, продолжая цикл статей о кастомизации своего устройства, расскажу о том что такое права «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.