Drozer Tutorial
バグバウンティのヒント: Intigritiにサインアップしてください。これは、ハッカーによって作成されたプレミアムバグバウンティプラットフォームです!今すぐhttps://go.intigriti.com/hacktricksに参加して、最大**$100,000**のバウンティを獲得しましょう!
テストするAPK
Sieve(mrwlabs提供)
このチュートリアルの一部は Drozerドキュメントpdf** から抽出されました。**
インストール
ホスト内にDrozerクライアントをインストールします。latest releasesからダウンロードしてください。
ダウンロードしてdrozer APKをインストールします。最新リリースからダウンロードしてください。現時点ではこちらです。
サーバーの起動
エージェントはポート31415で実行されています。Drozerクライアントとエージェントの間の通信を確立するためにポートフォワーディングする必要があります。以下はそのためのコマンドです:
最後に、アプリケーションを起動し、下部の "ON" ボタンを押します。
そして、それに接続します:
興味深いコマンド
コマンド | 説明 |
Help MODULE | 選択したモジュールのヘルプを表示します。 |
list | 現在のセッションで実行可能なすべてのdrozerモジュールのリストを表示します。適切な権限を持っていないモジュールは非表示になります。 |
shell | デバイス上でエージェントのコンテキストでインタラクティブなLinuxシェルを開始します。 |
clean | Androidデバイス上にdrozerによって保存された一時ファイルを削除します。 |
load | drozerコマンドを含むファイルを読み込んで、順番に実行します。 |
module | インターネットから追加のdrozerモジュールを見つけてインストールします。 |
unset | drozerが生成する名前付き変数を削除します。 |
set | drozerによって生成されたLinuxシェルに渡される環境変数として値を保存します。 |
shell | エージェントのコンテキストでデバイス上でインタラクティブなLinuxシェルを開始します。 |
run MODULE | drozerモジュールを実行します。 |
exploit | Drozerはデバイスで実行するエクスプロイトを作成できます。 |
payload | エクスプロイトにはペイロードが必要です。 |
パッケージ
名前の一部でフィルタリングされたパッケージの名前を見つけます:
パッケージの基本情報:
マニフェストを読む:
パッケージの攻撃面:
Activities: おそらく、アクティビティを開始し、起動を防ぐはずの種類の認証をバイパスできるかもしれません。
Content providers: おそらく、プライベートデータにアクセスしたり、いくつかの脆弱性(SQLインジェクションまたはパストラバーサル)を悪用したりできるかもしれません。
Services:
is debuggable: 詳細はこちら
Activities
AndroidManifest.xmlファイルでエクスポートされたアクティビティコンポーネントの「android:exported」の値が**「true」**に設定されています。
エクスポートされたアクティビティのリスト:
アクティビティの開始:
おそらく、アクティビティを開始し、起動を防ぐはずの認証をバイパスすることができます。
adbからエクスポートされたアクティビティを開始することもできます:
パッケージ名は com.example.demo
エクスポートされたアクティビティ名は com.example.test.MainActivity
コンテンツプロバイダ
この投稿はここにあるほど大きかったので、独自のページでアクセスできますこちら。
サービス
エクスポートされたサービスはManifest.xml内で宣言されます:
コードの中で check して、message を 受信 する **handleMessage
** 関数を探します:
サービスのリスト
サービスとのやり取り
例
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のContent Providerを悪用することで、ユーザーに許可を求めることなく、任意のSMSをプレミアムでない宛先に送信することができます。
コードを読むと、パラメータ "phoneNumber" と "message" がContent Providerに送信される必要があります。
デバッグ可能かどうか
本番用のAPKは決してデバッグ可能にすべきではありません。 これは、実行中のアプリケーションにJavaデバッガーをアタッチして、実行時にそれを検査し、ブレークポイントを設定し、ステップごとに進んで変数の値を収集し、それらを変更することができることを意味します。InfoSec instituteには優れた記事があり、アプリケーションがデバッグ可能であり、ランタイムコードをインジェクトする際にさらに掘り下げる方法について説明しています。
アプリケーションがデバッグ可能な場合、マニフェストに表示されます:
Drozerを使用して、すべてのデバッグ可能なアプリケーションを見つけることができます:
チュートリアル
もっと情報
バグバウンティのヒント: Intigriti に サインアップ して、ハッカーによって作成されたプレミアム バグバウンティプラットフォーム に参加しましょう!https://go.intigriti.com/hacktricks で今すぐ登録して、最大 $100,000 のバウンティを獲得しましょう!
Last updated