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