Shizuku Privileged API

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Shizuku est un service open-source qui gĂ©nĂšre un processus Java privilĂ©giĂ© en utilisant app_process et expose des API systĂšme Android sĂ©lectionnĂ©es via Binder. Étant donnĂ© que le processus est lancĂ© avec les mĂȘmes capabilitĂ©s UID shell que celles utilisĂ©es par ADB, toute application (ou terminal) qui se lie Ă  l'interface AIDL exportĂ©e peut effectuer de nombreuses actions qui nĂ©cessitent normalement WRITE_SECURE_SETTINGS, INSTALL_PACKAGES, accĂšs aux fichiers dans /data, etc. – sans rooter l'appareil.

Cas d'utilisation typiques :

  • Audit de sĂ©curitĂ© depuis un appareil non rootĂ©
  • Suppression de bloatware / dĂ©sencombrement des applications systĂšme
  • Collecte de journaux, clĂ©s Wi-Fi, informations sur les processus et les sockets pour les Ă©quipes bleues/DFIR
  • Automatisation de la configuration de l'appareil depuis des applications personnalisĂ©es ou des scripts shell

1. Démarrer le service privilégié

moe.shizuku.privileged.api peut ĂȘtre dĂ©marrĂ© de trois maniĂšres diffĂ©rentes – le service Binder rĂ©sultant se comporte de la mĂȘme maniĂšre dans tous les cas.

1.1 ADB sans fil (Android 11+)

  1. Activez Options pour les dĂ©veloppeurs ➜ DĂ©bogage sans fil et associez l'appareil.
  2. Dans l'application Shizuku, sĂ©lectionnez “DĂ©marrer via le dĂ©bogage sans fil” et copiez le code d'association.
  3. Le service survit jusqu'au prochain redémarrage (les sessions de débogage sans fil sont effacées au démarrage).

1.2 USB / ligne de commande ADB locale

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

Le mĂȘme script peut ĂȘtre exĂ©cutĂ© via une connexion network ADB (adb connect <IP>:5555).

1.3 Appareils rootés

Si l'appareil est déjà rooté, exécutez :

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

1.4 Vérification de son fonctionnement

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

Un démarrage réussi renvoie Running services (1) ainsi que le PID du processus privilégié.


2. Liaison depuis une application

Les applications tierces n'ont besoin que de ce qui suit dans leur AndroidManifest.xml:

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

Au moment de l'exécution, ils obtiennent le binder :

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

À partir de ce moment, l'application peut invoquer n'importe quelle mĂ©thode que l'utilisateur shell peut appeler – par exemple :

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

Une liste soigneusement sélectionnée de plus de 170 applications compatibles avec Shizuku est maintenue sur awesome-shizuku.


3. Rish – shell Ă©levĂ© Ă  l'intĂ©rieur de Termux

L'Ă©cran des paramĂštres de Shizuku expose “Utiliser Shizuku dans les applications terminal”. L'activer tĂ©lĂ©charge 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 Commandes utiles du shell rish

  • Lister les processus en cours d'un package donnĂ© :
bash
ps -A | grep com.facebook.katana
  • ÉnumĂ©rer les sockets Ă  l'Ă©coute et les mapper aux packages (par exemple, 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
  • Dump des logs de chaque application :
bash
logcat -d | grep -iE "(error|exception)"
  • Lire les identifiants Wi-Fi stockĂ©s (Android 11 +) :
bash
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
  • DĂ©bloat en masse (exemple) :
bash
pm uninstall --user 0 com.miui.weather2

4. Considérations de sécurité / détection

  1. Shizuku nĂ©cessite des privilĂšges ADB debugging, donc Options pour les dĂ©veloppeurs → DĂ©bogage USB/Sans fil doit ĂȘtre activĂ©. Les organisations peuvent bloquer cela via un MDM ou avec settings put global development_settings_enabled 0.
  2. Le service s'enregistre sous le nom moe.shizuku.privileged.api. Une simple adb shell service list | grep shizuku (ou rÚgle de sécurité des points de terminaison) détecte sa présence.
  3. Les capacitĂ©s sont limitĂ©es Ă  ce que l'utilisateur shell peut dĂ©jĂ  faire – ce n'est pas root. Les API sensibles qui nĂ©cessitent l'utilisateur system ou root restent inaccessibles.
  4. Les sessions ne survivent pas à un redémarrage à moins que l'appareil ne soit rooté et que Shizuku soit configuré comme un démon de démarrage.

5. Atténuation

  • DĂ©sactiver le dĂ©bogage USB/Sans fil sur les appareils de production.
  • Surveiller les services Binder exposant moe.shizuku.privileged.api.
  • Utiliser des politiques SELinux (Android enterprise) pour bloquer l'interface AIDL des applications non gĂ©rĂ©es.

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks