Shizuku Privileged API
Reading time: 6 minutes
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.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Το Shizuku είναι μια υπηρεσία ανοιχτού κώδικα που δημιουργεί μια προνομιούχα διαδικασία Java χρησιμοποιώντας το app_process
και εκθέτει επιλεγμένα Android system APIs μέσω Binder. Επειδή η διαδικασία εκκινείται με τις ίδιες ικανότητες UID shell
που χρησιμοποιεί το ADB, οποιαδήποτε εφαρμογή (ή τερματικό) που συνδέεται στη εξαγόμενη διεπαφή AIDL μπορεί να εκτελέσει πολλές ενέργειες που κανονικά απαιτούν WRITE_SECURE_SETTINGS
, INSTALL_PACKAGES
, είσοδο/έξοδο αρχείων μέσα στο /data
, κ.λπ. – χωρίς να χρειάζεται να κάνετε root τη συσκευή.
Τυπικές περιπτώσεις χρήσης:
- Ασφαλής επιθεώρηση από μια συσκευή χωρίς root
- Αφαίρεση bloatware / αποσυμπίεση συστημικών εφαρμογών
- Συλλογή καταγραφών, κωδικών Wi-Fi, πληροφοριών διαδικασίας και υποδοχών για blue-team/DFIR
- Αυτοματοποίηση της διαμόρφωσης της συσκευής από προσαρμοσμένες εφαρμογές ή scripts shell
1. Εκκίνηση της προνομιούχας υπηρεσίας
moe.shizuku.privileged.api
μπορεί να ξεκινήσει με τρεις διαφορετικούς τρόπους – η προκύπτουσα υπηρεσία Binder συμπεριφέρεται το ίδιο σε όλους αυτούς.
1.1 Ασύρματο ADB (Android 11+)
- Ενεργοποιήστε Επιλογές προγραμματιστή ➜ Ασύρματη αποσφαλμάτωση και ζευγαρώστε τη συσκευή.
- Μέσα στην εφαρμογή Shizuku επιλέξτε “Έναρξη μέσω Ασύρματης αποσφαλμάτωσης” και αντιγράψτε τον κωδικό ζευγαρώματος.
- Η υπηρεσία επιβιώνει μέχρι την επόμενη επανεκκίνηση (οι συνεδρίες ασύρματης αποσφαλμάτωσης διαγράφονται κατά την εκκίνηση).
1.2 USB / τοπικό ADB one-liner
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 Rooted συσκευές
Αν η συσκευή είναι ήδη rooted, εκτελέστε:
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"/>
Κατά την εκτέλεση, αποκτούν τον binder:
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 – ανυψωμένο shell μέσα στο 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 shell
- Λίστα τρεχουσών διεργασιών ενός συγκεκριμένου πακέτου:
ps -A | grep com.facebook.katana
- Καταμέτρηση ακροατών sockets και αντιστοίχιση τους σε πακέτα (π.χ. 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
- Dump όλων των logs εφαρμογών:
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 debugging, επομένως οι Επιλογές προγραμματιστή → USB/Ασύρματη αποσφαλμάτωση πρέπει να είναι ενεργοποιημένες.
Οι οργανισμοί μπορούν να το αποκλείσουν μέσω MDM ή μέσω
settings put global development_settings_enabled 0
. - Η υπηρεσία καταχωρεί τον εαυτό της με το όνομα
moe.shizuku.privileged.api
. Μια απλήadb shell service list | grep shizuku
(ή κανόνας Endpoint Security) ανιχνεύει την παρουσία της. - Οι δυνατότητες περιορίζονται σε όσα μπορεί ήδη να κάνει ο χρήστης
shell
– δεν είναι root. Ευαίσθητα APIs που απαιτούν τον χρήστηsystem
ήroot
παραμένουν μη προσβάσιμα. - Οι συνεδρίες δεν επιβιώνουν μετά από επανεκκίνηση εκτός αν η συσκευή είναι rooted και το Shizuku είναι ρυθμισμένο ως daemon εκκίνησης.
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.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.