Содержание статьи
Изучая топ самых читаемых статей «Хакера» за все время, мы заметили, что даже старые материалы по Android по‑прежнему читают, хотя их актуальность уже местами под большим вопросом. Что ж, самое время освежить основные темы!
Краткая история рута
Как известно, Android работает на ядре Linux, а в любом Linux обязательно есть пользователь‑царь с UID 0 (обычно имеющий имя root). Для него не существует почти никаких границ, и он может сделать с системой что угодно, а та будет послушно выполнять его указания.
В Android доступа к этой учетной записи штатно нет, а все приложения работают от имени отдельных непривилегированных учеток, что позволяет системе гибко разграничивать им доступ и держать в песочницах.
Ограничение на root-пользователя при этом сделано серьезно: в системе отсутствуют бинарники su и sudo, которые обычно используются для повышения прав. Таким образом, по умолчанию у тебя нет возможности вмешаться в работу системы и делать всякие административные действия за рамками предусмотренного производителем. А знакомое ядро так и манит!
Способы сбежать из песочницы, разумеется, быстро нашлись. Старые ядра в бюджетных аппаратах были безнадежно дырявыми, так что устроить побег было легче легкого — приложения вроде KingoRoot включали сразу пачку эксплоитов, которые легко подкидывали в систему бинарник su, и уже с ним поднимать права в дальнейшем можно было всего одной командой. Для ограничения доступа к правам root можно было применять как само приложение, с помощью которого они были получены, так и стороннее, например SuperSU.
Ситуация кардинально поменялась с появлением Android 6, где системный раздел по умолчанию стал доступен только для чтения и подкидывать туда файлы стало невозможно, то есть полученные права жили максимум до перезагрузки. С выходом Android 7 окончательно закрылась возможность рутинга прямо из работающей системы: отныне любое изменение важных компонентов системы приводило к окирпичиванию устройства и походу в сервис‑центр.
Особняком стояли устройства Samsung, в которых подсистема Knox отмечала факт взлома устройства необратимым пережиганием специального eFuse даже на телефонах с более старыми версиями Android. Отныне единственная дорожка к заветному руту — разблокировка загрузчика и установка кастомной прошивки.
Разблокировка загрузчика — это новая процедура, она позволяет отключить проверку загрузчиком подписи ядра, что дает возможность установить стороннюю прошивку с альтернативным подходом к безопасности в целом и root-правам в частности.
На протяжении многих лет в Google закручивали гайки еще и в другом смысле: отношение программ на устройстве к рутингу. Рут — это фактически взлом устройства, а некоторым приложениям необходимо защищать свои данные особо надежно, например банковским клиентам или электронному паспорту.
В ситуации, когда приложение не может доверять даже ядру, на котором работает, обеспечить такую защиту становится крайне сложно. Каждый разработчик стал реализовывать обнаружение root-доступа на телефоне по‑своему, что давало совсем уж слабую защиту, так что в Google быстро выкатили подсистему SafetyNet, которая позволяла приложениям централизованно выявлять факт компрометации устройства при помощи постоянно меняющихся проверок внутри самого фреймворка Google.
Такой простой доступ к обнаружению root сделал пользование рутованным телефоном совсем уж некомфортным: мало того, что получить root-права стало непросто, так еще и каждое мелкое приложение типа игры или скидочной карты ближайшего супермаркета стало требовать вернуть систему в исходное состояние, даже если смысла в этом не было.
Тогда стало понятно, что нужен новый подход к руту. Очень кстати возможность рутинга средствами только самого устройства окончательно закрылась, и процесс стал требовать внедрения в ramdisk ядра своих файлов, то есть стала необходима перепрошивка аппарата. Так появился проект Magisk и его функция MagiskHide: теперь стало можно скрыть наличие root от посторонних глаз и продолжать пользоваться всеми его фишками!
На этом история войны меча и щита не закончилась, но страсти поутихли. На смену MagiskHide пришел Zygisk, работающий по совершенно другому принципу, альтернативные способы управления root-правами потихоньку умерли, место SafetyNet занял Play Integrity API, ядра стали обновляться лучше, загрузчики разблокировать стало все сложнее, а временами и вовсе невозможно. А вот что не изменилось, так это желание андроидоводов во что бы то ни стало добыть себе права суперпользователя. Зачем? Сейчас расскажу!
warning
В этой статье рассматриваются манипуляции за границами предусмотренного производителем. В ядро немытыми руками лучше не лезть, потому что сломать что‑то ненароком будет очень легко, а вот починить — далеко не всегда. Все действия ты повторяешь на свой страх и риск. Ни автор, ни редакция не несут никакой ответственности за то, что ты сделаешь со своим смартфоном!
О безопасности
Хоть Android и неплохо защищает твои данные, все эти защитные механизмы не помогут при наличии root-доступа к телефону. Единственный реальный барьер, который остается перед потенциальным злоумышленником, — это шифрование устройства, но и оно тоже не спасет, если злоумышленник получит физический доступ. На «Хабрахабре» есть хорошая статья, рассказывающая, как атаковать устройство с разблокированным загрузчиком.
Хотя в реальности такая атака на среднего пользователя маловероятна, все же стоит иметь в виду, что защищенность рутованного устройства будет сильно ограничена. Эта статья — не призыв рутовать свой телефон, а только демонстрация того, как наличие root-прав может быть полезно.
В чем фишка?
Действительно, зачем нужны root-права, когда их получение становится квестом для энтузиастов, а производители железа и софта совместно борются за их искоренение? Должна быть очень весомая причина, чтобы продолжать упорно выбивать себе заветный UID 0.
И такая причина есть: во времена засилья рекламы, трекеров, глупых запретов со всех сторон очень хочется самостоятельно решать, что будет делать твой аппарат, а альтернативных вариантов для этого не остается.
Производители набивают новые телефоны о‑о-очень нужными неудаляемыми программами, каждый сайт и приложение отчаянно пытаются монетизироваться через рекламу, трекеры не дают сделать ничего, не будучи замеченным и посчитанным, проблемы совместимости маркетологи создают из воздуха, а обновления даже для актуальных устройств часто не выходят вовсе. Все эти проблемы позволяет решить прямой доступ к системе.
Давай пройдем по основным сценариям использования root в 2025 году и рассмотрим альтернативы, если ты по какой‑то причине не хочешь рутовать свой аппарат.
Получение root
Сразу скажу, что мы не будем подробно рассматривать весь процесс рутинга современных смартфонов, тем более что процесс отличается не только от производителя к производителю, но и в рамках одной модели, а иногда и версии прошивки на одном аппарате. Актуальную для тебя инструкцию следует искать на форумах вроде 4PDA и XDA Developers.
Вместе с этим реальное разнообразие есть только в части разблокировки загрузчика, а если это ты уже сделал, установка Magisk становится тривиальной. Существует также альтернатива Magisk под названием KernelSU, но каких‑то явных преимуществ у нее нет.
Блокировка рекламы
Самый простой и очевидный сценарий использования root-доступа на смартфоне — удаление тонн рекламы, валящейся со всех сторон. Патчить каждое приложение — долго и нудно, не всегда возможно, и результат будет временным (патч придется применять заново при каждом обновлении). Вместо этого достаточно не дать рекламе возможности загрузиться, заблокировав доступ на уровне файла hosts.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее