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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
React Native アプリケーション分析
アプリケーションが React Native フレームワークで構築されているか確認するには、以下の手順に従ってください。
-
APK ファイルの名前を zip 拡張子に変更し、コマンド
cp com.example.apk example-apk.zip
とunzip -qq example-apk.zip -d ReactNative
を使用して新しいフォルダーに抽出します。 -
新しく作成された ReactNative フォルダーに移動し、assets フォルダーを見つけます。このフォルダー内に、React JavaScript がミニファイされた形式で含まれている
index.android.bundle
ファイルがあるはずです。 -
コマンド
find . -print | grep -i ".bundle$"
を使用して JavaScript ファイルを検索します。
Javascript コード
index.android.bundle
の内容を確認すると、アプリケーションの JavaScript コード(ミニファイされていても)を見つけることができれば、機密情報や脆弱性を見つけるために分析できます。
バンドルには実際にアプリケーションのすべての JS コードが含まれているため、異なるファイルに分割することが可能です(逆アセンブルを容易にする可能性があります) ツール react-native-decompiler を使用して。
Webpack
JavaScript コードをさらに分析するには、ファイルを https://spaceraccoon.github.io/webpack-exploder/ にアップロードするか、以下の手順に従ってください。
- 同じディレクトリに
index.html
という名前のファイルを作成し、次のコードを記述します:
<script src="./index.android.bundle"></script>
-
index.html
ファイルをGoogle Chromeで開きます。 -
OS Xの場合はCommand+Option+J、Windowsの場合はControl+Shift+Jを押してDeveloper Toolbarを開きます。
-
Developer Toolbarで「Sources」をクリックします。フォルダとファイルに分かれたJavaScriptファイルが表示され、メインバンドルを構成しています。
index.android.bundle.map
というファイルが見つかれば、ソースコードを未圧縮形式で分析できます。マップファイルにはソースマッピングが含まれており、圧縮された識別子をマッピングすることができます。
機密の資格情報やエンドポイントを検索するには、次の手順に従います。
-
JavaScriptコードを分析するための機密キーワードを特定します。React Nativeアプリケーションは、Firebase、AWS S3サービスエンドポイント、プライベートキーなどのサードパーティサービスを使用することがよくあります。
-
この特定のケースでは、アプリケーションがDialogflowサービスを使用していることが観察されました。その設定に関連するパターンを検索します。
-
再コンプロセス中にJavaScriptコード内で機密のハードコーディングされた資格情報が見つかったのは幸運でした。
JSコードを変更して再構築
この場合、コードを変更するのは簡単です。アプリの名前を.zip
拡張子に変更し、抽出するだけです。次に、このバンドル内のJSコードを修正してアプリを再構築できます。これで、テスト目的でアプリにコードを注入することができるはずです。
## Hermesバイトコード
バンドルにHermesバイトコードが含まれている場合、アプリのJavaScriptコードにアクセスできなくなります(圧縮版にもアクセスできません)。
バンドルにHermesバイトコードが含まれているかどうかは、次のコマンドを実行して確認できます:
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96
しかし、ツール hbctool、hermes-dec、または hermes_rs を使用して バイトコードを逆アセンブルし、さらに それを擬似JSコードにデコンパイルすることができます。これを行うために、例えば以下のコマンドを使用します:
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/を参照してください。
参考文献
- https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7
- https://www.assetnote.io/resources/research/expanding-the-attack-surface-react-native-android-applications
- https://payatu.com/wp-content/uploads/2023/02/Mastering-React-Native-Application-Pentesting-A-Practical-Guide-2.pdf
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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。