Drozer Tutorial
Last updated
Last updated
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**の報酬を得始めましょう!
Sieve (mrwlabsから)
このチュートリアルの一部は、 Drozerドキュメントpdfから抜粋されました。
ホスト内にDrozerクライアントをインストールします。 最新のリリースからダウンロードしてください。
最新のリリースからdrozer APKをダウンロードしてインストールします。これです。
エージェントはポート31415で実行されています。Drozerクライアントとエージェント間の通信を確立するために、ポートフォワーディングを行う必要があります。これを行うためのコマンドは次のとおりです:
最後に、アプリケーションを起動し、下の「ON」を押します。
そして、それに接続します:
コマンド
説明
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はデバイスで実行するためのエクスプロイトを作成できます。 drozer exploit list
payload
エクスプロイトにはペイロードが必要です。 drozer payload list
名前の一部でフィルタリングしてパッケージ名を見つけます:
パッケージの基本情報:
マニフェストを読む:
パッケージの攻撃面:
アクティビティ: おそらく、アクティビティを開始し、起動を防ぐべき認証をバイパスできるかもしれません。
コンテンツプロバイダー: おそらく、プライベートデータにアクセスしたり、いくつかの脆弱性(SQLインジェクションやパストラバーサル)を悪用できるかもしれません。
サービス:
is debuggable: Learn more
エクスポートされたアクティビティコンポーネントの “android:exported” 値は、AndroidManifest.xmlファイルで “true” に設定されています:
エクスポートされたアクティビティのリスト:
アクティビティを開始:
おそらく、アクティビティを開始し、起動を防ぐべき認証をバイパスできるかもしれません。
adbからエクスポートされたアクティビティを開始することもできます:
パッケージ名は com.example.demo です
エクスポートされたアクティビティ名は com.example.test.MainActivity です
この投稿はここに収まるには大きすぎるので、こちらの独自のページでアクセスできますここ。
エクスポートされたサービスはManifest.xml内で宣言されます:
コード内でcheckを行い、handleMessage
関数を探します。この関数はmessageを受信します:
app.service.send
のdrozerヘルプを見てください:
最初に"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)
Androidの基本情報セクションでは、ブロードキャストレシーバーとは何かを見ることができます。
このブロードキャストレシーバーを発見した後は、コードを確認する必要があります。特に**onReceive
**関数に注意を払い、受信したメッセージを処理します。
この例では、FourGoats apk コンテンツプロバイダーを悪用して、ユーザーに許可を求めることなく、任意のSMSを非プレミアムの宛先に送信できます。
コードを読むと、"phoneNumber" と "message" のパラメータをコンテンツプロバイダーに送信する必要があります。
本番用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)