Shizuku Privileged API
Reading time: 5 minutes
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Shizuku to usługa open-source, która uruchamia uprzywilejowany proces Java za pomocą app_process
i udostępnia wybrane API systemu Android przez Binder. Ponieważ proces jest uruchamiany z tymi samymi uprawnieniami UID shell
, które wykorzystuje ADB, każda aplikacja (lub terminal), która łączy się z eksportowanym interfejsem AIDL, może wykonywać wiele działań, które normalnie wymagają WRITE_SECURE_SETTINGS
, INSTALL_PACKAGES
, operacji I/O w /data
, itd. – bez rootowania urządzenia.
Typowe przypadki użycia:
- Audyt bezpieczeństwa z nie-rootowanego urządzenia
- Usuwanie bloatware / debloating aplikacji systemowych
- Zbieranie logów, kluczy Wi-Fi, informacji o procesach i gniazdach dla blue-team/DFIR
- Automatyzacja konfiguracji urządzenia z niestandardowych aplikacji lub skryptów powłoki
1. Rozpoczynanie usługi uprzywilejowanej
moe.shizuku.privileged.api
można uruchomić na trzy różne sposoby – wynikowa usługa Binder zachowuje się tak samo we wszystkich z nich.
1.1 Bezprzewodowy ADB (Android 11+)
- Włącz Opcje dewelopera ➜ Debugowanie bezprzewodowe i sparuj urządzenie.
- W aplikacji Shizuku wybierz „Rozpocznij przez debugowanie bezprzewodowe” i skopiuj kod parowania.
- Usługa przetrwa do następnego restartu (sesje debugowania bezprzewodowego są czyszczone po uruchomieniu).
1.2 USB / lokalny ADB w jednej linii
adb push start.sh \
/storage/emulated/0/Android/data/moe.shizuku.privileged.api/
# spawn the privileged process
adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh
Ten sam skrypt można wykonać przez połączenie network ADB (adb connect <IP>:5555
).
1.3 Urządzenia z rootem
Jeśli urządzenie jest już zrootowane, uruchom:
su -c sh /data/adb/shizuku/start.sh
1.4 Weryfikacja, że działa
adb shell dumpsys activity service moe.shizuku.privileged.api | head
Udany start zwraca Running services (1)
razem z PID procesu z uprawnieniami.
2. Wiązanie z aplikacją
Aplikacje innych firm potrzebują tylko następującego w swoim AndroidManifest.xml
:
<uses-permission android:name="moe.shizuku.manager.permission.API"/>
W czasie wykonywania uzyskują binder:
IBinder binder = ShizukuProvider.getBinder();
IPackageManager pm = IPackageManager.Stub.asInterface(binder);
Od tego momentu aplikacja może wywoływać dowolną metodę, którą może wywołać użytkownik shell
– na przykład:
pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null);
Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1);
Zarządzana lista ponad 170 aplikacji z obsługą Shizuku jest dostępna na awesome-shizuku.
3. Rish – podniesiona powłoka w Termux
Ekran ustawień Shizuku udostępnia „Użyj Shizuku w aplikacjach terminalowych”. Włączenie tej opcji pobiera rish (/data/local/tmp/rish
).
pkg install wget
wget https://rikka.app/rish/latest -O rish && chmod +x rish
# start elevated shell (inherits the binder connection)
./rish
whoami # ➜ shell
id # uid=2000(shell) gid=2000(shell) groups=... context=u:r:shell:s0
3.1 Przydatne polecenia z powłoki rish
- Wyświetl uruchomione procesy danego pakietu:
ps -A | grep com.facebook.katana
- Wymień gniazda nasłuchujące i przypisz je do pakietów (np. CVE-2019-6447 ES File Explorer):
netstat -tuln
for pid in $(lsof -nP -iTCP -sTCP:LISTEN -t); do
printf "%s -> %s\n" "$pid" "$(cat /proc/$pid/cmdline)";
done
- Zrzutuj logi każdej aplikacji:
logcat -d | grep -iE "(error|exception)"
- Odczytaj zapisane dane uwierzytelniające Wi-Fi (Android 11 +):
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
- Masowe usuwanie (przykład):
pm uninstall --user 0 com.miui.weather2
4. Rozważania dotyczące bezpieczeństwa / wykrywania
- Shizuku potrzebuje uprawnień do debugowania ADB, dlatego Opcje dewelopera → Debugowanie USB/bezprzewodowe muszą być włączone.
Organizacje mogą to zablokować za pomocą MDM lub poprzez
settings put global development_settings_enabled 0
. - Usługa rejestruje się pod nazwą
moe.shizuku.privileged.api
. Prosteadb shell service list | grep shizuku
(lub zasada bezpieczeństwa punktu końcowego) wykrywa jej obecność. - Możliwości są ograniczone do tego, co użytkownik
shell
może już zrobić – nie jest to root. Wrażliwe API, które wymagają użytkownikasystem
lubroot
, są nadal niedostępne. - Sesje nie przetrwają ponownego uruchomienia chyba, że urządzenie jest zrootowane, a Shizuku jest skonfigurowane jako demon startowy.
5. Łagodzenie
- Wyłącz debugowanie USB/bezprzewodowe na urządzeniach produkcyjnych.
- Monitoruj usługi Binder, które udostępniają
moe.shizuku.privileged.api
. - Użyj polityk SELinux (Android enterprise), aby zablokować interfejs AIDL z niezarządzanych aplikacji.
Odniesienia
- Blog – Shizuku: Odblokowywanie zaawansowanych możliwości Androida bez roota
- Oficjalna dokumentacja Shizuku
- awesome-shizuku – lista wspieranych aplikacji
- powłoka rish (uprzywilejowana powłoka reverse-adb)
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.