124 lines
5.7 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, **`app_process`** kullanarak ayrıcalıklı bir Java süreci **oluşturan** ve seçilen **Android sistem API'lerini Binder üzerinden açığa çıkaran**ık kaynaklı bir hizmettir. Süreç, ADB'nin kullandığıyla aynı **`shell` UID yetenekleriyle** başlatıldığından, dışa aktarılan AIDL arayüzüne bağlanan herhangi bir uygulama (veya terminal), genellikle **`WRITE_SECURE_SETTINGS`, `INSTALL_PACKAGES`, `/data` içinde dosya I/O** gibi işlemleri gerçekleştirebilir **cihazı rootlamadan**.
Tipik kullanım senaryoları:
* Rootlanmamış bir cihazdan güvenlik denetimi
* Bloatware kaldırma / sistem uygulamalarını debloat etme
* Blue-team/DFIR için günlükler, Wi-Fi anahtarları, süreç ve soket bilgileri toplama
* Özel uygulamalar veya shell betikleri aracılığıyla cihaz yapılandırmasını otomatikleştirme
---
## 1. Ayrıcalıklı hizmeti başlatma
`moe.shizuku.privileged.api`, üç farklı şekilde başlatılabilir sonuçta oluşan Binder hizmeti hepsinde aynı şekilde davranır.
### 1.1 Kablosuz ADB (Android 11+)
1. **Geliştirici Seçenekleri ➜ Kablosuz hata ayıklama**'yı etkinleştir ve cihazı eşleştir.
2. Shizuku uygulaması içinde **“Kablosuz hata ayıklama ile başlat”** seçeneğini seç ve eşleştirme kodunu kopyala.
3. Hizmet, bir sonraki yeniden başlatmaya kadar devam eder (kablosuz hata ayıklama oturumları önyüklemede temizlenir).
### 1.2 USB / yerel ADB tek satır
```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
```
Aynı script, **network ADB** bağlantısı üzerinden çalıştırılabilir (`adb connect <IP>:5555`).
### 1.3 Rootlu cihazlar
Eğer cihaz zaten rootlanmışsa şunu çalıştırın:
```bash
su -c sh /data/adb/shizuku/start.sh
```
### 1.4 Çalıştığını Doğrulama
```bash
adb shell dumpsys activity service moe.shizuku.privileged.api | head
```
Başarılı bir başlangıç, `Running services (1)` ile birlikte ayrıcalıklı sürecin PID'sini döndürür.
---
## 2. Bir uygulamadan bağlanma
Üçüncü taraf uygulamaların yalnızca `AndroidManifest.xml` dosyalarında aşağıdakilere ihtiyacı vardır:
```xml
<uses-permission android:name="moe.shizuku.manager.permission.API"/>
```
Çalışma zamanında binder'ı elde ederler:
```java
IBinder binder = ShizukuProvider.getBinder();
IPackageManager pm = IPackageManager.Stub.asInterface(binder);
```
Bu andan itibaren uygulama, **`shell` kullanıcısının** çağırabileceği herhangi bir yöntemi çağırabilir örneğin:
```java
pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null);
Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1);
```
**170'ten fazla Shizuku destekli uygulamanın** derlenmiş listesi [awesome-shizuku](https://github.com/timschneeb/awesome-shizuku) adresinde bulunmaktadır.
---
## 3. Rish Termux içinde yükseltilmiş shell
Shizuku ayarları ekranı **“Terminal uygulamalarında Shizuku'yu kullan”** seçeneğini sunar. Bunu etkinleştirmek *rish* (`/data/local/tmp/rish`) indirir.
```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 Kullanışlı komutlar rish shell'den
* Verilen bir paketin çalışan süreçlerini listele:
```bash
ps -A | grep com.facebook.katana
```
* Dinleyen soketleri listele ve bunları paketlere eşle:
```bash
netstat -tuln
for pid in $(lsof -nP -iTCP -sTCP:LISTEN -t); do
printf "%s -> %s\n" "$pid" "$(cat /proc/$pid/cmdline)";
done
```
* Her uygulamanın loglarını dök:
```bash
logcat -d | grep -iE "(error|exception)"
```
* Saklanan Wi-Fi kimlik bilgilerini oku (Android 11 +):
```bash
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
```
* Toplu debloat (örnek):
```bash
pm uninstall --user 0 com.miui.weather2
```
---
## 4. Güvenlik dikkate alındığında / tespit
1. Shizuku **ADB hata ayıklama** ayrıcalıklarına ihtiyaç duyar, bu nedenle _Geliştirici Seçenekleri → USB/Kablosuz hata ayıklama_ **etkinleştirilmelidir**.
Kuruluşlar bunu bir MDM aracılığıyla veya `settings put global development_settings_enabled 0` ile engelleyebilir.
2. Servis kendini `moe.shizuku.privileged.api` adı altında kaydeder.
Basit bir `adb shell service list | grep shizuku` (veya Endpoint Security kuralı) varlığını tespit eder.
3. Yetenekler, `shell` kullanıcısının zaten yapabileceği şeylerle sınırlıdır **root** değildir.
`system` veya `root` kullanıcısını gerektiren hassas API'ler hala erişilemez.
4. Oturumlar **bir yeniden başlatmada hayatta kalmaz**; cihaz köklü değilse ve Shizuku bir başlangıç daemon'u olarak yapılandırılmamışsa.
---
## 5. Azaltma
* Üretim cihazlarında USB/Kablosuz hata ayıklamayı devre dışı bırakın.
* `moe.shizuku.privileged.api`'yi açığa çıkaran Binder hizmetlerini izleyin.
* Yönetilmeyen uygulamalardan AIDL arayüzünü engellemek için SELinux politikalarını (Android enterprise) kullanın.
---
## Referanslar
- [Blog Shizuku: Root Olmadan Gelişmiş Android Yeteneklerini Açma](https://www.mobile-hacker.com/2025/07/14/shizuku-unlocking-advanced-android-capabilities-without-root/)
- [Shizuku Resmi Dokümantasyonu](https://shizuku.rikka.app/)
- [awesome-shizuku desteklenen uygulamaların listesi](https://github.com/timschneeb/awesome-shizuku)
- [rish shell (ayrılmış ters-adb shell)](https://github.com/RikkaApps/Shizuku/blob/master/RISH.md)
{{#include ../../banners/hacktricks-training.md}}