mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
124 lines
5.4 KiB
Markdown
124 lines
5.4 KiB
Markdown
# 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}}
|