drozer は Android 用のセキュリティ テスト フレームワークです。
drozer を使用すると、アプリの役割を引き受け、Android ランタイム、他のアプリの IPC エンドポイント、基盤となる OS と対話することで、アプリやデバイスのセキュリティ脆弱性を検索できます。
drozer は、パブリック Android エクスプロイトの使用、共有、理解に役立つツールを提供します。
drozer は、WithSecure によって保守されているオープン ソース ソフトウェアで、https://labs.withsecure.com/tools/drozer/ からダウンロードできます。
これは、書き直された drozer バージョンのベータ リリースです。このバージョンは Python3 をサポートするように更新されています。
現在、次の既知の問題が存在します。
すべてのシステムで drozer を確実に実行できるようにするために、drozer の動作するビルドを含む Docker コンテナが作成されました。
pip
またはpipx
(利用可能な場合は推奨) を使用して、PyPI から drozer の最新リリースをインストールできます。
pipx install drozer
あるいは、GitHub から個々のリリースをダウンロードして実行することもできます。
pipx install ./drozer- * .whl
まだ実行していない場合は、実行することを検討してください。
pipx ensurepath
pipx
でインストールされたパッケージがPATH
に表示されるようにする
ソースから drozer をビルドするには、実行できます。
git clone https://github.com/WithSecureLabs/drozer.git
cd drozer
pip install .
特定の SDK に対して Android ネイティブ コンポーネントを構築するには、 ANDROID_SDK
環境変数をパスに設定します。例えば:
Linux/macOS:
export ANDROID_SDK=/home/drozerUser/Android/Sdk/platforms/android-34/android.jar
Windows - PowerShell:
New-Item - Path Env:ANDROID_SDK - Value ' C:UsersdrozerUserAppDataLocalAndroidsdkplatformsandroid-34android.jar '
Windows - cmd:
set ANDROID_SDK = " C:UsersdrozerUserAppDataLocalAndroidsdkplatformsandroid-34android.jar "
使用するd8
ツールの位置は、 D8
設定することによって変更することもできます。
drozer は Android Debug Bridge (adb) を使用してインストールできます。
最新の drozer Agent をここからダウンロードします。
adb install drozer-agent.apk
これで、drozer コンソールが PC にインストールされ、エージェントがテスト デバイスで実行されているはずです。ここで、2 つを接続する必要があります。これで、探索を開始する準備が整いました。
これを行うには、drozer Agent に組み込まれたサーバーを使用します。まず、エージェントを起動し、「組み込みサーバー」オプションを選択し、「有効」をタップしてサーバーを起動します。サーバーが起動したという通知が表示されるはずです。
次に、以下のいずれかのオプションに従います。
デフォルトでは、drozer エージェントはポート 31415 上のすべてのインターフェイスで着信 TCP 接続を待機します。エージェントに接続するには、次のコマンドを実行します。
drozer console connect --server <phone's IP address>
Docker コンテナを使用している場合、同等のコマンドは次のようになります。
docker run --net host -it withsecurelabs/drozer console connect --server <phone's IP address>
シナリオによっては、ネットワーク経由でデバイスに接続できない場合があります。これらのシナリオでは、 adb
のポート転送機能を利用して USB 経由の接続を確立できます。
まず、エミュレータ内またはデバイス上のエージェントによって開かれた TCP ソケットに PC が接続できるように、適切なポート転送を設定する必要があります。デフォルトでは、drozer はポート 31415 を使用します。
adb forward tcp:31415 tcp:31415
これで、 localhost
に接続する (または単にターゲット IP を指定しない) ことで、drozer Agent に接続できるようになりました。
drozer console connect
drozer コマンド プロンプトが表示されます。
Selecting ebe9fcc0c47b28da (Google sdk_gphone64_x86_64 12)
.. ..:.
..o.. .r..
..a.. . ....... . ..nd
ro..idsnemesisand..pr
.otectorandroidsneme.
.,sisandprotectorandroids+.
..nemesisandprotectorandroidsn:.
.emesisandprotectorandroidsnemes..
..isandp,..,rotecyayandro,..,idsnem.
.isisandp..rotectorandroid..snemisis.
,andprotectorandroidsnemisisandprotec.
.torandroidsnemesisandprotectorandroid.
.snemisisandprotectorandroidsnemesisan:
.dprotectorandroidsnemesisandprotector.
drozer Console (v3.0.0)
dz>
プロンプトでは、接続したデバイスの Android ID と、メーカー、モデル、Android ソフトウェアのバージョンが確認されます。
これで、デバイスの探索を開始する準備が整いました。
指示 | 説明 |
---|---|
走る | ドローザーモジュールを実行します |
リスト | 現在のセッションで実行できるすべての drozer モジュールのリストを表示します。これにより、実行するための適切な権限を持たないモジュールが非表示になります。 |
シェル | エージェント プロセスのコンテキストで、デバイス上で対話型 Linux シェルを開始します。 |
CD | モジュールの完全な名前を繰り返し入力する手間を省くために、特定の名前空間をセッションのルートとしてマウントします。 |
クリーン | Android デバイス上の drozer によって保存された一時ファイルを削除します。 |
貢献者 | システムで使用されている drozer フレームワークとモジュールに貢献した人のリストを表示します。 |
エコー | テキストをコンソールに出力します。 |
出口 | ドローザーセッションを終了します。 |
ヘルプ | 特定のコマンドまたはモジュールに関するヘルプを表示します。 |
負荷 | drozer コマンドを含むファイルをロードし、それらを順番に実行します。 |
モジュール | 追加の drozer モジュールをインターネットから検索してインストールします。 |
権限 | drozer Agent に付与された権限のリストを表示します。 |
セット | drozer によって生成された Linux シェルに環境変数として渡される値を変数に保存します。 |
設定を解除する | drozer が生成する Linux シェルに渡す名前付き変数を削除します。 |
drozer は 3 条項の BSD ライセンスに基づいてリリースされています。詳細については、「ライセンス」を参照してください。
drozer はオープンソース ソフトウェアであり、コミュニティからの貢献によって素晴らしいものになりました。
完全なソース コード、バグの報告、機能の提案、パッチの提供については、Github プロジェクトを参照してください。
https://github.com/WithSecureLabs/drozer
バグレポート、機能リクエスト、コメント、質問はここから送信できます。