tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

Analisi dell'Applicazione React Native

Per confermare se l'applicazione è stata costruita sul framework React Native, segui questi passaggi:

  1. Rinomina il file APK con un'estensione zip ed estrailo in una nuova cartella usando il comando cp com.example.apk example-apk.zip e unzip -qq example-apk.zip -d ReactNative.

  2. Naviga nella nuova cartella ReactNative e individua la cartella assets. All'interno di questa cartella, dovresti trovare il file index.android.bundle, che contiene il JavaScript React in un formato minificato.

  3. Usa il comando find . -print | grep -i ".bundle$" per cercare il file JavaScript.

Codice Javascript

Se controllando i contenuti di index.android.bundle trovi il codice JavaScript dell'applicazione (anche se minificato), puoi analizzarlo per trovare informazioni sensibili e vulnerabilità.

Poiché il bundle contiene effettivamente tutto il codice JS dell'applicazione, è possibile dividerlo in diversi file (potenzialmente facilitando il suo reverse engineering) utilizzando lo strumento react-native-decompiler.

Webpack

Per analizzare ulteriormente il codice JavaScript, puoi caricare il file su https://spaceraccoon.github.io/webpack-exploder/ o seguire questi passaggi:

  1. Crea un file chiamato index.html nella stessa directory con il seguente codice:
html
<script src="./index.android.bundle"></script>
  1. Apri il file index.html in Google Chrome.

  2. Apri la Developer Toolbar premendo Command+Option+J per OS X o Control+Shift+J per Windows.

  3. Clicca su "Sources" nella Developer Toolbar. Dovresti vedere un file JavaScript suddiviso in cartelle e file, che compongono il bundle principale.

Se trovi un file chiamato index.android.bundle.map, potrai analizzare il codice sorgente in un formato non minificato. I file di mappatura contengono mappature sorgente, che ti permettono di mappare identificatori minificati.

Per cercare credenziali sensibili e endpoint, segui questi passaggi:

  1. Identifica parole chiave sensibili per analizzare il codice JavaScript. Le applicazioni React Native spesso utilizzano servizi di terze parti come Firebase, endpoint del servizio AWS S3, chiavi private, ecc.

  2. In questo caso specifico, è stato osservato che l'applicazione utilizzava il servizio Dialogflow. Cerca un modello relativo alla sua configurazione.

  3. È stato fortunato che credenziali sensibili hard-coded siano state trovate nel codice JavaScript durante il processo di ricognizione.

Cambia il codice JS e ricostruisci

In questo caso cambiare il codice è facile. Devi solo rinominare l'app per utilizzare l'estensione .zip ed estrarla. Poi puoi modificare il codice JS all'interno di questo bundle e ricostruire l'app. Questo dovrebbe essere sufficiente per permetterti di iniettare codice nell'app per scopi di test.

## Bytecode Hermes

Se il bundle contiene bytecode Hermes, non potrai accedere al codice Javascript dell'app (neanche alla versione minificata).

Puoi controllare se il bundle contiene bytecode Hermes eseguendo il seguente comando:

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

Tuttavia, puoi utilizzare gli strumenti hbctool, hermes-dec o hermes_rs per disassemblare il bytecode e anche per decompilarlo in un codice JS pseudo. Per fare ciò, ad esempio, questi comandi:

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

Modifica il codice e ricostruisci

Idealmente dovresti essere in grado di modificare il codice disassemblato (cambiando un confronto, un valore o qualsiasi cosa tu debba modificare) e poi ricostruire il bytecode e poi ricostruire l'app.

Lo strumento hbctool supporta il disassemblaggio del bundle e la ricostruzione dopo che sono state apportate le modifiche, tuttavia supporta solo versioni obsolete del bytecode di Hermes.

Lo strumento hermes-dec non supporta la ricostruzione del bytecode.

Lo strumento hermes_rs supporta la ricostruzione del bytecode, ma è in realtà una libreria e non uno strumento CLI.

Analisi Dinamica

Potresti provare ad analizzare dinamicamente l'app utilizzando Frida per abilitare la modalità sviluppatore dell'app React e utilizzare react-native-debugger per collegarti ad essa. Tuttavia, per questo hai apparentemente bisogno del codice sorgente dell'app. Puoi trovare ulteriori informazioni su questo in https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/.

Riferimenti

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks