5.4 KiB
Raw Blame History

Shizuku Privileged API

{{#include ../../banners/hacktricks-training.md}}

Shizuku is 'n oop-bron diens wat 'n bevoorregte Java-proses genereer met behulp van app_process en stel geselekteerde Android-stelsels API's oor Binder beskikbaar. Omdat die proses met dieselfde shell UID vermoëns wat ADB gebruik, enige toepassing (of terminal) wat aan die uitgevoerde AIDL-koppelvlak bind, kan baie aksies uitvoer wat normaalweg WRITE_SECURE_SETTINGS, INSTALL_PACKAGES, lêer I/O binne /data, ens. vereis sonder om die toestel te root.

Tipiese gebruiksgevalle:

  • Sekuriteitsouditing vanaf 'n nie-ge-root toestel
  • Verwydering van bloatware / debloating stelsels toepassings
  • Versameling van logs, Wi-Fi sleutels, proses en sokketinligting vir blue-team/DFIR
  • Outomatisering van toestelkonfigurasie vanaf pasgemaakte toepassings of shell skripte

1. Starting the privileged service

moe.shizuku.privileged.api kan op drie verskillende maniere begin word die resulterende Binder-diens gedra dieselfde in al drie.

1.1 Wireless ADB (Android 11+)

  1. Aktiveer Ontwikkelaarsopsies ➜ Draadlose foutopsporing en koppel die toestel.
  2. Binne die Shizuku-toepassing kies “Begin via Draadlose foutopsporing” en kopieer die paar kode.
  3. Die diens oorleef tot die volgende herlaai (draadlose-foutopsporing sessies word op opstart skoongemaak).

1.2 USB / local ADB one-liner

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

Die dieselfde skrip kan oor 'n network ADB-verbinding uitgevoer word (adb connect <IP>:5555).

1.3 Geroote toestelle

As die toestel reeds geroote is, voer uit:

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

1.4 Verifieer dat dit loop

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

'n Succesvolle begin keer Running services (1) saam met die PID van die bevoorregte proses terug.


2. Binding vanaf 'n toepassing

Derdeparty-apps het net die volgende binne hul AndroidManifest.xml nodig:

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

By uitvoering verkry hulle die binder:

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

Vanaf hierdie oomblik kan die app enige metode aanroep wat die shell gebruiker mag aanroep byvoorbeeld :

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

'n Gekure lys van meer as 170 Shizuku-geaktiveerde toepassings word by awesome-shizuku onderhou.


3. Rish verhoogde skulp binne Termux

Die Shizuku instellingskerm stel “Gebruik Shizuku in terminal toepassings” bloot. Om dit te aktiveer, laai dit rish (/data/local/tmp/rish) af.

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 Nuttige opdragte van die rish-skaal

  • Lys lopende prosesse van 'n gegewe pakket:
ps -A | grep com.facebook.katana
  • Enumereer luisterende sokke en koppel hulle aan pakkette (bv. 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
  • Dump elke toepassing se logs:
logcat -d | grep -iE "(error|exception)"
  • Lees gestoor Wi-Fi geloofsbriewe (Android 11 +):
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
  • Massiewe debloat (voorbeeld):
pm uninstall --user 0 com.miui.weather2

4. Sekuriteits oorwegings / opsporing

  1. Shizuku benodig ADB-foutopsporing regte, daarom moet Ontwikkelaar Opsies → USB/Draadlose foutopsporing geaktiveer wees. Organisasies kan dit blokkeer deur 'n MDM of via settings put global development_settings_enabled 0.
  2. Die diens registreer homself onder die naam moe.shizuku.privileged.api. 'n Eenvoudige adb shell service list | grep shizuku (of Endpoint Security-reël) detecteer sy teenwoordigheid.
  3. Vermoëns is beperk tot wat die shell gebruiker reeds kan doen dit is nie root nie. Sensitiewe API's wat die system of root gebruiker vereis, is steeds ontoeganklik.
  4. Sessies oorleef nie 'n herbegin nie, tensy die toestel ge-root is en Shizuku as 'n opstart-daeemon geconfigureer is.

5. Versagting

  • Deaktiveer USB/Draadlose foutopsporing op produksietoestelle.
  • Monitor vir Binder dienste wat moe.shizuku.privileged.api blootstel.
  • Gebruik SELinux-beleide (Android enterprise) om die AIDL-koppelvlak van nie-gemandeerde toepassings te blokkeer.

Verwysings

{{#include ../../banners/hacktricks-training.md}}