Shizuku Privileged API
Reading time: 8 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
Shizukuは、app_process
を使用して特権のあるJavaプロセスを生成し、選択されたAndroidシステムAPIをBinder経由で公開するオープンソースサービスです。プロセスはADBが使用するのと同じ**shell
UID権限で起動されるため、エクスポートされたAIDLインターフェースにバインドする任意のアプリケーション(またはターミナル)は、通常**WRITE_SECURE_SETTINGS
、INSTALL_PACKAGES
、/data
内のファイルI/Oなどを必要とする多くのアクションをデバイスをルート化せずに**実行できます。
典型的な使用例:
- ルート化されていないハンドセットからのセキュリティ監査
- ブloatwareの削除 / システムアプリのデブロート
- ブルーチーム/DFIRのためのログ、Wi-Fiキー、プロセスおよびソケット情報の収集
- カスタムアプリやシェルスクリプトからのデバイス設定の自動化
1. 特権サービスの開始
moe.shizuku.privileged.api
は、3つの異なる方法で開始できます。結果として得られる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
同じスクリプトはネットワーク 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
成功した開始は、特権プロセスのPIDと共に Running services (1)
を返します。
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
(またはエンドポイントセキュリティルール)がその存在を検出します。 - 機能は
shell
ユーザーがすでにできることに制限されており、rootではありません。system
またはroot
ユーザーを必要とする敏感なAPIには依然としてアクセスできません。 - セッションは再起動後に生き残りません、デバイスがルート化されており、Shizukuがスタートアップデーモンとして構成されている場合を除きます。
5. 緩和策
- 生産デバイスでUSB/ワイヤレスデバッグを無効にする。
moe.shizuku.privileged.api
を公開しているBinderサービスを監視する。- SELinuxポリシー(Androidエンタープライズ)を使用して、管理されていないアプリケーションから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ハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。