Drozer Tutorial
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
バグバウンティのヒント: ハッカーによって、ハッカーのために作られたプレミアム バグバウンティプラットフォーム Intigritiに サインアップ してください! 今日、https://go.intigriti.com/hacktricksに参加し、最大**$100,000**のバウンティを獲得し始めましょう!
テスト用APKs
Sieve (mrwlabsから)
このチュートリアルの一部は、 Drozerドキュメントpdfから抜粋されました。
インストール
ホスト内にDrozerクライアントをインストールします。 最新のリリースからダウンロードしてください。
最新のリリースからdrozer APKをダウンロードしてインストールします。これの時点では、これです。
サーバーの起動
エージェントはポート31415で実行されています。Drozerクライアントとエージェント間の通信を確立するために、ポートフォワーディングを行う必要があります。これを行うためのコマンドは次のとおりです:
最後に、アプリケーションを起動し、下の「ON」を押します。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-ab1786558a7b9d62724edd85419268e3c891bad5%252Fimage%2520%28459%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=be6422d1&sv=1)
そして、それに接続します:
興味深いコマンド
コマンド | 説明 |
Help MODULE | 選択したモジュールのヘルプを表示します |
list | 現在のセッションで実行可能なすべてのdrozerモジュールのリストを表示します。適切な権限がないモジュールは非表示になります。 |
shell | エージェントのコンテキストでデバイス上にインタラクティブなLinuxシェルを開始します。 |
clean | Androidデバイス上にdrozerが保存した一時ファイルを削除します。 |
load | drozerコマンドを含むファイルを読み込み、順番に実行します。 |
module | インターネットから追加のdrozerモジュールを見つけてインストールします。 |
unset | drozerが生成する任意のLinuxシェルに渡す名前付き変数を削除します。 |
set | drozerによって生成される任意のLinuxシェルに環境変数として渡される変数に値を格納します。 |
shell | エージェントのコンテキストでデバイス上にインタラクティブなLinuxシェルを開始します。 |
run MODULE | drozerモジュールを実行します |
exploit | Drozerはデバイスで実行するためのエクスプロイトを作成できます。 |
payload | エクスプロイトにはペイロードが必要です。 |
パッケージ
名前の一部でフィルタリングしてパッケージ名を見つけます:
パッケージの基本情報:
マニフェストを読む:
パッケージの攻撃面:
アクティビティ: おそらく、アクティビティを開始し、起動を防ぐべき認証をバイパスできるかもしれません。
コンテンツプロバイダー: おそらく、プライベートデータにアクセスしたり、いくつかの脆弱性(SQLインジェクションやパス・トラバーサル)を悪用できるかもしれません。
サービス:
is debuggable: Learn more
アクティビティ
エクスポートされたアクティビティコンポーネントの “android:exported” 値は、AndroidManifest.xmlファイルで “true” に設定されています:
エクスポートされたアクティビティのリスト:
アクティビティを開始:
おそらく、アクティビティを開始し、起動を防ぐべき認証をバイパスできるかもしれません。
adbからエクスポートされたアクティビティを開始することもできます:
パッケージ名は com.example.demo
エクスポートされたアクティビティ名は com.example.test.MainActivity
コンテンツプロバイダー
この投稿はここに収まりきらないので、こちらの独自のページでアクセスできます ここ。
サービス
エクスポートされたサービスはManifest.xml内で宣言されます:
コード内でcheckを行い、handleMessage
関数を探します。この関数はmessageを受信します:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-f20e8ce2fc518cd80eb4ba6d3cc92921b98557d8%252Fimage%2520%2882%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=431b71de&sv=1)
サービスのリスト
サービスと対話する
例
app.service.send
のdrozerヘルプを見てください:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-b1c5a1a13c3d409442ea29b8a82310be8e29b742%252Fimage%2520%281079%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=6d966dfd&sv=1)
最初に"msg.what"の中のデータを送信し、その後に"msg.arg1"と"msg.arg2"を送信することに注意してください。どの情報が使用されているか、そしてどこで使用されているかをコード内で確認する必要があります。
--extra
オプションを使用すると、"msg.replyTo"によって解釈されるものを送信でき、--bundle-as-obj
を使用すると、提供された詳細を持つオブジェクトを作成します。
次の例では:
what == 2354
arg1 == 9234
arg2 == 1
replyTo == object(string com.mwr.example.sieve.PIN 1337)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-6046bf9a80645bab7a7591101301a9288f4783d8%252Fimage%2520%28647%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9c741622&sv=1)
ブロードキャストレシーバー
Androidの基本情報セクションでは、ブロードキャストレシーバーとは何かを見ることができます。
このブロードキャストレシーバーを発見した後は、コードを確認する必要があります。特に**onReceive
**関数に注意を払い、受信したメッセージを処理します。
すべての ブロードキャストレシーバーを検出する
アプリのブロードキャストレシーバーを確認する
ブロードキャスト インタラクション
メッセージを送信する
この例では、FourGoats apk コンテンツプロバイダーを悪用して、ユーザーに許可を求めることなく、任意のSMSを非プレミアムの宛先に送信できます。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-deb8d0d388e9fdc2f306cc84d13e3b79c623ac01%252Fimage%2520%28415%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=b3d41736&sv=1)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-9fe1e166755bb71fc118787b447a1445b53eb4fd%252Fimage%2520%28573%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=cf99c15a&sv=1)
コードを読むと、"phoneNumber" と "message" のパラメータをコンテンツプロバイダーに送信する必要があります。
Is debuggeable
生産用APKは決してデバッグ可能であってはなりません。 これは、javaデバッガを実行中のアプリケーションにアタッチし、実行時に検査し、ブレークポイントを設定し、一歩ずつ進め、変数の値を収集し、さらにはそれらを変更することができることを意味します。InfoSec Instituteには、アプリケーションがデバッグ可能な場合に深く掘り下げ、ランタイムコードを注入するための優れた記事があります。
アプリケーションがデバッグ可能な場合、マニフェストに表示されます:
あなたはDrozerを使ってすべてのデバッグ可能なアプリケーションを見つけることができます:
チュートリアル
さらに詳しい情報
バグバウンティのヒント: ハッカーによって、ハッカーのために作られたプレミアム バグバウンティプラットフォーム Intigritiにサインアップしましょう!今日、https://go.intigriti.com/hacktricksに参加して、最大**$100,000**のバウンティを獲得し始めましょう!
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated