En este artículo, veremos como instalar la herramienta Frida, la cual es una de las herramientas más usadas e importantes cuando se trata de hacer pentesting a aplicaciones móviles. Aunque Frida sirve tanto para sistemas Android como iOS, nuestros ejemplos estarán basados en iOS, sin embargo, son replicables para Android.
Antes de comenzar, veamos algunos conceptos básicos:
¿Qué es Frida?
Frida es un framework de instrumentación dinámica utilizado para el análisis y modificación en tiempo de ejecución de una aplicación iOS. Permite realizar ingeniería inversa de forma dinámica, ejecutándose en paralelo con la aplicación para alterar su comportamiento y manipular su flujo de ejecución. Esto facilita la inspección de funciones, la interceptación de llamadas y la manipulación de datos en tiempo real.
Por otro lado, el análisis estático se realiza sin ejecutar la aplicación y suele ser más complejo, ya que implica el entendimiento de lenguajes de programación o, en el caso de iOS (archivos IPA), de lenguaje ensamblador. Para este tipo de análisis en iOS, se pueden utilizar herramientas como Hopper, IDA Pro o Ghidra, que permiten desensamblar y examinar el código de la aplicación en busca de vulnerabilidades o mecanismos de protección. En Android, podemos utilizar herramientas como JadX o JD-GUI para convertir los archivos APK a Java.
¿Cómo funciona Frida?
Frida ofrece dos modos de funcionamiento: inyección dinámica e integración embebida.
Inyección dinámica
El primer tipo de instalación se conoce como “Inyección dinámica”. En este modo, el dispositivo en el que el pentester realiza sus pruebas debe estar rooteado (android) o jailbrekeado (iOS), y contar con el componente frida-server instalado.
Este es el método más común en pentesting móvil, ya que frida-server actúa como un servidor de Frida que, por defecto, escucha conexiones en TCP y localhost, en el puerto 27042.
La principal ventaja de este enfoque es que solo requiere una instalación inicial. Además, permite instrumentar cualquier aplicación instalada en el dispositivo, brindando al pentester la capacidad de interceptar y modificar su comportamiento en cualquier momento.

Integración embebida
El segundo tipo de instalación se conoce como “integración embebida”, y es útil cuando se desea utilizar Frida en una aplicación instalada en un dispositivo sin altos privilegios (root/jailbreak).
En este caso, es necesario integrar el componente frida-gadget directamente dentro de la aplicación objetivo. Esto implica parchar la aplicación, ya sea de forma automática o manual, lo que requiere descompilarla, insertar frida-gadget y luego recompilarla.
La principal ventaja de este método es que permite el uso de Frida en dispositivos sin root/jailbreak. Sin embargo, el proceso puede ser tedioso si se necesita repetir en múltiples aplicaciones. Además, dependiendo de la aplicación, los pasos de instalación pueden variar o incluso no funcionar.

Bien, con esta información básica, vamos a instalar Frida, tanto en nuestro equipo de escritorio, como en un dispositivo móvil iOS:
1. Instalar Python y pip
- El prerrequisito para instalar Frida es contar con Python instalado y correctamente configurado dentro de nuestro equipo de escritorio o laptop. Esto garantizará que los comandos de instalación y ejecución de Frida funcionen sin inconvenientes.
- Para ello, vamos a descargar el instalador de Python desde su página oficial y seguir los pasos del asistente de instalación para completar el proceso correctamente. Python está soportado en una gran cantidad de sistemas operativos, incluyendo Windows, Linux y MacOS. En nuestro caso, mostraremos la instalación en MacOS:


- Vamos a continuar la instalación de manera normal, hasta finalizar:

- Ahora verificaremos que esté instalado correctamente, ejecutando el comando python3 –version:

- A continuación, instalaremos pip. En MacOS, tenemos varias formas de instarlo, ya sea a través de Homebrew, o ejecutando el comando python3 -m ensurepip. En este caso vamos a ver una forma directa, descargándolo desde el repositorio oficial https://pip.pypa.io/en/stable/installation/.
- Ejecutaremos el siguiente comando:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
- Luego ejecutaremos el paquete con python3 get-pip.py. Una vez instalado, verificamos:

2. Instalar Frida en equipo de escritorio/laptop
- Una vez que Python está instalado y configurado correctamente, procedemos a instalar Frida en la laptop utilizando el siguiente comando en la terminal:
pip install frida-tools

- Verificamos en el sistema:

3. Instalar Frida en equipo móvil
- Ahora procederemos a instalar Frida en el dispositivo móvil. El repositorio oficial se encuentra en el siguiente enlace: https://github.com/frida/frida/releases. En Android, basta con descargar los archivos que cuyo nombre incluye el sufijo android, por ejemplo: frida-server-[Version]-android-arm.xz, recuerda asegurarte de la arquitectura de tu dispositivo, ya que también tienes la android para x86, luego debes extraerlo y levantarlo como cualquier binario dentro del SO (./frida-server-[version]-android-arm) sugerimos colocar antes el binario en una carpeta que no tenga permisos restringidos, como temp, y modificar los permisos de ejecución (644 o 777).
- Como indicamos anteriormente, este artículo está enfocado en la instalación de Frida para iOS, por lo que, utilizando Cydia o cualquier otro gestor de aplicaciones alternativas (recuerda que el dispositivo debe contar con Jailbreak), vamos a agregar el repositorio de Frida: https://build.frida.re

- En nuestro caso tenemos Sileo, así que vamos a añadir el repositorio:

- Desde la opción Fuentes, agregamos la URP del repositorio:



- Ahora sí, instalamos Frida en el dispositivo:




3. Conexión a través de Frida
- Una vez que tengamos listas ambas instalaciones, nos conectaremos al dispositivo usando el servicio de Frida. Para ello tenemos dos métodos:
- Vía conexión USB: La conexión por USB es la más sencilla, ya que solo requiere conectar el dispositivo a la computadora y ejecutar frida -U, permitiendo interactuar con aplicaciones sin necesidad de configuración adicional. Desde la terminal, ejecutamos el comando:

- Los parámetros son los siguientes:
- -U: Indica que un dispositivo está conectado vía USB
- -a: Muestra información adicional sobre las aplicaciones en ejecución, como el identificador del paquete (bundle ID)
- -i: Incluye información sobre los procesos del sistema y procesos en segundo plano.
- Es importante verificar que el servicio de Frida se esté ejecutando correctamente en el dispositivo móvil, caso contrario obtendremos errores al ejecutar el comando anterior.

- Si queremos identificar el dispositivo conectado, ejecutaremos el comando frida-ls-devices:

- Vía conexión remota [IP]: La conexión remota por TCP/IP permite acceder al dispositivo sin cables, pero requiere iniciar Frida-Server con la IP del dispositivo. Este último método es útil para trabajar de forma inalámbrica, aunque requiere asegurarse de que ambos dispositivos estén en la misma red y configurar correctamente la escucha de Frida.
- Para hacerlo, primero obtendremos la IP del dispositivo:

- Ahora buscaremos ejecutaremos frida-server en modo escucha por IP, con el comando frida-server -l [IP]:


- Desde el equipo de escritorio, utilizaremos el siguiente comando para conectarnos de manera remota:

- A diferencia del comando anterior, tenemos el parámetro -H:
- -H [IP_dispositivo_iOS]: Especifica la IP del dispositivo iOS donde está corriendo Frida-Server, permitiendo la conexión remota.
Nota: Por defecto, frida-server se ejecuta en el puerto 27042. Si estás ejecutando otro proceso en el mismo puerto, podría presentarse un conflicto y no iniciar correctamente.
Frida nos abre muchas posibilidades para ejecutar ataques de instrumentación dinámica contra una aplicación. Por lo tanto, es imprescindible a la hora de hacer pruebas de pentesting. Algunas de las cosas que podemos hacer son:
- Interceptar y modificar funciones del sistema o de la aplicación iOS.
- Bypassear detecciones de Jailbreak y SSL Pinning.
- Extraer información sensible de la memoria en tiempo real.
- Automatizar pruebas de seguridad y pentesting.
Esperamos que el artículo te haya sido de utilidad.