124 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Shizuku Privileged API
{{#include ../../banners/hacktricks-training.md}}
Shizuku एक ओपन-सोर्स सेवा है जो **`app_process` का उपयोग करके एक विशेषाधिकार प्राप्त Java प्रक्रिया उत्पन्न करती है** और चयनित **Android सिस्टम APIs को Binder के माध्यम से उजागर करती है**। चूंकि प्रक्रिया को उसी **`shell` UID क्षमताओं के साथ लॉन्च किया जाता है जो ADB उपयोग करता है**, कोई भी एप्लिकेशन (या टर्मिनल) जो निर्यातित AIDL इंटरफेस से बंधता है, कई कार्य कर सकता है जो सामान्यतः **`WRITE_SECURE_SETTINGS`, `INSTALL_PACKAGES`, `/data` के अंदर फ़ाइल I/O** आदि की आवश्यकता होती है - **डिवाइस को रूट किए बिना**
विशिष्ट उपयोग के मामले:
* बिना रूट किए हैंडसेट से सुरक्षा ऑडिटिंग
* बloatware हटाना / सिस्टम ऐप्स को डिब्लोट करना
* ब्लू-टीम/DFIR के लिए लॉग, वाई-फाई कुंजी, प्रक्रिया और सॉकेट जानकारी एकत्र करना
* कस्टम ऐप्स या शेल स्क्रिप्ट से डिवाइस कॉन्फ़िगरेशन स्वचालित करना
---
## 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
```
वही स्क्रिप्ट **नेटवर्क 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 सेटिंग्स स्क्रीन **“Use Shizuku in terminal apps”** को प्रदर्शित करती है। इसे सक्षम करने पर *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` (या एंडपॉइंट सुरक्षा नियम) इसकी उपस्थिति का पता लगाता है।
3. क्षमताएँ उस पर सीमित हैं जो `shell` उपयोगकर्ता पहले से कर सकता है - यह **रूट** नहीं है।
संवेदनशील APIs जो `system` या `root` उपयोगकर्ता की आवश्यकता होती हैं, अभी भी अप्राप्य हैं।
4. सत्र **रिबूट** के बाद जीवित नहीं रहते जब तक डिवाइस रूटेड न हो और Shizuku को स्टार्टअप डेमॉन के रूप में कॉन्फ़िगर न किया गया हो।
---
## 5. शमन
* उत्पादन उपकरणों पर USB/वायरलेस डिबगिंग को बंद करें।
* `moe.shizuku.privileged.api` को उजागर करने वाली बाइंडर सेवाओं की निगरानी करें।
* unmanaged एप्लिकेशनों से AIDL इंटरफेस को ब्लॉक करने के लिए SELinux नीतियों (Android enterprise) का उपयोग करें।
---
## संदर्भ
- [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}}