# Shizuku Privileged API {{#include ../../banners/hacktricks-training.md}} Shizuku - це відкритий сервіс, який **створює привілейований Java процес за допомогою `app_process`** і надає вибрані **API системи Android через Binder**. Оскільки процес запускається з тими ж **UID можливостями `shell`, які використовує ADB**, будь-який додаток (або термінал), що підключається до експортованого інтерфейсу AIDL, може виконувати багато дій, які зазвичай вимагають **`WRITE_SECURE_SETTINGS`, `INSTALL_PACKAGES`, доступу до файлів у `/data`,** тощо – **без рутування пристрою**. Типові випадки використання: * Аудит безпеки з не рутованого пристрою * Видалення непотрібних програм / деблокація системних додатків * Збір журналів, ключів Wi-Fi, інформації про процеси та сокети для blue-team/DFIR * Автоматизація конфігурації пристрою з кастомних додатків або shell-скриптів --- ## 1. Запуск привілейованого сервісу `moe.shizuku.privileged.api` можна запустити трьома різними способами – результуючий сервіс Binder поводиться однаково в усіх випадках. ### 1.1 Безпровідний ADB (Android 11+) 1. Увімкніть **Опції для розробників ➜ Безпровідне налагодження** та спарте пристрій. 2. У додатку Shizuku виберіть **“Запустити через безпровідне налагодження”** та скопіюйте код спарювання. 3. Сервіс працює до наступного перезавантаження (сеанси безпровідного налагодження очищуються при завантаженні). ### 1.2 USB / локальний ADB однорядковий ```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 ``` Той самий скрипт можна виконати через **network ADB** з'єднання (`adb connect :5555`). ### 1.3 Пристрої з рутом Якщо пристрій вже має рут, виконайте: ```bash su -c sh /data/adb/shizuku/start.sh ``` ### 1.4 Перевірка, що він працює ```bash adb shell dumpsys activity service moe.shizuku.privileged.api | head ``` Успішний старт повертає `Running services (1)` разом з PID привілейованого процесу. --- ## 2. Прив'язка з додатку Додатки третіх сторін потребують лише наступне в їхньому `AndroidManifest.xml`: ```xml ``` Під час виконання вони отримують зв'язувач: ```java IBinder binder = ShizukuProvider.getBinder(); IPackageManager pm = IPackageManager.Stub.asInterface(binder); ``` Від цього моменту додаток може викликати будь-який метод, який може викликати користувач **`shell`** – наприклад : ```java pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null); Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1); ``` Список з більш ніж **170 додатків, що підтримують Shizuku**, підтримується на [awesome-shizuku](https://github.com/timschneeb/awesome-shizuku). --- ## 3. Rish – підвищена оболонка всередині Termux Екран налаштувань Shizuku відкриває **“Використовувати Shizuku в термінальних додатках”**. Увімкнення цього завантажує *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 Корисні команди з оболонки rish * Перелік запущених процесів певного пакету: ```bash ps -A | grep com.facebook.katana ``` * Перерахунок прослуховуючих сокетів та їх прив'язка до пакетів (наприклад, **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 ``` * Вивантаження журналів кожного додатку: ```bash logcat -d | grep -iE "(error|exception)" ``` * Читання збережених облікових даних Wi-Fi (Android 11 +): ```bash cat /data/misc/wifi/WifiConfigStore.xml | grep -i "" ``` * Масове видалення (приклад): ```bash pm uninstall --user 0 com.miui.weather2 ``` --- ## 4. Заходи безпеки / виявлення 1. Shizuku потребує **привілеїв налагодження ADB**, тому _Параметри розробника → USB/Бездротове налагодження_ повинні бути **увімкнені**. Організації можуть заблокувати це через MDM або за допомогою `settings put global development_settings_enabled 0`. 2. Сервіс реєструє себе під назвою `moe.shizuku.privileged.api`. Простий `adb shell service list | grep shizuku` (або правило Endpoint Security) виявляє його присутність. 3. Можливості обмежені тим, що користувач `shell` вже може робити – це **не root**. Чутливі API, які вимагають користувача `system` або `root`, все ще недоступні. 4. Сесії **не переживають перезавантаження**, якщо пристрій не має root-доступу, а Shizuku не налаштовано як демон запуску. --- ## 5. Пом'якшення * Вимкніть USB/Бездротове налагодження на виробничих пристроях. * Моніторинг сервісів Binder, які відкривають `moe.shizuku.privileged.api`. * Використовуйте політики SELinux (Android enterprise) для блокування інтерфейсу AIDL від неуправляємих додатків. --- ## Посилання - [Blog – Shizuku: Unlocking Advanced Android Capabilities Without Root](https://www.mobile-hacker.com/2025/07/14/shizuku-unlocking-advanced-android-capabilities-without-root/) - [Shizuku Official Documentation](https://shizuku.rikka.app/) - [awesome-shizuku – list of supported apps](https://github.com/timschneeb/awesome-shizuku) - [rish shell (privileged reverse-adb shell)](https://github.com/RikkaApps/Shizuku/blob/master/RISH.md) {{#include ../../banners/hacktricks-training.md}}