tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Аналіз додатка React Native

Щоб підтвердити, чи був додаток створений на основі фреймворку React Native, виконайте ці кроки:

  1. Перейменуйте файл APK з розширенням zip і витягніть його в нову папку, використовуючи команди cp com.example.apk example-apk.zip та unzip -qq example-apk.zip -d ReactNative.

  2. Перейдіть до новоствореної папки ReactNative і знайдіть папку assets. Усередині цієї папки ви повинні знайти файл index.android.bundle, який містить React JavaScript у мінімізованому форматі.

  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. Відкрийте панель розробника, натиснувши Command+Option+J для OS X або Control+Shift+J для Windows.

  3. Клацніть на "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

Однак ви можете використовувати інструменти hbctool, hermes-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 Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks