Hello there, ('ω')ノ
🧭 Drozerってどんなツール?
Drozerは、Androidアプリの内部にあるコンポーネント(Activity、Service、Content Providerなど)のセキュリティ設定を診断するためのツールです。
✅ Drozerの特徴:
- Android端末に「エージェントアプリ」をインストールして診断を実行
- 他のアプリからアクセス可能な設定があるかを実際に攻撃再現しながら調べられる
- アプリの“表に出ていない機能”にもアクセスして確認できる
🛠 事前準備:Drozerのインストール
✅ PC側(Drozer Console)
Drozer本体は現在、公式サポートが終了していますが、GitHubで非公式版(フォーク)が使えます。以下のような構成です:
- OS:LinuxやmacOS推奨(Windowsは非推奨)
- Python 3系と依存ライブラリ(
protobufなど)
インストール例(※一例です):
git clone https://github.com/FSecureLABS/drozer.git cd drozer pip install .
✅ Android端末側(Drozer Agent)
- Drozerの
agent.apkを端末にインストール - USBデバッグをONにする
- ポートフォワーディングを設定:
adb forward tcp:31415 tcp:31415
- Drozerエージェントを端末上で起動(手動でタップ)
🚀 Drozerを起動してみよう
Drozerのコンソールを起動するには、以下のコマンドを使います:
drozer console connect
うまく接続されると、以下のようなDrozerのプロンプトが表示されます:
dz>
この状態になれば準備OK! コマンドを使って、診断をどんどん進めていきます。
🔍 実例で診断してみよう(他アプリから呼び出せるか?)
✅ 目的:
exported=true のActivityが他のアプリから呼び出せる状態かを確認し、不正アクセスの危険性をチェックします。
① アプリのActivityを一覧表示:
dz> run app.activity.info -a com.example.vulnerableapp
出力例:
com.example.vulnerableapp.DebugActivity - exported = true
このように、DebugActivity が外部に公開されていることがわかります。
② 他アプリから起動できるか試す:
dz> run app.activity.start --component com.example.vulnerableapp com.example.vulnerableapp.DebugActivity
→ 実機でDebug画面が起動したら、他アプリから実行可能=脆弱性の可能性あり!
🧪 その他の診断モジュール
Drozerは他にも次のような診断が可能です:
| モジュール | 内容 |
|---|---|
app.broadcast.info |
外部から送れるブロードキャストを調査 |
app.provider.finduris |
外部からアクセスできるContent Providerを探す |
app.package.attacksurface |
アプリが持つ“攻撃対象面”を自動で一覧化 |
app.service.info |
Serviceの外部公開状況を確認 |
特に content:// URIを使った診断は、個人情報やデータベース流出のチェックに非常に有効です。
👀 Drozer診断でわかること
- 本来は外部からアクセスできないはずの機能が公開状態になっていないか?
- サービスやブロードキャストに制限がなく、誰でも使えてしまう状態ではないか?
- 診断によって**「権限設定ミス」「開発中のテスト機能の残存」**が明らかになることが多い
⚠ 注意:Drozer診断は実機必須!
Drozerは動的解析ツールのため、必ず実機(またはルート権限付きのエミュレータ)上で実行する必要があります。 アプリの「実際の動作」にアクセスするため、診断範囲は慎重に限定しましょう。
✅ まとめ
- DrozerはAndroidアプリの動的診断ツールで、ActivityやServiceの外部公開を確認できる
- 実機にエージェントをインストールし、コマンドラインから診断を実行する
- Exportedな機能を実際に呼び出せるか確認できるのが最大の特徴
- 設定ミスや開発者のうっかりミスによる“裏口”を見つける診断に最適!
Best regards, (^^ゞ