124 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Shizuku Privileged API
{{#include ../../banners/hacktricks-training.md}}
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](https://github.com/timschneeb/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
- [Blog Shizuku: Otključavanje naprednih Android mogućnosti bez root-a](https://www.mobile-hacker.com/2025/07/14/shizuku-unlocking-advanced-android-capabilities-without-root/)
- [Shizuku zvanična dokumentacija](https://shizuku.rikka.app/)
- [awesome-shizuku lista podržanih aplikacija](https://github.com/timschneeb/awesome-shizuku)
- [rish shell (privilegovan reverse-adb shell)](https://github.com/RikkaApps/Shizuku/blob/master/RISH.md)
{{#include ../../banners/hacktricks-training.md}}