Comments 46
Какой-то андроид недружелюбный по отношению к пользователям.
UFO landed and left these words here
Респект за труд, время и упорство в исследовании андроид. Было интересно прочитать опыт
Отличное расследование!

Кроме supersu от chainfire есть еще к примеру KingRoot.
Этот самый KingRoot умеет получать root при заблокированном загрузчике. Как это ему удается?

Еще один специалист по мобильной ИБ, Justin Case, сказал, что он знает уязвимость, которой подвержены все современные процессоры Qualcomm, но раскрывать её детали он не будет.

Если такая серьезная уязвимость имеется, то нашел один найдут и другие. А может уже нашли и эксплуатируют.

Это закрытый китайский блоб. Кто знает, что он делает? Я его пробовал перед тем, как самому заняться исследованием, предварительно сделав factory reset. Он не работает на устройствах Kyocera.


Если такая серьезная уязвимость имеется, то нашел один найдут и другие. А может уже нашли и эксплуатируют.

У меня не достаточно опыта, а особенно времени для reverse engineering. Можно заметить, что в статье нет ни строчки assembler кода. Возможно читатели хабра помогут, для того я и выложил загрузчики.

А пробовали KingoRoot с компа? Именно KingO, а не King. Бывает срабатывает после 2-5 перезагрузки, но еще не сталкивался с телефонами, который он не смог рутануть.

Причины, почему эти инструменты не работают, описаны в статье.

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

Я бы на вашем месте еще и на форумы xda-developers бы обратился.
Да, есть порою такое дело: непонятный снобизм и нежелание делиться информацией у тамошних обитателей.
Этот самый KingRoot умеет получать root при заблокированном загрузчике. Как это ему удается?

Работает так же как и другие ему подобные: Прогоняет проверку по известным эксплоитам.
В Framaroot можно было выбирать конкретный эксплоитам, в KingRoot это делается автоматически.
Этот самый KingRoot умеет получать root при заблокированном загрузчике. Как это ему удается?

загрузчик и доступ к разделу /system это совершенно разные вещи. В моей стетье я описал как я смог получить read-write доступ к разделу /system, но сломать загрузчик так и не удалось. Если устройство использует dm-verity (новые устройства используют эту защиту), то модификация раздела /system невозможна. Либо возможна, но тогда при перезагрузке ты получишь кирпич.


https://source.android.com/security/verifiedboot/

Хабр торт, автор молодец!
Вопрос — сколько времени ушло на всё это копание? Навреняка, в процессе копания несколько раз руки опускались, но потом снова возникало желание «попробовать вот так»?

> P.P.S. Еще один специалист по мобильной ИБ, Justin Case, сказал, что он знает уязвимость, которой подвержены все современные процессоры Qualcomm, но раскрывать её детали он не будет.
Да-да, «я знаю кое-что о кое-ком, но никому не расскажу»
сколько времени ушло на всё это копание?

неспешно по вечерам с конца ноября.

Как включать/отключать WiFi программными средствами?


Часто используется rfkill. Есть одноименная тулза, но куда проще заглянуть в /sys/class/rfkill

Включение/отключение модуля wifi происходит в процессе init.

На Motorola defy с kexec была проблема — радиомодулю немного не нравилась повторная инициализация от загружаемого второго ядра и он вызывал ребут. Вылечили отключением оной инициализации и хардкодом получаемых от неё значений.
P.P.S. Еще один специалист по мобильной ИБ, Justin Case, сказал, что он знает уязвимость, которой подвержены все современные процессоры Qualcomm, но раскрывать её детали он не будет.

Видимо, бережёт лазейку на всякий случай.

можно ли получить root вот таким спосбом? то есть, самостоятельно. то есть, без необходимости искать по форумам и качать непонятные рутовальщики, которые, например, могут содержать троян.
А бывают ли по этой теме какие-то базы знаний вроде wiki.openwrt.org?
А то по всем вопросам гугл предлагает какие-то странные форумы, где кучка подозрительных сумрачных гениев предлагает массе домохозяев скачать с файлопомойки откуда-то взятый бинарник.
4pda(Русский) и xda(Английский). Это тоже форум, конечно, но там самая большая концентрация.
вики врт тоже по сути «где кучка подозрительных сумрачных гениев предлагает массе домохозяев скачать с файлопомойки откуда-то взятый бинарник»
На Openwrt вот все сорцы, вот тулчейн, вот рассказывают про устройства, как в какие режимы загрузчика перейти, формат файла с прошивкой, про устройство самого openwrt. А бинари только на сладкое. И понятно откуда они взялись и что делают.

На 4pda может и есть какие-то подробности на 580 странице темы, но фиг это найдёшь среди остального.
P.P.S. Еще один специалист по мобильной ИБ, Justin Case, сказал, что он знает уязвимость, которой подвержены все современные процессоры Qualcomm, но раскрывать её детали он не будет.

Ещё бы, JCase продаёт софт для взлома загрузчиков разных устройств по отдельности по 25$. Было бы весьма странно, если бы он вдруг раскрыл секреты.
Понимая все риски, я решил прошить загрузчик от Brigadier на KC-S701.

А вот вместо этого лучше было бы пропатчить Bootloader KC-S701, переподписать и прошить.

Переподписать? А приватный ключ мне из публичного сотню лет брутфорсить?

Извиняюсь, а это как??? Приватный ключ с паролем в исходниках ядра… Что-то новенькое в криптографии :D
Да уж, «круто»! Не думал, что такое бывает — но, похоже, что нет предела человеческой невнимательности и глупости…
Да, примерно такое и имел ввиду. Особенно в слитых mtk ядрах можно встретить, даже исходники первичного загрузчика попадались.
Что бы програмно включать wifi можно накидать простеньку программу в андройд студии которая сможет это сделать
аналогично можно сделать такую же программу на выключение
ну а далее через adb можно запускать их

Меня больше интересует системные функции. Но спасибо за наводку, вот, что скрывается за функцией setWifiEnabled:
https://android.googlesource.com/platform/frameworks/opt/net/wifi/+/master/service/java/com/android/server/wifi/WifiServiceImpl.java#570
https://android.googlesource.com/platform/frameworks/opt/net/wifi/+/master/service/java/com/android/server/wifi/WifiController.java#119
https://android.googlesource.com/platform/frameworks/base.git/+/master/core/java/com/android/internal/util/Protocol.java#48


т.е. отправляется сообщение 0x00026008. Пока не смог найти код, где обрабатывается это сообщение.

Уже близко:


$ adb shell "ps" | egrep -v '^(root|u0_)' | awk '{print "adb shell \"su -c cat /proc/"$2"/status | grep Cap | grep -v 'CapBnd' | grep -v 0000000000000000 | grep -v ffffffffffffffff | grep Eff\""}' | sh -s | awk '{print "capsh --decode="$2}' | sh -s | grep sys_module
0x0000001007813c20=cap_kill,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_sys_module,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_block_suspend
$ adb shell "ps" | egrep -v '^(root|u0_)' | awk '{print "adb shell \"cat /proc/"$2"/status | grep 0000001007813c20 && echo "$2"\""}' | sh -s
812
$ adb shell "ps | grep 812"
system    812   244   628252 59468 ffffffff 40094888 S system_server

Т.е. модуль wlan загружается демоном system_server у которого проставлен cap_sys_module. Ну теперь то можно и автоматизировать отключение защиты.

UFO landed and left these words here

Пробежался по FAQ. Очень похоже на то, что на motorola аналогичная emmc/system защита. А насчет загрузчика не всё так однозначно. Motorola официально поддерживает разблокировку загрузчика, а Kyocera никогда не позволяла разблокировать загрузчик.

Спасибо, то что нужно! Отличный стиль изложения, захватывает! Всем бы исследователям так, описывать не только успешную ветвь исследования, но и все свои неудачные попытки, чтобы другие не тратили время.
ана^W огораживание от kyocera вызвало уважение, другие производители(китайцы не в счет) тоже так хорошо защищают свои телефоны?
Only those users with full accounts are able to leave comments. Log in, please.