Jak działa rootowanie?

23

Lub jak zrootować urządzenie bez rootera?

Instrukcje rootowania dla urządzeń z Androidem, które widziałem, mają zazwyczaj następującą postać:

  1. Ściągnij Gingerbreak.apk
  2. Uruchom Gingerbreak, kliknij „urządzenie root”
  3. Zauważ, że Superuser.apkzostał on magicznie zainstalowany, być może wraz z busyboxinnymi rzeczami i ciesz się swoją dobroczynnością.

To, co chcę wiedzieć, to: w jaki sposób dzieje się rootowanie? Co robi Gingerbreak?

Rozumiem końcowy rezultat rootowania:

  • su jest obecny i działa
  • Superuser.apk jest zainstalowany i kontroluje dostęp do su
  • Różne narzędzia są dostępne przez BusyBox (opcjonalnie?)

Wydaje mi się też, że rozumiem podstawową zasadę rozpoczęcia Gingerbreak - wykorzystuje on lukę w zabezpieczeniach związaną z eskalacją lokalnych uprawnień i wykorzystuje nowo odkryte uprawnienia do wdrażania Superuser i wszystkiego, co jest konieczne.

Tak więc, o ile nie mylę się co do powyższego zrozumienia, najważniejsze jest to, co robi instalator roota, aby wdrożyć i aktywować Superuser. Wydaje się, że samo umieszczenie Superuser.apkw odpowiednim miejscu nie wystarczyłoby - w jaki sposób można uzyskać dostęp do roota? W jaki sposób łączy się, aby moderować dostęp do innych aplikacji?

Co Gingerbreak robi po wykorzystaniu, aby umożliwić i zabezpieczyć dostęp do roota?

Michael Ekstrand
źródło

Odpowiedzi:

16

To, co robią APK i exploit (zazwyczaj), jest następujące:

  • APK umieszcza odpowiednie pliki we właściwym miejscu, aby uruchomić exploita
  • APK uruchamia exploita
  • Exploit próbuje uzyskać dostęp do roota
  • Jeśli się powiedzie, wykorzystaj remounts / system jako read-write i uruchom skrypt instalatora
  • Skrypt instalatora próbuje zainstalować binarny su i superużytkownik APK, a następnie uruchamia się ponownie

Na przykład na tej stronie opisano, w jaki sposób exploit rageagagecage próbuje zdobyć podwyższone uprawnienia.

Sparx
źródło
2
Dzięki. Myślę, że to zawęża moje prawdziwe pytanie - co dokładnie robi skrypt instalatora? Lub gdzie mogę znaleźć kopię jednego do przeczytania? Większość dokumentów, które widzę, są bardzo nieprzejrzyste - „pobierz ten APK, działa” z linkiem do jakiejś losowej witryny do udostępniania plików.
Michael Ekstrand
su pozwala na podniesienie uprawnień w środowiskach uniksopodobnych (na których oparty jest Android). Po zainstalowaniu pliku binarnego su aplikacje / skrypty mogą następnie używać poleceń su i sudo do uruchamiania i uzyskiwania dostępu do części systemu plików, które normalnie są ograniczone dla zwykłych użytkowników. Zasadniczo dlatego zrootuje się telefon - aby mieć dostęp do „ograniczonych” części systemu i wykonywać polecenia, których wykonywanie jest zabronione przez zwykłego użytkownika.
Sparx,
9

Po wielu kopaniach w końcu to rozgryzłem. Myliłem się co do magii - nie ma jej w skrypcie instalatora; wszystko, co musisz zrobić, to umieścić sui Superuser.apkbinaria we właściwym miejscu i ustawić ich uprawnienia. To naprawdę jest tak proste, jak upuszczanie plików na miejsce i ustawianie uprawnień. Bez magicznego okablowania.

Magia dzieje się w supliku binarnym (patrz źródło, a także to pytanie ). Myślałem (niepoprawnie), że suto standard su, i że w jakiś sposób wszystko zostało połączone, aby uzyskać umiarkowany dostęp do tego pliku binarnego Superuser.apk.

Źle. To, co faktycznie się dzieje, jest znacznie prostsze: Superuser zapewnia niestandardową implementację, suktóra uwierzytelnia dostęp przez Superuser i autoryzowaną bazę danych aplikacji.

Proces rootowania jest tak prosty, jak powiedział @Sparx. Wdrożone oprogramowanie zawiera magię.

Michael Ekstrand
źródło
Myślę, że brakuje w tym jednej ważnej rzeczy: susama w sobie nie jest wcale magią, jedyną magią jest to, że system operacyjny traktuje ją specjalnie. Wszystko, co musi zrobić, to zwrócić „OK” lub „Nie OK”, gdy system operacyjny zapyta, czy zezwolić określonej aplikacji na podniesienie uprawnień. Jeśli go brakuje lub zawsze zwraca „Nie OK”, normalne aplikacje nigdy nie mogą uzyskać uprawnień roota. Tak więc rootowanie jest w zasadzie procesem umieszczania pliku subinarnego, który może czasami zwrócić „OK”, w chronionej lokalizacji w systemie, co nie powinno na to pozwolić.
RomanSt
4
all that has to do is put the su and Superuser.apk binaries in the right place and set their permissionstak jakby to było łatwe bez exploita, exploit jest magią.
Alex
1
@Alex Niezupełnie. W szczególności starałem się dowiedzieć, co rooter robi po wykorzystaniu . W tym przypadku, ponieważ miałem dostęp do roota przez ADB, więc nie chciałem niepotrzebnie uruchamiać exploita.
Michael Ekstrand