Shizuku Privileged API

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Shizuku je open-source servis koji pokreće privilegovani Java proces koristeći app_process i izlaže odabrane Android sistemske API-je preko Bindera. Pošto se proces pokreće sa istim shell UID sposobnostima koje koristi ADB, svaka aplikacija (ili terminal) koja se povezuje na izvezeni AIDL interfejs može izvršiti mnoge radnje koje obično zahtevaju WRITE_SECURE_SETTINGS, INSTALL_PACKAGES, ulaz/izlaz fajlova unutar /data, itd. – bez root-ovanja uređaja.

Tipični slučajevi upotrebe:

  • Bezbednosno audiranje sa uređaja koji nije root-ovan
  • Uklanjanje bloatware-a / debloating sistemskih aplikacija
  • Prikupljanje logova, Wi-Fi ključeva, informacija o procesima i soketima za plavi tim/DFIR
  • Automatizacija konfiguracije uređaja iz prilagođenih aplikacija ili shell skripti

1. Pokretanje privilegovanog servisa

moe.shizuku.privileged.api može se pokrenuti na tri različita načina – rezultantni Binder servis se ponaša isto u svim njima.

1.1 Bežični ADB (Android 11+)

  1. Omogućite Opcije za programere ➜ Bežično debagovanje i uparite uređaj.
  2. Unutar Shizuku aplikacije izaberite “Start via Wireless debugging” i kopirajte kod za uparivanje.
  3. Servis opstaje do sledećeg ponovnog pokretanja (sesije bežičnog debagovanja se brišu pri pokretanju).

1.2 USB / lokalni ADB one-liner

bash
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

Isti skript se može izvršiti preko network ADB veze (adb connect <IP>:5555).

1.3 Rootovani uređaji

Ako je uređaj već rootovan, pokrenite:

bash
su -c sh /data/adb/shizuku/start.sh

1.4 Proveravanje da li radi

bash
adb shell dumpsys activity service moe.shizuku.privileged.api | head

Uspešan početak vraća Running services (1) zajedno sa PID-om privilegovanog procesa.


2. Povezivanje iz aplikacije

Aplikacije trećih strana samo trebaju sledeće unutar svog AndroidManifest.xml:

xml
<uses-permission android:name="moe.shizuku.manager.permission.API"/>

U vreme izvršavanja dobijaju binder:

java
IBinder binder = ShizukuProvider.getBinder();
IPackageManager pm  = IPackageManager.Stub.asInterface(binder);

Od ovog trenutka aplikacija može pozvati bilo koju metodu koju shell korisnik može pozvati – na primer :

java
pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null);
Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1);

Kustoska lista od više od 170 aplikacija koje podržavaju Shizuku se održava na awesome-shizuku.


3. Rish – povišeni shell unutar Termux-a

Ekran podešavanja Shizuku otkriva “Koristi Shizuku u terminalnim aplikacijama”. Aktiviranje ove opcije preuzima rish (/data/local/tmp/rish).

bash
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 Korisne komande iz rish shell-a

  • Prikazivanje pokrenutih procesa datog paketa:
bash
ps -A | grep com.facebook.katana
  • Nabrajanje slušajućih soketa i mapiranje na pakete (npr. CVE-2019-6447 ES File Explorer):
bash
netstat -tuln
for pid in $(lsof -nP -iTCP -sTCP:LISTEN -t); do
printf "%s -> %s\n" "$pid" "$(cat /proc/$pid/cmdline)";
done
  • Ispisivanje logova svake aplikacije:
bash
logcat -d | grep -iE "(error|exception)"
  • Čitanje sačuvanih Wi-Fi kredencijala (Android 11 +):
bash
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
  • Masovno uklanjanje (primer):
bash
pm uninstall --user 0 com.miui.weather2

4. Bezbednosna razmatranja / detekcija

  1. Shizuku zahteva ADB debugging privilegije, stoga Developer Options → USB/Wireless debugging mora biti omogućeno. Organizacije mogu blokirati ovo putem MDM-a ili putem settings put global development_settings_enabled 0.
  2. Usluga se registruje pod imenom moe.shizuku.privileged.api. Jednostavna adb shell service list | grep shizuku (ili pravilo Endpoint Security) detektuje njeno prisustvo.
  3. Mogućnosti su ograničene na ono što korisnik shell već može da uradi – nije root. Osetljivi API-ji koji zahtevaju korisnika system ili root su i dalje nedostupni.
  4. Sesije ne preživljavaju restart osim ako uređaj nije root-ovan i Shizuku je konfigurisan kao daemon pri pokretanju.

5. Ublažavanje

  • Onemogućiti USB/Wireless debugging na proizvodnim uređajima.
  • Pratiti Binder usluge koje izlažu moe.shizuku.privileged.api.
  • Koristiti SELinux politike (Android enterprise) za blokiranje AIDL interfejsa iz neuredjenih aplikacija.

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks