mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
124 lines
7.5 KiB
Markdown
124 lines
7.5 KiB
Markdown
# 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 <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](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 "<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 від неуправляємих додатків.
|
||
|
||
---
|
||
## Посилання
|
||
|
||
- [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}}
|