Pentesting a Aplicaciones Móviles desde cero

0. Rooting Android & Jailbreaking iOS

Android

Te recomiendo utilizar un dispositivo Android para probar la aplicación. Si no puedes conseguir uno, puedes usar una VM de Android, pero yo encuentro más sencillo configurar un dispositivo Android. Hay muchas guías en Internet para rootear un dispositivo Android. Para esta guía, he rooteado un Xiaomi Redmi S2 usando Magisk TWRP.

Pasos:

  1. Activa las opciones del desarrollador (Settings > About phone – pulsa en la version unas cuantas veces).
  2. Ve a las opciones del desarrollador (Settings > Additional Settings >Developer options).
  3. Activa la depuración USB. En la mayoría de los dispositivos Android, puedes activar la depuración USB directamente. En los dispositivos Xiaomi, es necesario desbloquear primero el Bootloader. Para ello, activa primero «Desbloqueo OEM» y «Depuración USB». Luego ve a «Estado de desbloqueo Mi» y añade una cuenta Mi (necesitas una tarjeta SIM con acceso a Internet para hacerlo).
  4. Conecta el dispositivo a tu ordenador y descarga Fastboot y el TWRP image con la imagen de tu dispositivo.
  5. Descargar Magisk y copiar el zip en el almacenamiento del teléfono.
  6. Pon tu dispositivo en fastboot mode (pulsa botón power + botón de bajar volumen).
  7. Abre un CMD y ejecuta los siguientes comandos para instalar la imagen TWRP en tu dispositivo:
    fastboot flash recovery recovery.img
    
    fastboot boot recovery.img
  8. puede que el último comando no termine nunca, pero no pasa nada, simplemente apaga el dispositivo.
  9.  
  10. Pon tu dispositivo en modo recovery (botón de encendido + botón de subir volumen).
  11. Ahora toca en «Instalar» y selecciona el zip de Magisk que has añadido antes.
  12. Reinicia el dispositivo y ya deberías ser root.

Puedes descargar Root checker para confirmar que has rooteado tu dispositivo.  Otras aplicaciones útiles son Termux para tener una terminal en tu móvil y adb Insecure para ejecutar adb como root.

iOS

Puedes comprobar tu modelo y versión de iOS en https://pangu8.com/jailbreak/. Cada modelo y versión de iOS tiene diferentes formas de hacer jailbreak al dispositivo.

Algunas formas requieren MacOS para hacer jailbreak al iphone/ipad, pero la mayoría de ellas se pueden hacer usando Windows. La forma más fácil es usando  Unc0ver. Desplázate hacia abajo para ver la guía y sigue los pasos para instalar unc0ver y hacer jailbreak al dispositivo.

Ahora puedes usar Cydia para instalar todos los paquetes y aplicaciones que necesites, como A-Bypass, Frida, OpenSSH, etc.

1. Comunicación con el dispositivo

Android – Instalación de ADB

Android Debug Bridge (adb) es una versátil herramienta de línea de comandos que le permite comunicarse con un dispositivo. Puedes descargarla como parte de  SDK Platform Tools.

Descomprime la carpeta y añádela al PATH para poder ejecutar ADB en cualquier lugar.

Ejecuta adb devices para listar todos tus dispositivos:

Pentesting a Aplicaciones Móviles desde cero

iOS- OpenSSH

 

La comunicación entre tu portátil y tu iphone/ipad debe hacerse a través de OpenSSH. Puedes descargarlo aquí.

Una vez que lo tengas instalado en tu portátil, tienes que instalar la fuente de OpenSSH en Cydia (Buscar > OpenSSH > Instalar).

Ahora puedes conectarte a tu dispositivo como root usando ssh y la IP de tu dispositivo (la IP la puedes encontrar en Ajustes > Wifi > icono de información > Dirección IP). La contraseña por defecto es «alpine»:

Pentesting a Aplicaciones Móviles desde cero

2. Instalacion de Frida & Objection

Frida es un conjunto de herramientas de código dinámico que se utiliza para adherirse al proceso de ejecución de la aplicación y modificar el código sobre la marcha sin necesidad de volver a lanzarlo o empaquetarlo.

Objection utiliza Frida y tiene algunas funcionalidades útiles de fácil acceso.

Primero tienes que instalar el cliente en tu portátil. Ambas son herramientas de python y se pueden instalar con pip:

pip install frida-tools
pip install objection

Nota: es posible que tengas que añadir al PATH la ruta de Python Scripts para poder ejecutar estos comandos en cualquier lugar.

Ahora necesitas instalar el servidor Frida en tu dispositivo.

Android

Descarga el servidor Frida aquí: https://github.com/frida/frida/releases

Descomprímelo y usa ADB para poner el archivo en tu dispositivo:

adb push frida-server /data/local/tmp/

Cambia el permiso del archivo frida-server y ejecútalo en segundo plano:

adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "/data/local/tmp/frida-server &"

iOS

Añade el repositorio de Frida a Cydia (Manage > Sources > Edit > Add > https://build.frida.re). Ahora ve a fuentes, selecciona la fuente de Frida e instala el paquete de Frida.

Ahora puedes ejecutar frida-ls-services para listar todos los dispositivos conectados:

Pentesting a Aplicaciones Móviles desde cero

La instalación fue exitosa si puede ver las aplicaciones instaladas en el dispositivo cuando ejecuta frida-ps -Uai

Pentesting a Aplicaciones Móviles desde cero

SSL-Pinning y Root detection bypass

 

La mayoría de las aplicaciones tienen SSL-Pinning para prevenir ataques de Man in the Middle. Necesitamos tenerlo desactivado para utilizar Burpsuite e interceptar las peticiones. Lo ideal es que el cliente nos envíe dos copias de la aplicación, una con SSL-Pinning y otra sin él. Pero si no es el caso, podemos intentar saltárnoslo usando Frida y Objection:

Android:

objection --gadget <app name> explore
android sslpinning disable

iOS:

objection --gadget <app name> explore 
ios sslpinning disable
Pentesting a Aplicaciones Móviles desde cero

Lo mismo ocurre con los dispositivos rooteados. Algunas aplicaciones intentan detectar si el dispositivo está rooteado/jailbroken y si es así, se detienen. Puedes usar Objection también usando estos comandos:

objection --gadget <app name> explore 
android root disable

Puedes usar Objection también para iOS, pero requiere algunos pasos más, y me pareció más fácil evitar la detección del jailbreak usando el paquete de A-Bypass Cydia. Añade la fuente http://repo.co.kr a Cydia e instala el tweak A-Bypass. Luego ve a Ajustes > A-Bypass y desplázate hacia abajo. Encuentra la aplicación que quieres anular y márcala.

3. Obtener los archivos IPA y APK

Necesitarás los archivos IPA y APK para hacer el análisis estático. Si el cliente no lo proporcionó y tuviste que instalarlo usando Google Play / Apple Store, puedes obtenerlo siguiendo estos pasos:

Android

Puedes descargar el apk usando adb.

Enumera las rutas de todas las aplicaciones instaladas:

Pentesting a Aplicaciones Móviles desde cero

Usa adb pull para descargar el apk (ten en cuenta que no tienes que escribir la última parte de la ruta):

Pentesting a Aplicaciones Móviles desde cero

iOS

      1. Usa ssh para abrir un terminal.
      2. Ve a /var/containers/Bundle/Application
      3. Encuentra el id de tu aplicación usando este comando:
        ls * | grep -B 2 -i '<app name>'

        Pentesting a Aplicaciones Móviles desde cero

      4. Crea una carpeta llamada «Payload» y copia la carpeta .app. A continuación, comprimir la carpeta Payload como el archivo IPA:
    cp -r <appName>.app/ Payload/
    
    zip -r /var/root/IPA/appName.ipa Payload/
    

Ahora puedes mover tu archivo IPA a tu ordenador usando scp:

scp root@<iphone IP>:/var/root/IPA/appName.ipa appName.ipa

4.Ingeniería Inversa

Puedes descompilar una aplicación para ver el código y buscar credenciales en hardcodeadas o funciones peligrosas:

 

Pentesting a Aplicaciones Móviles desde cero

Un archivo apk no es más que un archivo comprimido con los recursos, los archivos .dex y el Manifiesto de Android. Así que puedes obtener estos archivos renombrando el archivo .apk a .zip y descomprimiéndolo. Luego puedes usar dex2jar  para convertir el archivo classes.dex en un .jar:

Pentesting a Aplicaciones Móviles desde cero

Finalmente, puedes abrir este archivo .jar con jd-gui y ver el código.

5. Análisis de Aplicaciones Móviles Automatizado

Hay muchas herramientas diferentes que se pueden utilizar para analizar una aplicación móvil. Una de las herramientas más conocidas es  MobSF. Puedes descargar la herramienta (tiene algunos requisitos). En Windows y Linux podrás hacer un análisis estático de APKs. Si quieres analizar un IPA, necesitarás un mac.

También puedes usar la versión MobSF live y subir el IPA/APK. Pero no hagas esto con aplicaciones cliente no públicas, porque cuando subas el archivo a la web, los datos del análisis serán públicos y cualquiera podrá verlos. Subirlos puede suponer una violación de la privacidad de nuestros clientes.

6. Interceptando peticiones con Burpsuite

Puedes usar Burpsuite para interceptar la petición que hace la aplicación. La forma en que lo hago es creando un hotspot móvil en Windows

Pentesting a Aplicaciones Móviles desde cero

Ve a Burpsuite > Proxy > Opciones y edita el Proxy Listener para que escuche todas las interfaces.

Conecta tu dispositivo a esta wifi, ve a las opciones de la wifi y configura el proxy como Manual. Pon la IP de tu ordenador como Servidor, y el puerto del listener como Puerto. El último paso es descargar el certificado de Burpsuite. Puedes seguir esta guía para Android y esta otra para iOS.

Ahora deberías poder interceptar las peticiones con Burpsuite.

Y ya está. Después de todos estos pasos, tu entorno debería estar configurado y listo para realizar un pentesting de aplicaciones móviles. Espero que hayas disfrutado de este post. 

Lethani.

Rate this post

Deja un comentario