tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

React Native アプリケーション分析

アプリケーションが React Native フレームワークで構築されているか確認するには、以下の手順に従ってください。

  1. APK ファイルの名前を zip 拡張子に変更し、コマンド cp com.example.apk example-apk.zipunzip -qq example-apk.zip -d ReactNative を使用して新しいフォルダーに抽出します。

  2. 新しく作成された ReactNative フォルダーに移動し、assets フォルダーを見つけます。このフォルダー内に、React JavaScript がミニファイされた形式で含まれている index.android.bundle ファイルがあるはずです。

  3. コマンド find . -print | grep -i ".bundle$" を使用して JavaScript ファイルを検索します。

Javascript コード

index.android.bundle の内容を確認すると、アプリケーションの JavaScript コード(ミニファイされていても)を見つけることができれば、機密情報や脆弱性を見つけるために分析できます

バンドルには実際にアプリケーションのすべての JS コードが含まれているため、異なるファイルに分割することが可能です(逆アセンブルを容易にする可能性があります) ツール react-native-decompiler を使用して。

Webpack

JavaScript コードをさらに分析するには、ファイルを https://spaceraccoon.github.io/webpack-exploder/ にアップロードするか、以下の手順に従ってください。

  1. 同じディレクトリに index.html という名前のファイルを作成し、次のコードを記述します:
html
<script src="./index.android.bundle"></script>
  1. index.htmlファイルをGoogle Chromeで開きます。

  2. OS Xの場合はCommand+Option+JWindowsの場合はControl+Shift+Jを押してDeveloper Toolbarを開きます。

  3. Developer Toolbarで「Sources」をクリックします。フォルダとファイルに分かれたJavaScriptファイルが表示され、メインバンドルを構成しています。

index.android.bundle.mapというファイルが見つかれば、ソースコードを未圧縮形式で分析できます。マップファイルにはソースマッピングが含まれており、圧縮された識別子をマッピングすることができます。

機密の資格情報やエンドポイントを検索するには、次の手順に従います。

  1. JavaScriptコードを分析するための機密キーワードを特定します。React Nativeアプリケーションは、Firebase、AWS S3サービスエンドポイント、プライベートキーなどのサードパーティサービスを使用することがよくあります。

  2. この特定のケースでは、アプリケーションがDialogflowサービスを使用していることが観察されました。その設定に関連するパターンを検索します。

  3. 再コンプロセス中にJavaScriptコード内で機密のハードコーディングされた資格情報が見つかったのは幸運でした。

JSコードを変更して再構築

この場合、コードを変更するのは簡単です。アプリの名前を.zip拡張子に変更し、抽出するだけです。次に、このバンドル内のJSコードを修正してアプリを再構築できます。これで、テスト目的でアプリにコードを注入することができるはずです。

## Hermesバイトコード

バンドルにHermesバイトコードが含まれている場合、アプリのJavaScriptコードにアクセスできなくなります(圧縮版にもアクセスできません)。

バンドルにHermesバイトコードが含まれているかどうかは、次のコマンドを実行して確認できます:

bash
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96

しかし、ツール hbctoolhermes-dec、または hermes_rs を使用して バイトコードを逆アセンブルし、さらに それを擬似JSコードにデコンパイルすることができます。これを行うために、例えば以下のコマンドを使用します:

bash
hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
hbc-decompiler ./index.android.bundle /tmp/my_output_file.js

コードの変更と再構築

理想的には、逆アセンブルされたコードを修正(比較や値の変更など)し、バイトコードを再構築してアプリを再構築できるべきです。

ツール hbctool は、バンドルを逆アセンブルし、変更後に再構築することをサポートしていますが、古いバージョンのHermesバイトコードのみをサポートしています。

ツール hermes-dec は、バイトコードの再構築をサポートしていません。

ツール hermes_rs は、バイトコードの再構築をサポートしていますが、実際にはライブラリでありCLIツールではありません。

動的分析

アプリを動的に分析する方法として、Fridaを使用してReactアプリの開発者モードを有効にし、react-native-debugger をアタッチすることが考えられます。ただし、これにはアプリのソースコードが必要なようです。詳細については、https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/を参照してください。

参考文献

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする