Herramientas de pentesting en iOS

Posted by: Martin Pacheco Comments: 0 Post Date: August 10, 2018

Herramientas de pentesting en iOS

Al realizar pentesting en aplicaciones móviles normalmente existen ciertas limitaciones y restricciones en las modificaciones y configuraciones que se pueden hacer en el dispositivo. Cuando el objetivo es encontrar problemas de seguridad, es deseable para un pentester poder saltearse estas limitaciones con el fin de realizar pruebas con mayor libertad y poder probar las aplicaciones al límite.

Estas restricciones están presentes tanto en Android como en iOS y en ambos sistemas existen formas de escaparse de ellas. Para el caso de Android, se logra obteniendo privilegios de root, es decir, el usuario del sistema con mayores privilegios, técnica que se conoce comúnmente como rootear el dispositivo. Para iOS se realiza lo mismo, pero se suele llamar jailbreak o jailbreakear el dispositivo.

En esta entrada se explicará brevemente como realizar jailbreaking de un dispositivo iOS y una serie de herramientas útiles (varias de ellas necesitan tener jailbreak) al momento de realizar pentesting a una aplicación.

Obtener Jailbreak

Según el iPhone/iPad que se tenga para realizar las pruebas de seguridad va a depender de cómo realizar el jailbreak y si es posible o no, ya que, no todos los dispositivos y versiones de iOS son jailbreakeables.
A modo de ejemplo, analizaremos el caso de un iPhone 5C con la versión 10.3.3 de iOS.

Existe un subreddit dedicado a el jailbreak en donde hay una tabla con las alternativas posibles según el dispositivo: escape plan – jailbreak chars.
En nuestro caso vemos que la única opcion listada es usar el jailbreak h3lix.

En la página del mismo tenemos las instrucciones que nos indican descargar el .ipa y luego instalarlo al dispositivo.

Una de las maneras de instalarlo es usando iFunBox, pero en las pruebas realizadas en Mac devolvía el siguiente error:

Installation failed
Error# e800801c. Sorry for the inconvenience. Please send us feedback

Como alternativa, se optó por usar Cydia Impactor para instalar el .ipa.
Luego de instalarlo es necesario conectar el dispositivo y seleccionar el archivo desde el menú Device -> Install Package…. A continuación, se solicitará el email de la cuenta de Apple y luego será necesario generar una contraseña específica para la aplicación en https://appleid.apple.com/account/manage que será la contraseña a introducir cuando se pida.

Finalmente, y con la aplicación ya instalada en el dispositivo, el último paso antes de poder realizar el jailbreak, será realizar una configuración accediendo a Settings -> General -> Profiles & Device Management, seleccionar la cuenta introducida previamente al instalar la app y seleccionar la opción Trust para confiar en la aplicación y permitir que sea iniciada.

Con esto ya se puede abrir la aplicación y completar el jailbreak.
Se sugiere tener el dispositivo con más del 50% de batería y se recomienda que esté conectado y cargando, para evitar que se quede sin batería y se interrumpa el proceso y en el peor de los casos quede en un estado inconsistente o también llamado brickeado (del cual no siempre es posible recuperarse o son metodos complejos).

Herramientas

Cydia

Es una aplicación alternativa a la App Store para los dispositivos con jailbreak, desde ella se pueden instalar una gran variedad de aplicaciones, utilidades y tweaks que extienden las funcionalidades del dispositivo. Cydia en general se instala automaticamente cuando se hace jailbreak.
Se recomienda inicialmente actualizar los paquetes para tener las últimas versiones.

Nuestras recomendaciones de aplicaciones a instalar desde Cydia son las siguientes:

  • OpenSSH Servidor SSH para poder acceder a una shell de manera remota en el dispositivo.
    • Luego de instalarla es necesario reiniciar el dispositivo para que funcione.
    • Además, se recomienda conectarse por SSH hacia la IP asignada al dispositivo en la red wifi local con el usuario root clave alpine y cambiarla por una más segura.
    • También sería deseable agregar una clave pública a ~/.ssh/authorized_keys y deshabilitar el login con password vía ssh.
  • BigBoss Recommended Tools
    Conjunto de utilidades que generalmente se encuentran en sistemas UNIX pero que normalmente no vienen instaladas.
  • Insomnia
    Previene que la pantalla se suspenda o que el dispositivo se bloquee.
  • MTerminal
    Terminal liviana para acceder a una shell desde el dispositivo.
  • Class Dump Z
    Utilidad para examinar la información en tiempo de ejecución de los archivos Mach-O.
    Para instalarla puede ser necesario agregar el repositorio de appsec-labs.

SSL Kill Switch 2

Es una herramienta para deshabilitar la verificación de los certificados SSL/TLS utilizados en las conexiones que realiza la aplicación.
Esto es de gran utilidad cuando se necesita poder leer el trafico en texto plano de las conexiones que la aplicación realiza (usando BURP Suite, OWASP ZAP, etc) y hay mecanismos implementados que dificultan este tipo de análisis.

El repositorio oficial es: https://github.com/nabla-c0d3/ssl-kill-switch2 y tiene como requerimientos tener instalados Debian Packager, Cydia Substrate y PreferenceLoader (sugerimos instalarlos desde Cydia).

Una vez cumplidas las dependencias, se instala de la siguiente manera:

  • Descargar la última release desde la sección releases del repo.
  • Transferirla al dispositivo usando scp o iFunBox seleccionando Raw File System bajo el dispositivo (es necesario que esté conectado por USB).

  • Luego ejecutar los comandos:

    dpkg -i <package>.deb
    killall -HUP SpringBoard
    

    En donde <package> es el nombre del archivo .deb descargado previamente, una vez instalado, aparecerá un nuevo menú en las Settings que permite activar/desactivar.

Needle

Needle es un framework open source de MRWLabs que apunta a simplificar y centralizar en una sola herramienta el proceso de asesoría de seguridad en aplicaciones iOS.
Es el equivalente en iOS a el framework Drozer para Android (también de MRWLabs).

iNalyzer

iNalyzer es otro framework para realizar análisis de seguridad de aplicaciones iOS desarollado por AppSec Labs.

Clutch

Clutch es una herramienta para desencriptar aplicaciones y realizar análisis estático.

Frida

Frida es toolkit que permite modificar el comportamiendo de una aplicación iOS de manera dinámica utilizando inyección de código.
Hay una gran cantidad de desarrollo detrás de la misma. Se han creado frameworks que la utilizan y también integraciones con otras herramientas como es el caso de Brida que es una integración con Burp Suite.

EggShell

EggShell es una herramienta de post explotación para vigilancia y con funcionalidades extras que permiten acceso y control al dispositivo controlado como:

  • cargar/descargar archivos
  • tab completion
  • sacar fotos
  • localización de ubicación
  • ejecución de comandos
  • persistencia
  • escalamiento de privilegios
  • obtención de password (entre otros).
    (Nota: La herramienta asume que ya se logró una explotación previa)

Conclusiones

Existen más herramientas y frameworks que no fueron mencionados en esta entrada y constantemente surgen nuevas o se desarrollan forks con mejoras sobre las actuales.

El propósito de esta entrada fue dar una introducción a algunas de ellas y los beneficios que proporcionan en el contexto de un pentest a una aplicación iOS.

En futuras entradas se profundizará sobre el uso detallado sobre algunas de ellas.

Se deja además referencias a recopilaciones de herramientas y guias de pentesting en iOS:

Share this post

Leave a Reply

Your email address will not be published. Required fields are marked *