Мы систематизировали самые распространенные способы получить права суперпользователя в актуальных версиях Android; разобрались в различиях между SuperSU, phh SuperUser, Magisk, KingRoot и Kingo Root; протестировали различные способы скрыть root; изучили систему безопасности Android 7 и узнали, чем может грозить получение root на новых версиях Android. Ну а потом закрылись в комнате без окон и произвели на свет этот текст.
 

Немного истории

Обладатели ранних версий Android обычно получали права root с использованием какой-либо уязвимости в системе безопасности Android или одного из системных приложений, установленных производителем. Использование уязвимостей позволяло приложению «вырваться» из песочницы и получить права системного процесса через эскалацию привилегий.

Чтобы не повторять процесс каждый раз и чтобы предоставить возможность и другим приложениям использовать права суперпользователя, в системный раздел помещали файл su (как правило, в каталоге /system/xbin/) и приложение для обработки запросов прав root (в /system/app/). Чтобы получить права root, приложение запускало su, в этот момент срабатывал менеджер обработки запросов и запрашивал у пользователя подтверждение.

Окно запроса прав и история запросов
Окно запроса прав и история запросов
Окно запроса прав и история запросов
Окно запроса прав и история запросов
Окно запроса прав и история запросов

Такая схема прекрасно работала во всех версиях Android вплоть до пятой, а добытый с ее помощью root-доступ чаще всего не мешал получать обновления прошивок и даже иногда сохранялся после таких обновлений. Популярностью пользовались многочисленные приложения, эксплуатировавшие одну или несколько уязвимостей (например, Towelroot). Со временем большую аудиторию набрали китайские приложения KingRoot и Kingo Root, включавшие в себя большие коллекции эксплоитов, которые скачивались непосредственно в момент запуска с китайских серверов. В случае успешной эскалации привилегий эти приложения прописывали в системный раздел много интересного; удалить их можно было либо вместе с root-доступом, либо с помощью специального «чистильщика», сделанного разработчиком SuperSU Chainfire.

В Android 5.0 была введена новая система обновлений. Теперь в файле OTA изменения прописывались не на файловом, а на блочном уровне; чтобы не повредить файловую систему, инсталлятор обновления подсчитывал контрольную сумму системного раздела. Естественно, записанный в раздел /system файл su изменял контрольную сумму раздела, и обновление не устанавливалось (а в тех случаях, когда оно все-таки ставилось, был высокий шанс получить на выходе «кирпич»).

Шестая версия Android принесла и обновленную систему безопасности, которая (временно) сделала невозможным получение прав суперпользователя простой записью приложения в системный раздел. В результате появился обходной путь — так называемый systemless root, внедряющий su в ramdisk вместо модификации системного раздела. На некоторых устройствах с «бессистемным» root-доступом даже получалось устанавливать OTA-обновления; впрочем, гарантии тут никакой.

 

Как был получен root на HTC Dream G1

Впервые root был получен на первом в мире Android-устройстве HTC Dream G1, выпущенном в далеком 2008 году. На устройстве был запущен сервис Telnet с правами root и без аутентификации. Для получения временного root-доступа было достаточно подключиться к смартфону по Telnet, для постоянного — залить в системный раздел бинарный файл su.

 

Root в Android 7

Особняком стоят устройства, выпущенные с Android 7 на борту (впрочем, то, о чем мы сейчас будем писать, относится и ко многим устройствам, которые получают Android 7 в качестве обновления).

Как ты, наверное, знаешь, механизм безопасной загрузки (Verified Boot) был реализован в Android давным-давно, еще в версии 4.4 KitKat. Его цель — защитить пользователя от атак, направленных на модификацию системы и внедрение в нее кода еще до начала загрузки системы. Для этого он использует скрытый в модуле TEE ключ, чтобы сверить цифровую подпись загрузчика, далее загрузчик сверяет цифровую подпись раздела boot, а он, в свою очередь, проверяет целостность системного раздела с помощью механизма dm-verity (Device Mapper verity).

Такая цепочка проверок (называемая root of trust) позволяет удостовериться в целостности и отсутствии модификаций в любом компоненте загрузки, начиная от загрузчика и заканчивая самой ОС. Но если большинство устройств под управлением Android 4.4–6.0 (за редкими исключениями вроде смартфонов BlackBerry и Samsung с активированным Knox) в случае неуспешной проверки просто выводили предупреждение, но продолжали загрузку, то в Android 7.0 ситуация изменилась и новая-старая функция проверки целостности системы стала обязательной.

Verified Boot позволяет загрузить модифицированный boot-образ в случае, если загрузчик разблокирован (слева), но откажет в загрузке, если он был модифицирован при залоченном загрузчике
Verified Boot позволяет загрузить модифицированный boot-образ в случае, если загрузчик разблокирован (слева), но откажет в загрузке, если он был модифицирован при залоченном загрузчике
Verified Boot позволяет загрузить модифицированный boot-образ в случае, если загрузчик разблокирован (слева), но откажет в загрузке, если он был модифицирован при залоченном загрузчике
Verified Boot позволяет загрузить модифицированный boot-образ в случае, если загрузчик разблокирован (слева), но откажет в загрузке, если он был модифицирован при залоченном загрузчике
Verified Boot позволяет загрузить модифицированный boot-образ в случае, если загрузчик разблокирован (слева), но откажет в загрузке, если он был модифицирован при залоченном загрузчике

Чем это грозит? Тем, что старый метод получения root через эскалацию привилегий в Android 7 просто не работает. Даже если приложения класса KingRoot, Kingo Root и им подобные смогут рутануть девайс (а в данный момент они не могут), устройство после этого просто не загрузится.

Как это обойти? Разблокировать загрузчик штатными средствами и установить SuperSU или Magisk. В этом случае загрузчик просто отключит механизм Verified Boot. Однако не стоит даже пытаться взломать загрузчик на устройствах, не предполагающих такую возможность. Даже если это удастся сделать, взломанный загрузчик не пройдет проверку цифровой подписи — и смартфон превратится в кирпич.

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи один материал

Заинтересовала информация, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для материалов, опубликованных более двух месяцев назад.


Олег Афонин

Олег Афонин

Эксперт по мобильной криминалистике компании «Элкомсофт»

8 комментариев

  1. istepan

    20.07.2017 at 17:07

    Не вижу смысла в root на телефоне. На своем honor разблокировал загрузчик и все необходимое проделываю через adb. И сбер работает, и программы нужные стоят.
    Функционала современных рекавери к тому же в случае чего более чем достаточно.

  2. 84ckf1r3

    22.07.2017 at 14:01

    Олег, спасибо за статью! Istepan, в свою очередь, я не вижу смысла в телефоне БЕЗ рута. Одна борьба с рекламой чего стоит, не говоря уже про использование NetHunter и других специфических приложений. Вот вы пишите, что всё делаете через ADB. Получается, надо каждый день подключать смартфон к ББ и вручную добавлять новые правила блокировки в hosts. С рутом Ad-Away делает это автоматически. Также синхронизация времени с рутом работает автоматически и с точностью до миллисекунды. Без рута — только в ручном режиме и с точностью до минуты. Продвинутое управление камерой, тонкие системные настройки — словом, самые интересные функции без рута на смартфоне просто недоступны.

    • istepan

      24.07.2017 at 08:09

      Я один раз настроил телефон как мне надо, и больше нет надобности лазить в system.
      Если в программе есть реклама, то я покупаю версию без рекламы. Если таковой нет, то иду на 4pda и качаю прогу с выпиленной рекламой.

      Баннерорезки основанные на hosts, это один большой костыль. Приложения все равно будут слать запросы на соединение с рекламным сервером и из-за чего батарея будет быстрее разрежаться.

  3. clicker314

    26.07.2017 at 17:41

    root нужен знающим людям. делать root изза настроек лично не виду смысла.

  4. poddex

    26.07.2017 at 21:46

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

  5. Олег Афонин

    Олег Афонин

    27.07.2017 at 11:34

    По большому счёту, лично мне на телефоне тоже рут практически никогда не нужен. Фактически, осталась одна-единственная функция, ради которой я его иногда активирую (и то не на всех устройствах): управление «ночным режимом» экрана через CF.Lumen. Всё. Если производители, наконец, прочухаются и станут добавлять этот режим по умолчанию, для меня необходимость в рут-доступе отпадёт на подавляющем большинстве устройств. К сожалению, политика Google, который выпилил данный режим из Android 7.1 (в 7.0 был, только спрятанный)в этом плане совершенно не обнадёживает.

    Реклама прекрасно блокируется на уровне локального VPN (AdGuard, Blokada и подобные, их несколько). Вот на Moto Z очень хочется наэкранные кнопки спрятать, чтобы пользоваться вместо них жестами на датчике отпечатков — без рута тоже никак.

    В общем, рут сегодня нужен мало кому. Но некоторые вещи (NetHunter уже упоминали) без него никак.

  6. Ksakep

    31.07.2017 at 15:21

    Для меня важен рут чтобы использовать приложение WiFi ADB. С его помощью можно дебажить свои андройд приложения не подключая физически девайс к ББ. Очень удобная тулза, избавляет от «поводка» и сохраняет жизнь USB разъему на девайсе.

    https://play.google.com/store/apps/details?id=com.ttxapps.wifiadb&hl=en_GB

  7. Михаил Абеленцев

    16.08.2017 at 15:20

    ^__^ то чувство, когда в 15 лет знаешь и умеешь пользовться 90% того что в этой статьей написано. Спасибо Вам огромное. Совершенствуюсь в мире андройд с Вашей помощью

Оставить мнение

Check Also

Целенаправленная социальная инженерия. Нестандартные техники введения в заблуждение

В предыдущей статье мы разобрали массовые атаки. Но их применимость ограничена: пентестер …