Buenas a todos!

En el post anterior vimos cómo instalar una aplicación en un dispositivo Android y en un iOS. En la entrega de hoy vamos a explicar cómo extraer una aplicación que esté instalada en un dispositivo móvil a nuestro equipo.

Recordad que para auditar una aplicación de un tercero es necesaria la autorización de este sino estaríamos cometiendo un delito.

iOS

Existen varias herramientas y técnicas para la extracción de aplicación iOS (.ipa), en nuestro caso, nos vamos a centrar en dos: frida-ios-dump e IPA Installer.

Frida-ios-dump

frida-ios-dump es una herramienta escrita en Python que permite la obtención del IPA descifrado en un dispositivo con jailbreak y extraerlo del dispositivo iOS mediante SCP de forma automática.

En primer lugar, tenemos que instalar FRIDA. Resumidamente, FRIDA es una herramienta que nos permite inyectar fragmentos de JavaScript permitiéndonos modificar dinámicamente la ejecución de la aplicación pudiendo modificar diferentes funcionalidades “on the fly” y llegando a alterar la lógica de la aplicación.

En nuestro equipo ejecutamos el comando “pip install frida-tools”.

Comprobamos la versión que tenemos instalada en el equipo “frida –version

Como nuestro dispositivo tiene el jailbreak realizado, accedemos a la aplicación “Cydia” y agregamos el repositorio de Frida para instalarlo. “Fuentes” → “Editar” → “Añadir” e introducimos el repositorio “https://build.frida.re

Una vez instalado, comprobamos que tenemos la fuente “build.frida.re” y accedemos. Seleccionamos “Todos los paquetes” y “Frida”.

Observamos que la versión que tiene de Frida es la misma que tenemos en el equipo instalada. Muy importante que estén en la misma versión.

Pulsamos en “Instalar” y “Confirmar” y comprobamos que se ha instalado correctamente.

Una vez instalado Frida en nuestro dispositivo con jailbreak, conectamos el dispositivo via USB al equipo y comprobamos que tenemos visibilidad desde el equipo al dispositivo “frida-ls-devices”.

Comprobamos que podemos ver los diferentes PID y procesos que se están ejecutando en el dispositivo que tenemos conectado via USB (-U) “frida-ps -U”.

Otro comando muy interesante es “frida-ps -Uai” , que nos lista todas las aplicaciones instaladas en nuestro dispositivo conectado via USB.

Una vez instalado FRIDA, procedemos a instalar la herramienta “frida-ios-dump”. Descargamos la herramienta desde el repositorio https://github.com/AloneMonkey/frida-ios-dump.

Una vez descargada, instalamos los requisitos para que la herramienta se ejecute correctamente.

El siguiente paso es forwardear el puerto ssh sobre usb. Nos descargamos el script “tcprelay.py” del repositorio https://github.com/rcg4u/iphonessh. Ejecutamos el script “tcprelay.py” indicando el puerto ssh y el puerto local y con el “&” hacemos que se ejecute en segundo plano.

Con el comando “frida-ps -Uai” localizamos el “Identifier” de la aplicación que queremos extraer del dispositivo, que en este caso es “UnCrackable1”.

Para descargarnos la aplicación, ejecutamos el comando “python3 dump.py Identifier”.

De esta forma tendríamos la aplicación descargada en el equipo.

Podemos comprobar que la aplicación no está descifrada ejecutando el comando “otool -l app | grep cryptid”.

IPA Installer

La herramienta “IPA Installer” nos permite instalar, desinstalar y extraer aplicación del dispositivo de una forma muy sencilla.

En primer lugar, en la aplicación “Cydia” comprobamos en “Fuentes” que tenemos el repositorio “BigBoss” instalado. En caso de no tenerlo instalado, Editamos y añadimos el repositorio http://apt.thebigboss.org/repofiles/cydia/

El siguiente paso es instalar la aplicación. Para ello le damos a “Buscar” e introducimos “IPA Installer”.

Pulsamos sobre “Instalar”, “Confirmar” y comprobamos que se ha instalado correctamente.

Nos conectamos al dispositivo mediante ssh, ejecutamos el comando “ipainstaller” y nos muestra todas las opciones que la herramienta nos ofrece. La opción más completa es con el parámetro “-B” descargándonos los documentos y las configuraciones en el fichero “.ipa”.

Listamos las aplicaciones del dispositivo con “ipainstaller -l”.

Una vez identificado el nombre de la aplicación, ejecutamos el comando “ipainstaller -B identifier” y la herramienta nos descarga la aplicación indicándonos la ruta de salida.

Comprobamos que se ha descargado en la ruta indicada.

Para facilitar el proceso de descarga del fichero “.ipa”, nos podemos conectar por SCP y descargar el fichero. En este caso, he usado Cyberduck. Para Windows, WinSCP.

Una vez descargado el fichero en nuestro equipo, descomprimimos el “.ipa” y comprobamos que se ha descargado la información.

También existen otras herramientas de extraer aplicaciones como CrackerXI, iOS-deploy, Clutch, dumpdecrypted entre otras.

Android

ADB

Cómo explicamos en el post anterior, vamos a emplear ADB (Android Debug Bridge) para la extracción de una aplicación que tenemos instalada.

En primer lugar, listamos las diferentes aplicaciones que tenemos instaladas en el dispositivo con el siguiente comando “adb shell pm list packages”.

En la captura anterior, vemos todas las aplicaciones instaladas. En nuestro caso, nos interesa filtrar por la aplicación “AndroGoat”. Sabiendo el nombre de la aplicación, filtramos la búsqueda: “adb shell pm list packages | grep owasp.sat.agoat”

Una vez comprobado que está la aplicación instalada en el dispositivo, buscamos la ruta donde se localiza: “adb Shell pm path owasp.sat.agoat”.

Para podernos descargar la aplicación debemos usar la opción “pull” que tiene incluida la herramienta adb para descargarnos ficheros del dispositivo a nuestro equipo: “adb pull ruta_fichero”.

Comprobamos que se ha descargado correctamente en nuestro equipo.

APK Extractor

Otro método que existe en Android para descargarnos un fichero .apk, es con la herramienta “APK Extractor”.

En primer lugar, vamos al Play Store y buscamos la aplicación “APK Extractor” y la instalamos.

Una vez instalada la aplicación, accedemos a ella y se muestra un listado con todas las aplicaciones instaladas. Pinchamos sobre la aplicación que queremos descargar y nos solita permisos para que la aplicación pueda guardar el ”.apk” en nuestro dispositivo.

Una vez descargada, nos sale el siguiente pop-up donde nos indica la ruta donde se ha guardado el ”.apk”.

Para extraer la aplicación del dispositivo tenemos varias opciones como puede ser usar “adb pull ruta_fichero” como se ha explicado en el otro método o subir la aplicación a Drive (por ejemplo).

En mi opinión, prefiero ejecutar el comando “adb pull ruta_fichero” debido a que es más rápido y más seguro (queda todo en local y no subes la aplicación a ningún servicio de terceros).

Espero que os haya sido útil para saber cómo extraer una aplicación móvil de un dispositivo Android e iOS.
En próximas entregas se explicará los diferentes tipos de análisis que podemos realizar a las aplicaciones durante una auditoria.

Saludos!

Recursos:

https://frida.re/docs/home/
https://medium.com/cybersecurityservices/analyzing-the-ipa-file-of-an-ios-based-application-9c0a1749fe69
https://github.com/AloneMonkey/frida-ios-dump
https://developer.android.com/studio/command-line/adb

Firmado: Carol

Sh3llCON no se hace responsable de las opiniones vertidas por sus colaboradores ni por las actuaciones que, fruto del conocimiento transmitido, puedan realizar terceras personas.

La imagen de cabecera se ha compuesto con 4 fotos cortesía de Pixabay

https://pixabay.com/es/photos/iphone-smartphone-escritorio-518101/
https://pixabay.com/es/photos/los-trabajadores-migrantes-1358036/
https://pixabay.com/es/photos/manera-personas-personal-empleado-1694101/
https://pixabay.com/es/photos/bet%C3%BAn-asfalto-construcci%C3%B3n-3392802/