Shizuku Privileged API

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

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 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

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin