tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Apoya a HackTricks

An谩lisis de Aplicaciones React Native

Para confirmar si la aplicaci贸n fue construida sobre el framework React Native, sigue estos pasos:

  1. Cambia el nombre del archivo APK con una extensi贸n zip y extr谩elo a una nueva carpeta usando el comando cp com.example.apk example-apk.zip y unzip -qq example-apk.zip -d ReactNative.

  2. Navega a la carpeta ReactNative reci茅n creada y localiza la carpeta de assets. Dentro de esta carpeta, deber铆as encontrar el archivo index.android.bundle, que contiene el JavaScript de React en un formato minificado.

  3. Usa el comando find . -print | grep -i ".bundle$" para buscar el archivo JavaScript.

C贸digo Javascript

Si al revisar el contenido de index.android.bundle encuentras el c贸digo JavaScript de la aplicaci贸n (incluso si est谩 minificado), puedes analizarlo para encontrar informaci贸n sensible y vulnerabilidades.

Dado que el bundle contiene en realidad todo el c贸digo JS de la aplicaci贸n, es posible dividirlo en diferentes archivos (potencialmente facilitando su ingenier铆a inversa) usando la herramienta react-native-decompiler.

Webpack

Para analizar m谩s a fondo el c贸digo JavaScript, puedes subir el archivo a https://spaceraccoon.github.io/webpack-exploder/ o seguir estos pasos:

  1. Crea un archivo llamado index.html en el mismo directorio con el siguiente c贸digo:
html
<script src="./index.android.bundle"></script>
  1. Abre el archivo index.html en Google Chrome.

  2. Abre la Developer Toolbar presionando Command+Option+J para OS X o Control+Shift+J para Windows.

  3. Haz clic en "Sources" en la Developer Toolbar. Deber铆as ver un archivo JavaScript que est谩 dividido en carpetas y archivos, formando el paquete principal.

Si encuentras un archivo llamado index.android.bundle.map, podr谩s analizar el c贸digo fuente en un formato no minificado. Los archivos de mapa contienen mapeo de origen, lo que te permite mapear identificadores minificados.

Para buscar credenciales sensibles y endpoints, sigue estos pasos:

  1. Identifica palabras clave sensibles para analizar el c贸digo JavaScript. Las aplicaciones de React Native a menudo utilizan servicios de terceros como Firebase, endpoints de servicio AWS S3, claves privadas, etc.

  2. En este caso espec铆fico, se observ贸 que la aplicaci贸n estaba utilizando el servicio Dialogflow. Busca un patr贸n relacionado con su configuraci贸n.

  3. Fue afortunado que se encontraran credenciales sensibles codificadas en el c贸digo JavaScript durante el proceso de reconocimiento.

Cambiar el c贸digo JS y reconstruir

En este caso, cambiar el c贸digo es f谩cil. Solo necesitas renombrar la aplicaci贸n para usar la extensi贸n .zip y extraerla. Luego puedes modificar el c贸digo JS dentro de este paquete y reconstruir la aplicaci贸n. Esto deber铆a ser suficiente para permitirte inyectar c贸digo en la aplicaci贸n con fines de prueba.

##聽C贸digo de bytes de Hermes

Si el paquete contiene c贸digo de bytes de Hermes, no podr谩s acceder al c贸digo Javascript de la aplicaci贸n (ni siquiera a la versi贸n minificada).

Puedes verificar si el paquete contiene c贸digo de bytes de Hermes ejecutando el siguiente comando:

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

Sin embargo, puedes usar las herramientas hbctool, hermes-dec o hermes_rs para desensamblar el bytecode y tambi茅n para decompilarlo a alg煤n c贸digo JS pseudo. Para hacer esto, por ejemplo, estos comandos:

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

Cambiar c贸digo y reconstruir

Idealmente, deber铆as poder modificar el c贸digo desensamblado (cambiando una comparaci贸n, un valor o lo que necesites modificar) y luego reconstruir el bytecode y luego reconstruir la aplicaci贸n.

La herramienta hbctool soporta desensamblar el paquete y volver a construirlo despu茅s de que se hayan realizado los cambios, sin embargo, solo soporta versiones antiguas del bytecode de Hermes.

La herramienta hermes-dec no soporta la reconstrucci贸n del bytecode.

La herramienta hermes_rs soporta la reconstrucci贸n del bytecode, pero en realidad es una biblioteca y no una herramienta de l铆nea de comandos.

An谩lisis Din谩mico

Podr铆as intentar analizar din谩micamente la aplicaci贸n usando Frida para habilitar el modo desarrollador de la aplicaci贸n React y usar react-native-debugger para conectarte a ella. Sin embargo, para esto aparentemente necesitas el c贸digo fuente de la aplicaci贸n. Puedes encontrar m谩s informaci贸n sobre esto en https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/.

Referencias

tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Apoya a HackTricks