Shizuku Privileged API
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Shizuku è un servizio open-source che crea un processo Java privilegiato utilizzando app_process
ed espone selezionate API di sistema Android tramite Binder. Poiché il processo viene avviato con le stesse capacità UID shell
che utilizza ADB, qualsiasi applicazione (o terminale) che si collega all'interfaccia AIDL esportata può eseguire molte azioni che normalmente richiedono WRITE_SECURE_SETTINGS
, INSTALL_PACKAGES
, operazioni di file I/O all'interno di /data
, ecc. – senza rootare il dispositivo.
Casi d'uso tipici:
- Audit di sicurezza da un dispositivo non rootato
- Rimozione di bloatware / debloating delle app di sistema
- Raccolta di log, chiavi Wi-Fi, informazioni su processi e socket per blue-team/DFIR
- Automazione della configurazione del dispositivo da app personalizzate o script shell
1. Avvio del servizio privilegiato
moe.shizuku.privileged.api
può essere avviato in tre modi diversi – il servizio Binder risultante si comporta allo stesso modo in tutti e tre.
1.1 ADB wireless (Android 11+)
- Abilitare Opzioni sviluppatore ➜ Debugging wireless e accoppiare il dispositivo.
- All'interno dell'app Shizuku selezionare “Avvia tramite debugging wireless” e copiare il codice di accoppiamento.
- Il servizio sopravvive fino al successivo riavvio (le sessioni di debugging wireless vengono cancellate al boot).
1.2 USB / ADB locale 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
Lo stesso script può essere eseguito su una connessione network ADB (adb connect <IP>:5555
).
1.3 Dispositivi rootati
Se il dispositivo è già rootato, eseguire:
su -c sh /data/adb/shizuku/start.sh
1.4 Verificare che sia in esecuzione
adb shell dumpsys activity service moe.shizuku.privileged.api | head
Un avvio riuscito restituisce Running services (1)
insieme al PID del processo privilegiato.
2. Binding da un'applicazione
Le app di terze parti hanno solo bisogno del seguente all'interno del loro AndroidManifest.xml
:
<uses-permission android:name="moe.shizuku.manager.permission.API"/>
A runtime ottengono il binder:
IBinder binder = ShizukuProvider.getBinder();
IPackageManager pm = IPackageManager.Stub.asInterface(binder);
Da questo momento l'app può invocare qualsiasi metodo che l'utente shell
può chiamare – per esempio :
pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null);
Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1);
Una lista curata di oltre 170 app abilitate per Shizuku è mantenuta su awesome-shizuku.
3. Rish – shell elevata all'interno di Termux
La schermata delle impostazioni di Shizuku espone “Usa Shizuku nelle app terminali”. Abilitandola, viene scaricato 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 Comandi utili dalla shell rish
- Elenca i processi in esecuzione di un dato pacchetto:
ps -A | grep com.facebook.katana
- Enumera i socket in ascolto e mappali ai pacchetti (ad es. 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 dei log di ogni applicazione:
logcat -d | grep -iE "(error|exception)"
- Leggi le credenziali Wi-Fi memorizzate (Android 11 +):
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
- Debloat di massa (esempio):
pm uninstall --user 0 com.miui.weather2
4. Considerazioni sulla sicurezza / rilevamento
- Shizuku ha bisogno di privilegi di debugging ADB, quindi Opzioni sviluppatore → Debugging USB/Wireless deve essere abilitato.
Le organizzazioni possono bloccare questo tramite un MDM o tramite
settings put global development_settings_enabled 0
. - Il servizio si registra con il nome
moe.shizuku.privileged.api
. Un sempliceadb shell service list | grep shizuku
(o regola di sicurezza dell'endpoint) ne rileva la presenza. - Le capacità sono limitate a ciò che l'utente
shell
può già fare – non è root. Le API sensibili che richiedono l'utentesystem
oroot
sono ancora inaccessibili. - Le sessioni non sopravvivono a un riavvio a meno che il dispositivo non sia rootato e Shizuku sia configurato come daemon di avvio.
5. Mitigazione
- Disabilita il debugging USB/Wireless sui dispositivi di produzione.
- Monitora i servizi Binder che espongono
moe.shizuku.privileged.api
. - Usa le politiche SELinux (Android enterprise) per bloccare l'interfaccia AIDL da applicazioni non gestite.
Riferimenti
- Blog – Shizuku: Sbloccare capacità avanzate di Android senza root
- Documentazione ufficiale di Shizuku
- awesome-shizuku – elenco delle app supportate
- shell rish (shell reverse-adb privilegiata)
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.