Comments 46
Кроме supersu от chainfire есть еще к примеру KingRoot.
Этот самый KingRoot умеет получать root при заблокированном загрузчике. Как это ему удается?
Еще один специалист по мобильной ИБ, Justin Case, сказал, что он знает уязвимость, которой подвержены все современные процессоры Qualcomm, но раскрывать её детали он не будет.
Если такая серьезная уязвимость имеется, то нашел один найдут и другие. А может уже нашли и эксплуатируют.
Это закрытый китайский блоб. Кто знает, что он делает? Я его пробовал перед тем, как самому заняться исследованием, предварительно сделав factory reset. Он не работает на устройствах Kyocera.
Если такая серьезная уязвимость имеется, то нашел один найдут и другие. А может уже нашли и эксплуатируют.
У меня не достаточно опыта, а особенно времени для reverse engineering. Можно заметить, что в статье нет ни строчки assembler кода. Возможно читатели хабра помогут, для того я и выложил загрузчики.
Возможно читатели хабра помогут, для того я и выложил загрузчики.
Я бы на вашем месте еще и на форумы xda-developers бы обратился.
Этот самый KingRoot умеет получать root при заблокированном загрузчике. Как это ему удается?
Работает так же как и другие ему подобные: Прогоняет проверку по известным эксплоитам.
В Framaroot можно было выбирать конкретный эксплоитам, в KingRoot это делается автоматически.
Этот самый KingRoot умеет получать root при заблокированном загрузчике. Как это ему удается?
загрузчик и доступ к разделу /system
это совершенно разные вещи. В моей стетье я описал как я смог получить read-write доступ к разделу /system
, но сломать загрузчик так и не удалось. Если устройство использует dm-verity (новые устройства используют эту защиту), то модификация раздела /system
невозможна. Либо возможна, но тогда при перезагрузке ты получишь кирпич.
Вопрос — сколько времени ушло на всё это копание? Навреняка, в процессе копания несколько раз руки опускались, но потом снова возникало желание «попробовать вот так»?
> P.P.S. Еще один специалист по мобильной ИБ, Justin Case, сказал, что он знает уязвимость, которой подвержены все современные процессоры Qualcomm, но раскрывать её детали он не будет.
Да-да, «я знаю кое-что о кое-ком, но никому не расскажу»
Как включать/отключать WiFi программными средствами?
Часто используется rfkill. Есть одноименная тулза, но куда проще заглянуть в /sys/class/rfkill
Тооооорт!
P.P.S. Еще один специалист по мобильной ИБ, Justin Case, сказал, что он знает уязвимость, которой подвержены все современные процессоры Qualcomm, но раскрывать её детали он не будет.
Видимо, бережёт лазейку на всякий случай.
А то по всем вопросам гугл предлагает какие-то странные форумы, где кучка подозрительных сумрачных гениев предлагает массе домохозяев скачать с файлопомойки откуда-то взятый бинарник.
вики врт тоже по сути «где кучка подозрительных сумрачных гениев предлагает массе домохозяев скачать с файлопомойки откуда-то взятый бинарник»
На 4pda может и есть какие-то подробности на 580 странице темы, но фиг это найдёшь среди остального.
P.P.S. Еще один специалист по мобильной ИБ, Justin Case, сказал, что он знает уязвимость, которой подвержены все современные процессоры Qualcomm, но раскрывать её детали он не будет.
Ещё бы, JCase продаёт софт для взлома загрузчиков разных устройств по отдельности по 25$. Было бы весьма странно, если бы он вдруг раскрыл секреты.
Понимая все риски, я решил прошить загрузчик от Brigadier на KC-S701.
А вот вместо этого лучше было бы пропатчить Bootloader KC-S701, переподписать и прошить.
Переподписать? А приватный ключ мне из публичного сотню лет брутфорсить?
Меня больше интересует системные функции. Но спасибо за наводку, вот, что скрывается за функцией 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
. Ну теперь то можно и автоматизировать отключение защиты.
Ломаем Android. Как глубока кроличья нора?