Objection Tutorial

htARTE(HackTricks AWS Red Team Expert) を通じて、ゼロからヒーローまでAWSハッキングを学ぶ

HackTricks をサポートする他の方法:

バグバウンティのヒント: Intigritiサインアップ してください、これはハッカーによって作成されたプレミアム バグバウンティプラットフォーム です! https://go.intigriti.com/hacktricks で今すぐ参加し、最大 $100,000 のバウンティを獲得しましょう!

はじめに

objection - ランタイムモバイルエクスプロレーション

Frida によってパワードされたランタイムモバイルエクスプロレーションツールキットである Objection は、モバイルアプリケーションとそのセキュリティポジションを評価するのを支援することを目的として構築されました。これにより、ジェイルブレイクされたまたはルート化されたモバイルデバイスが必要なく、モバイルアプリケーションを評価できます。

注意: これはジェイルブレイク/ルートバイパスの形ではありません。objection を使用することで、対面している適用されるサンドボックスによって課せられるすべての制限に制限されます。

再開

objection の目標は、ユーザーが Frida が提供する主要なアクションを呼び出すこと です。そうでない場合、ユーザーは テストしたいアプリケーションごとに単一のスクリプトを作成する必要があります

チュートリアル

このチュートリアルでは、こちらからダウンロードできる APK を使用します:

または 元のリポジトリ からダウンロードできます(app-release.apk)。

インストール

pip3 install objection

接続

通常のADB接続を作成し、デバイスでfridaサーバーを起動します(クライアントとサーバーの両方でfridaが動作していることを確認します)。

root化されたデバイスを使用している場合、テストしたいアプリケーションを_--gadget_オプション内で選択する必要があります。この場合は次の通りです:

frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore

基本的なアクション

このチュートリアルでは、objectionのすべての可能なコマンドをリストするわけではありません。代わりに、より便利だと考えられるもののみをリストしています。

環境

環境内には、パスワードやパスなど、興味深い情報が含まれている可能性があります。

env

Fridaの情報

frida

アップロード/ダウンロード

file download <remote path> [<local path>]
file upload <local path> [<remote path>]

Fridaスクリプトのインポート

import <local path frida-script>

SSLピニング

android sslpinning disable #Attempts to disable SSL Pinning on Android devices.

ルート検出

android root disable  #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.

Execコマンド

android shell_exec whoami

スクリーンショット

android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false  #This may enable you to take screenshots using the hardware keys

静的解析をダイナミックに

実際のアプリケーションでは、静的解析によってobjectionを使用する前にこの部分で発見されたすべての情報を知っておく必要があります。とにかく、ここではクラス、メソッド、エクスポートされたオブジェクトの完全なリストしかありませんので、新しい情報が見つかるかもしれません。

これはまた、アプリのいくつかの読みやすいソースコードを取得できない場合に役立ちます。

アクティビティ、レシーバ、およびサービスのリスト

android hooking list activities
android hooking list services
android hooking list receivers

Fridaは、何も見つからない場合にエラーを発生させます

現在のアクティビティを取得

android hooking get current_activity

クラスの検索

アプリケーション内のクラスを検索しましょう

android hooking search classes asvid.github.io.fridaapp

クラスの検索方法

次に、MainActivity: クラス内のメソッドを抽出します。

android hooking search methods asvid.github.io.fridaapp MainActivity

クラスの宣言されたメソッドとそのパラメータのリスト

クラスのメソッドがどのようなパラメータを必要とするかを把握しましょう:

android hooking list class_methods asvid.github.io.fridaapp.MainActivity

クラスのリスト

現在のアプリケーション内でロードされたすべてのクラスをリストアップすることもできます。

android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.

これは、クラスのメソッドをフックしたいがクラスの名前しかわからない場合に非常に便利です。この関数を使用して、クラスを所有するモジュールを検索し、そのメソッドをフックできます。

フックは簡単です

メソッドのフック(監視)

アプリケーションのソースコードから、MainActivitysum() 関数1秒ごとに実行されていることがわかります。関数が呼び出されるたびに(引数、戻り値、およびバックトレースを含む)可能な情報をすべてダンプしてみましょう:

android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return

クラス全体のフック(監視)

実際には、MainActivityクラスのすべてのメソッドが本当に興味深いと思います。すべてをフックしてみましょう。アプリケーションがクラッシュする可能性があるので注意してください。

android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return

アプリケーションを操作すると、クラスがフックされている間に、各関数が呼び出されるタイミング、引数、および戻り値が表示されます。

関数の真偽値の返り値を変更する

ソースコードから、関数 checkPinString を引数として受け取り、boolean を返すことがわかります。この関数を常に true を返すように変更しましょう:

これで、PINコードのテキストボックスに何かを入力すると、何でも有効であることがわかります:

クラスのインスタンス

特定のJavaクラスのライブインスタンスを検索して表示し、完全修飾クラス名で指定します。Out は、通常、オブジェクトのプロパティ値を含む発見された異議に対する文字列値を取得しようとした結果です。

android heap print_instances <class>

Keystore/Intents

キーストアとインテントを使用して遊ぶことができます:

android keystore list
android intents launch_activity
android intent launch_service

メモリ

ダンプ

memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part

リスト

memory list modules

リストの一番下にはfridaが表示されます:

Fridaがエクスポートしているものをチェックしてみましょう:

検索/書き込み

Objectionを使用してメモリ内で検索や書き込みもできます:

memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)

SQLite

sqliteコマンドを使用してSQLiteデータベースとやり取りできます。

Exit

exit

Objection で欠けているもの

  • フックメソッドは時々アプリケーションをクラッシュさせることがあります(これは Frida のせいでもあります)。

  • クラスのインスタンスを使用してインスタンスの関数を呼び出すことはできません。また、新しいクラスのインスタンスを作成してそれらを使用して関数を呼び出すこともできません。

  • アプリケーションで使用されている一般的な暗号化メソッドすべてをフックして、暗号化されたテキスト、平文、キー、IV、および使用されているアルゴリズムを表示するためのショートカット(sslpinnin のようなもの)はありません。

バグバウンティのヒント: Intigritiサインアップ してください。これは、ハッカーによって作成されたプレミアム バグバウンティプラットフォーム です!https://go.intigriti.com/hacktricks で参加し、今日から最大 $100,000 のバウンティを稼ぎましょう!

**htARTE (HackTricks AWS Red Team Expert)** で AWS ハッキングをゼロからヒーローまで学びましょう!

HackTricks をサポートする他の方法:

Last updated