Shizuku Privileged API

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

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 <IP>: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
<uses-permission android:name="moe.shizuku.manager.permission.API"/>

Під час виконання вони отримують зв'язувач:

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.


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 "<ConfigKey>"
  • Масове видалення (приклад):
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 від неуправляємих додатків.

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks