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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
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+)
- Увімкніть Опції для розробників ➜ Безпровідне налагодження та спарте пристрій.
- У додатку Shizuku виберіть “Запустити через безпровідне налагодження” та скопіюйте код спарювання.
- Сервіс працює до наступного перезавантаження (сеанси безпровідного налагодження очищуються при завантаженні).
1.2 USB / локальний ADB однорядковий
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 Пристрої з рутом
Якщо пристрій вже має рут, виконайте:
su -c sh /data/adb/shizuku/start.sh
1.4 Перевірка, що він працює
adb shell dumpsys activity service moe.shizuku.privileged.api | head
Успішний старт повертає Running services (1)
разом з PID привілейованого процесу.
2. Прив'язка з додатку
Додатки третіх сторін потребують лише наступне в їхньому AndroidManifest.xml
:
<uses-permission android:name="moe.shizuku.manager.permission.API"/>
Під час виконання вони отримують зв'язувач:
IBinder binder = ShizukuProvider.getBinder();
IPackageManager pm = IPackageManager.Stub.asInterface(binder);
Від цього моменту додаток може викликати будь-який метод, який може викликати користувач shell
– наприклад :
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
).
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
- Перелік запущених процесів певного пакету:
ps -A | grep com.facebook.katana
- Перерахунок прослуховуючих сокетів та їх прив'язка до пакетів (наприклад, CVE-2019-6447 ES File Explorer):
netstat -tuln
for pid in $(lsof -nP -iTCP -sTCP:LISTEN -t); do
printf "%s -> %s\n" "$pid" "$(cat /proc/$pid/cmdline)";
done
- Вивантаження журналів кожного додатку:
logcat -d | grep -iE "(error|exception)"
- Читання збережених облікових даних Wi-Fi (Android 11 +):
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
- Масове видалення (приклад):
pm uninstall --user 0 com.miui.weather2
4. Заходи безпеки / виявлення
- Shizuku потребує привілеїв налагодження ADB, тому Параметри розробника → USB/Бездротове налагодження повинні бути увімкнені.
Організації можуть заблокувати це через MDM або за допомогою
settings put global development_settings_enabled 0
. - Сервіс реєструє себе під назвою
moe.shizuku.privileged.api
. Простийadb shell service list | grep shizuku
(або правило Endpoint Security) виявляє його присутність. - Можливості обмежені тим, що користувач
shell
вже може робити – це не root. Чутливі API, які вимагають користувачаsystem
абоroot
, все ще недоступні. - Сесії не переживають перезавантаження, якщо пристрій не має root-доступу, а Shizuku не налаштовано як демон запуску.
5. Пом'якшення
- Вимкніть USB/Бездротове налагодження на виробничих пристроях.
- Моніторинг сервісів Binder, які відкривають
moe.shizuku.privileged.api
. - Використовуйте політики SELinux (Android enterprise) для блокування інтерфейсу AIDL від неуправляємих додатків.
Посилання
- Blog – Shizuku: Unlocking Advanced Android Capabilities Without Root
- Shizuku Official Documentation
- awesome-shizuku – list of supported apps
- rish shell (privileged reverse-adb shell)
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.