Почему приложения для рутирования больше не работают?

Пару лет назад рутировать любое устройство было легко: установите KingRoot, KingoRoot или подобное приложение, нажмите большую кнопку ROOT и позвольте ему сделать все остальное. Примерно через 5 минут появится зеленая надпись «Корень выполнен успешно!» Появится приглашение, и мы можем сохранить корневое приложение или удалить его и установить чистое приложение корневого менеджера, такое как SuperSU / Superuser.

Как они работают?
Почему они больше не работают?
И если они работают, мне их использовать или нет?

Это может быть полезно, особенно VERIFIED / SECURE BOOTраздел: forum.xda-developers.com/android/general/…

Ответы (1)

У меня был этот вопрос несколько месяцев назад, и я нашел ответ в ходе некоторых исследований, поэтому я решил поделиться своим исследованием на этом сайте, ответив на мой вопрос, учитывая поддельную информацию в Интернете. (Например, официальный сайт KingoRoot говорит, что он может рутировать Android Oreo , что является совершенно неверной информацией)

Как работают приложения для рутирования?

Существует довольно много приложений для рутинга, KingRoot, KingoRoot, Z4Root, Root Genius, Universal Androot, и это лишь некоторые из популярных/бывших популярных приложений. Все они используют эксплойты/уязвимости/лазейки в ОС Android, чтобы предоставить себе привилегии, зарезервированные для системных приложений или даже самой ОС Android. А затем они монтируют для чтения/записи каталог с именем /system, в котором находятся процессы, необходимые для запуска системы и системных приложений, и помещают двоичный файл с именем suв место каталога, а именно /system/bin/su. Если какому-то приложению требуется root, приложение выполняет этот двоичный файл, и вы видите подсказку, разрешить или отклонить root-доступ.

Обнаруженным эксплойтам/уязвимостям присваивается CVEID, затем они подробно описываются на веб-сайте CVE и исправляются в бюллетенях по безопасности Android . Примером может служить печально известная уязвимость DirtyC0W, которой был присвоен CVEID CVE-2016-5195, которая мешала и до сих пор мешает старым ядрам Linux. Почти все упомянутые выше приложения используют эту уязвимость.

Почему приложения для рутирования больше не работают?

Как упоминалось в бюллетенях выше, Google ежемесячно устраняет ряд проблем в Android. Таким образом, масштаб уязвимостей сильно уменьшается. Все уязвимости, которые используют приложения для рутирования, были исправлены в исправлениях безопасности где-то в январе 2018 года .

Но могут быть проблемы, которые некоторые производители забыли исправить! Что насчет них?

На Android 6.0.0 или новее это просто приведет к тому, что устройство больше не будет загружаться. Чтобы понять причину этого, мы должны рассмотреть концепцию под названием Цепочка доверия .

Цепочка доверия , сокращенно CoT, представляет собой механизм безопасности, который был введен для защиты ОС Android от вирусов и несанкционированных модификаций. Это работает как цепочка аппаратного и программного обеспечения, где каждая часть проверяет следующую часть. Пошагово:

  1. При включении устройства запускается аппаратная функция (иногда называемая Boot ROM). Загрузочное ПЗУ встроено в аппаратное обеспечение и не может быть изменено.
  2. Загрузочное ПЗУ проверяет первое программное обеспечение в CoT, загрузчик, который представляет собой необработанный двоичный объект, иногда называемый предварительным загрузчиком. (Кроме того, загрузочное ПЗУ иногда загружает и использует специальные настраиваемые разделы/двоичные файлы в зависимости от поставщика). Если загрузчик не проходит проверку, устройство выключается. Если он проходит, Boot ROM запускает загрузчик.
  3. Загрузчик проверяет параметры, переданные ему загрузочным ПЗУ, и выбирает соответствующий режим загрузки. Обычные режимы загрузки, которые существуют почти на каждом устройстве, — это обычная загрузка Android, восстановление и быстрая загрузка/загрузка.

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

Если загрузчик разблокирован, он не проверяет следующую часть CoT, а напрямую загружает ее.

  1. Следующая часть называется загрузочным разделом . Он обрабатывает способ загрузки самой системы. В версиях Android 6.0.0 (Lollipop) и выше он также проверяет, не повреждена ли система, и, если она изменена, отключается.

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

Таким образом, более новые устройства требуют, чтобы загрузчик был разблокирован, если вы хотите получить root права на свое устройство. Эти устройства рутируются путем перепрошивки восстановления с большим количеством параметров, чем обычное восстановление (например, TWRP, ClockWorkMod), обычно называемое пользовательским восстановлением, и его использованием для изменения загрузочного раздела (и отключения проверки системы). Также возможно напрямую изменить загрузочный раздел без кастомного восстановления.

Некоторые производители дают возможность разблокировать загрузчик, а некоторые нет. Популярные устройства с заблокированной загрузкой (например, устройства Samsung S, заблокированные оператором связи в США), как правило, используются сообществом моддеров Android.

Мое устройство по-прежнему Android 5.1.1 или старше! Должен ли я использовать их для получения root-прав?

Большинство этих старых устройств можно получить с помощью рутирующих приложений. Итак, вы могли. Вы должны? Это зависит от ваших предпочтений. Корневой доступ дает власть над всем в ОС, а с корневым доступом обычно не требуется даже микросекунды, чтобы убедиться, что ваше устройство больше никогда не загрузится. Очень вероятно, что приложения для рутинга никогда этого не сделают, но они могут. Кроме того, с помощью root приложение может получить доступ ко всему, что делает ваше устройство, и ко всему, что оно хранит в своей памяти, включая информацию о вашей кредитной карте, пароли и т. д. Если это звучит как серьезная угроза конфиденциальности для вас, возможно, не используйте корневые приложения. Если вас это не волнует, вы можете попробовать их.

Если вы достаточно сообразительны, есть источники почти всех эксплойтов, которые используют эти корневые приложения. Вы можете попытаться найти их по CVEID, найти их в Git, скомпилировать и запустить их и попытаться получить корневую оболочку, и вы сможете установить двоичный файл suи другие зависимости самостоятельно.

Кроме того, KingoRoot известен тем, что отправляет на свои серверы очень конфиденциальные данные, такие как IMEI и серийный номер. Скорее всего, они никогда не будут их использовать, но, в конце концов, это ваше решение. А KingRoot известен тем, что установил в свой SDK бэкдор, который позволял некоторым приложениям получать root-доступ неавторизованным пользователем.

Заключение

Эпоха рутирующих приложений давно прошла. Приложения для рутирования больше не работают, и если вы используете их на более новых версиях Android, вы рискуете заблокировать свое устройство и, возможно, потерять все свои данные. Если вы используете их на поддерживаемых версиях Android, они будут работать большую часть времени, но есть проблемы с конфиденциальностью и безопасностью, которые вы должны рассмотреть, прежде чем продолжить.

Я надеюсь, что мое исследование поможет кому-то в будущем, кто сталкивается с той же проблемой, что и я. :)