Objection Tutorial
バグバウンティのヒント: Intigriti に サインアップ してください、これはハッカーによって作成されたプレミアム バグバウンティプラットフォーム です! https://go.intigriti.com/hacktricks で今すぐ参加し、最大 $100,000 のバウンティを獲得しましょう!
はじめに
objection - ランタイムモバイルエクスプロレーション
Frida によってパワードされたランタイムモバイルエクスプロレーションツールキットである Objection は、モバイルアプリケーションとそのセキュリティポジションを評価するのを支援することを目的として構築されました。これにより、ジェイルブレイクされたまたはルート化されたモバイルデバイスが必要なく、モバイルアプリケーションを評価できます。
注意: これはジェイルブレイク/ルートバイパスの形ではありません。objection
を使用することで、対面している適用されるサンドボックスによって課せられるすべての制限に制限されます。
再開
objection の目標は、ユーザーが Frida が提供する主要なアクションを呼び出すこと です。そうでない場合、ユーザーは テストしたいアプリケーションごとに単一のスクリプトを作成する必要があります。
チュートリアル
このチュートリアルでは、こちらからダウンロードできる APK を使用します:
または 元のリポジトリ からダウンロードできます(app-release.apk)。
インストール
接続
通常のADB接続を作成し、デバイスでfridaサーバーを起動します(クライアントとサーバーの両方でfridaが動作していることを確認します)。
root化されたデバイスを使用している場合、テストしたいアプリケーションを_--gadget_オプション内で選択する必要があります。この場合は次の通りです:
基本的なアクション
このチュートリアルでは、objectionのすべての可能なコマンドをリストするわけではありません。代わりに、より便利だと考えられるもののみをリストしています。
環境
環境内には、パスワードやパスなど、興味深い情報が含まれている可能性があります。
Fridaの情報
アップロード/ダウンロード
Fridaスクリプトのインポート
SSLピニング
ルート検出
Execコマンド
スクリーンショット
静的解析をダイナミックに
実際のアプリケーションでは、静的解析によってobjectionを使用する前にこの部分で発見されたすべての情報を知っておく必要があります。とにかく、ここではクラス、メソッド、エクスポートされたオブジェクトの完全なリストしかありませんので、新しい情報が見つかるかもしれません。
これはまた、アプリのいくつかの読みやすいソースコードを取得できない場合に役立ちます。
アクティビティ、レシーバ、およびサービスのリスト
Fridaは、何も見つからない場合にエラーを発生させます
現在のアクティビティを取得
クラスの検索
アプリケーション内のクラスを検索しましょう
クラスの検索方法
次に、MainActivity: クラス内のメソッドを抽出します。
クラスの宣言されたメソッドとそのパラメータのリスト
クラスのメソッドがどのようなパラメータを必要とするかを把握しましょう:
クラスのリスト
現在のアプリケーション内でロードされたすべてのクラスをリストアップすることもできます。
これは、クラスのメソッドをフックしたいがクラスの名前しかわからない場合に非常に便利です。この関数を使用して、クラスを所有するモジュールを検索し、そのメソッドをフックできます。
フックは簡単です
メソッドのフック(監視)
アプリケーションのソースコードから、MainActivity の sum() 関数 が 1秒ごとに実行されていることがわかります。関数が呼び出されるたびに(引数、戻り値、およびバックトレースを含む)可能な情報をすべてダンプしてみましょう:
クラス全体のフック(監視)
実際には、MainActivityクラスのすべてのメソッドが本当に興味深いと思います。すべてをフックしてみましょう。アプリケーションがクラッシュする可能性があるので注意してください。
アプリケーションを操作すると、クラスがフックされている間に、各関数が呼び出されるタイミング、引数、および戻り値が表示されます。
関数の真偽値の返り値を変更する
ソースコードから、関数 checkPin が String を引数として受け取り、boolean を返すことがわかります。この関数を常に true を返すように変更しましょう:
これで、PINコードのテキストボックスに何かを入力すると、何でも有効であることがわかります:
クラスのインスタンス
特定のJavaクラスのライブインスタンスを検索して表示し、完全修飾クラス名で指定します。Out は、通常、オブジェクトのプロパティ値を含む発見された異議に対する文字列値を取得しようとした結果です。
Keystore/Intents
キーストアとインテントを使用して遊ぶことができます:
メモリ
ダンプ
リスト
リストの一番下にはfridaが表示されます:
Fridaがエクスポートしているものをチェックしてみましょう:
検索/書き込み
Objectionを使用してメモリ内で検索や書き込みもできます:
SQLite
sqlite
コマンドを使用してSQLiteデータベースとやり取りできます。
Exit
Objection で欠けているもの
フックメソッドは時々アプリケーションをクラッシュさせることがあります(これは Frida のせいでもあります)。
クラスのインスタンスを使用してインスタンスの関数を呼び出すことはできません。また、新しいクラスのインスタンスを作成してそれらを使用して関数を呼び出すこともできません。
アプリケーションで使用されている一般的な暗号化メソッドすべてをフックして、暗号化されたテキスト、平文、キー、IV、および使用されているアルゴリズムを表示するためのショートカット(sslpinnin のようなもの)はありません。
バグバウンティのヒント: Intigriti に サインアップ してください。これは、ハッカーによって作成されたプレミアム バグバウンティプラットフォーム です!https://go.intigriti.com/hacktricks で参加し、今日から最大 $100,000 のバウンティを稼ぎましょう!
Last updated