Чому не можна просто скопіювати бінарний код (технічна відповідь)


18

Я вкоренив декілька пристроїв Samsung, і основна "мета", так би мовити, здається, щоб ввести suбінарний код/system/xbin і встановити Superuser.apk .

Моє запитання: чому потрібно перестрибувати всі ці обручі, щоб викорінити телефон (встановити користувальницьке відновлення та флеш заздалегідь вкоренити ROM або використовувати поточну установку)? Не вдалося просто завантажити попередньо складений su, перемістити його на SD-карту та запустити його через adb? Те, що, здається, робить ПЗУ «попередньо укоріненим», це те, що він має Суперусер і субінарний файл у відповідних системних шляхах. Я не бачу, чому це так важливо, з чого воно походить /system/xbin.

Відповіді:


24

Субопристрій потребує як виконання, так і встановленого дозволу біт дозволу. Перше потрібно для виконання файлу, а друге - це те, що він автоматично працює з правами власника файлу (встановити ідентифікатор користувача або setuid. У цьому випадку власник має root. Детальніше читайте тут ).

Файли на зовнішній сховищі не мають встановлених бітів дозволу для встановлення та встановлення, і його не можна надати без кореневих прав. Зауважте також, що SD-карта встановлена ​​прапором 'noexec', щоб запобігти виконанню виконання, як правило:

shell@android:/sdcard $ ./su
/system/bin/sh: ./su: can't execute: Permission denied
126|shell@android:/sdcard $ chmod 4755 su
Unable to chmod su: Operation not permitted
10|shell@android:/sdcard $ mount | grep /mnt/sdcard
/dev/block/mmcblk0p1 /mnt/sdcard vfat [...],noexec,[...]

В основному, тому ви не можете просто скопіювати suна SD-карту, а потім запустити її, щоб надати собі root.


Тож це єдине, що запобігає вкоріненню, той факт, що / sdcard не виконується, і ви не можете chmod? Після того, як су знаходиться у відповідному місці, де він може бути виконаний вашим золотим. Я б подумав, що буде шар безпеки, щоб хтось не міг просто працювати з су. На своєму сервері та вікні debian я не можу просто запустити su як звичайний користувач, мені буде запропоновано пароль. Я думаю, що припущення полягає в тому, що якщо можна встановити su, вони можуть перезаписати тіньовий файл, щоб змінити пароль?
user974896

3
@ user974896: Ну, а несистемному користувачеві більше ніде не можна сказати, що він може бути виконаний, а в Android взагалі немає passwdабо shadowфайлів. Вам досить буквально потрібен корінь, щоб помістити його suу виконуваний файл, саме тому методи вкорінення або передбачають використання ескалації привілеїв, або потрапляння в користувацьке відновлення (де всі ставки в основному виключаються).
eldarerathis

Так. Це відповідь.
Android Quesito

3
@ user974896: крім встановленого / sdcard noexec, системний виклик setuid можна викликати лише тоді, коли біт дозволу suid встановлений у виконуваному файлі, а системний виклик chown та chmod дозволить root встановлювати лише встановлений біт файлу що належить root (фактично, тільки root може створити виконуваний файл, який може працювати з правами root). Будь-який може зателефонувати на su, але якщо абонент не дозволить це зробити в базі даних Superuser (або в традиційному Linux, в базі даних passwd / shadow), виклик не вдасться. Лише додаток Superuser (і привілейовані процеси) можуть змінювати базу даних Superuser.
Лі Лі Райан

3
@ user974896: Окрім звичайної системи безпеки в Android, в якій кожен додаток dalvik працює як власний користувач, це означає, що програми, які лише в додатковому списку Superuser, можуть швидко перерости в корінь без підказки, всі інші отримають відмову (якщо це буде у чорному списку) або призведе до того, що Superuser запросить користувача на дозвіл.
Лежи Райан

5

Укорінення передбачає використання слабких сторін залежно від версії андроїда, отже, " перестрибуйте всі обручі, щоб викорінити телефон "

Це куряче-яєчне!

Для того, щоб використовувати root, вам потрібен незахищений демон adb (тобто можливість перезарядки /system) на слухавці, а для того, щоб мати незахищений adb, вам потрібен root! А також вам потрібен розблокований завантажувач.

Подивіться на один експлоїт під назвою ZergRush знайти на GitHub; функція, що цікавить, називається, do_fault()коли робиться спроба "зламати" кадр стека voldдемона шляхом підключення до належної йому труби, і призвести до краху, перезаписавши покажчик стека, щоб вказати на скопійоване версія оболонки, з boomshякої потім працює /data/local/tmp.

Прочитавши джерело, тепер ви зрозумієте, чому копіювання suдвійкового файлу недостатньо для того, щоб слухавка «вкорінилася» і чому обручі потрібно проскакувати. А також, оскільки виконуваний біт на рівні файлової системи для SDcard заблокований, тому не заходьте туди - це є з очевидних причин! :)


Дякую за посилання, я їх прочитаю пізніше. Так що навіть якщо sdcard було зафіксовано 777 з фабрики, я все одно не зміг би отримати root, просто завантаживши його та виконавши?
user974896

1
правильно! Не йдіть! Це не робить іоти різниці, і оскільки встановлений на заводі ПЗУ захистить вам потрібний корінь, щоб досягти цього - chmodдодавання дозволів SDcard на це! :)
t0mm13b

1
Ну, що робить su так особливим, якщо він в / system / xbin? Якщо ви ввели оболонку adb (або запустили додаток як звичайний користувач), ви непривітні користувач. Чому виконання su, коли він знаходиться в / system / xbin, змушує вас викорінювати коріння на відміну від запуску в нашій теоретично chmod 777 / sdcard?
user974896

/system/xbinце каталог, куди потрапляють утиліти зайнятої скриньки , і ... у кореневій трубці, видаючи це, echo $PATHвийде / sbin: / vendor / bin: / system / sbin: / system / bin: / system / xbin <- помічайте це! Це на шляху! Для того, щоб це було там, вам потрібно коріння, отже, безліч курячих і яєчних ситуацій ...: D
t0mm13b

Так, я знаю, що це відбувається за замовчуванням. Що я маю на увазі, це те, що настільки особливе в його запуску. Навіщо виконувати ./su в / sdcard /, / data /, або будь-який потрібний некорінний каталог, не працює, припускаючи, що фабрика постачала ПЗУ з каталогом chmodded на рівні 777. Що я в основному маю на увазі, це єдине, що не зупиняє завантаження. і працює ./su - це той факт, що каталоги, в яких користувач, що не має права коренерів, може це зробити, не виконуються або є більша картина.
user974896
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.