Shizuku Privileged API
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Shizuku é um serviço de código aberto que cria um processo Java privilegiado usando app_process
e expõe APIs de sistema Android selecionadas via Binder. Como o processo é iniciado com as mesmas capacidades de UID shell
que o ADB usa, qualquer aplicativo (ou terminal) que se conecta à interface AIDL exportada pode realizar muitas ações que normalmente requerem WRITE_SECURE_SETTINGS
, INSTALL_PACKAGES
, operações de arquivo dentro de /data
, etc. – sem precisar fazer root no dispositivo.
Casos de uso típicos:
- Auditoria de segurança a partir de um dispositivo não enraizado
- Remoção de bloatware / debloating de aplicativos do sistema
- Coleta de logs, chaves de Wi-Fi, informações de processos e sockets para blue-team/DFIR
- Automação da configuração do dispositivo a partir de aplicativos personalizados ou scripts de shell
1. Iniciando o serviço privilegiado
moe.shizuku.privileged.api
pode ser iniciado de três maneiras diferentes – o serviço Binder resultante se comporta da mesma forma em todas elas.
1.1 ADB sem fio (Android 11+)
- Ative Opções de Desenvolvedor ➜ Depuração sem fio e emparelhe o dispositivo.
- Dentro do aplicativo Shizuku, selecione “Iniciar via depuração sem fio” e copie o código de emparelhamento.
- O serviço persiste até o próximo reinício (as sessões de depuração sem fio são limpas na inicialização).
1.2 USB / linha de comando ADB local
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
O mesmo script pode ser executado sobre uma conexão ADB de rede (adb connect <IP>:5555
).
1.3 Dispositivos com root
Se o dispositivo já estiver com root, execute:
su -c sh /data/adb/shizuku/start.sh
1.4 Verificando se está em execução
adb shell dumpsys activity service moe.shizuku.privileged.api | head
Um início bem-sucedido retorna Running services (1)
junto com o PID do processo privilegiado.
2. Vinculação de um aplicativo
Aplicativos de terceiros só precisam do seguinte dentro de seu AndroidManifest.xml
:
<uses-permission android:name="moe.shizuku.manager.permission.API"/>
Em tempo de execução, eles obtêm o binder:
IBinder binder = ShizukuProvider.getBinder();
IPackageManager pm = IPackageManager.Stub.asInterface(binder);
A partir deste momento, o aplicativo pode invocar qualquer método que o shell
user possa chamar – por exemplo :
pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null);
Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1);
Uma lista selecionada de mais de 170 aplicativos habilitados para Shizuku é mantida em awesome-shizuku.
3. Rish – shell elevado dentro do Termux
A tela de configurações do Shizuku expõe “Usar Shizuku em aplicativos de terminal”. Habilitá-lo baixa 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 Comandos úteis do shell rish
- Listar processos em execução de um pacote específico:
ps -A | grep com.facebook.katana
- Enumerar sockets de escuta e mapeá-los para pacotes (por exemplo, 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
- Despejar os logs de cada aplicativo:
logcat -d | grep -iE "(error|exception)"
- Ler credenciais de Wi-Fi armazenadas (Android 11 +):
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
- Desinstalação em massa (exemplo):
pm uninstall --user 0 com.miui.weather2
4. Considerações de segurança / detecção
- Shizuku precisa de privilégios de depuração ADB, portanto, Opções do desenvolvedor → Depuração USB/sem fio deve estar ativada.
Organizações podem bloquear isso através de um MDM ou via
settings put global development_settings_enabled 0
. - O serviço se registra sob o nome
moe.shizuku.privileged.api
. Um simplesadb shell service list | grep shizuku
(ou regra de segurança de endpoint) detecta sua presença. - As capacidades são limitadas ao que o usuário
shell
já pode fazer – não é root. APIs sensíveis que requerem o usuáriosystem
ouroot
ainda são inacessíveis. - Sessões não sobrevivem a uma reinicialização a menos que o dispositivo esteja rooteado e Shizuku esteja configurado como um daemon de inicialização.
5. Mitigação
- Desativar a depuração USB/sem fio em dispositivos de produção.
- Monitorar serviços Binder que expõem
moe.shizuku.privileged.api
. - Usar políticas SELinux (Android enterprise) para bloquear a interface AIDL de aplicativos não gerenciados.
Referências
- Blog – Shizuku: Desbloqueando Capacidades Avançadas do Android Sem Root
- Documentação Oficial do Shizuku
- awesome-shizuku – lista de aplicativos suportados
- shell rish (shell reverso-adb privilegiado)
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.