Introducción a las pruebas de penetración en dispositivos iOS

Publicado en

Todos queremos tener en la palma de nuestra mano, un dispositivo que nos mantenga informados, actualizados, con juegos que nos entretengan, tomar fotos y videos, subir publicaciones a las redes sociales sobre nuestros gustos y lugares que visitamos, revisar los correos de la empresa, mantenernos comunicados con amigos y familiares de manera sencilla; para todas esas tareas, ya existen más de una aplicación que podemos descargar a nuestro smartphone. 

Apple se ha convertido en la marca más valiosa del mundo [1] con alrededor de 700 millones de dispositivos corriendo bajo el sistema operativo de iOS [2], más de un millón de aplicaciones y 60 billones de descargas [3], siendo utilizados para realizar actividades personales y laborales. 

Un aspecto a tomar en cuenta, es la posibilidad de hacerle “jailbreak” al smartphone, permitiéndole al usuario correr aplicaciones sin haber pasado por el proceso de verificación que realiza Apple y desbloquear el sistema operativo dándole privilegios de usuario root. Estos datos aunados al hecho de que se ha contabilizado más de un millón de malware distintos para dispositivos móviles [4] ha generado un interés en estudiar a las aplicaciones para conocer el nivel de seguridad y el riesgo que representan. 

Los tipos de aplicaciones en iOS, se pueden clasificar en:

  • Aplicaciones nativas, desarrolladas en Objective C y el framework de Cocoa Touch, vulnerables principalmente a ataques de tipo buffer overflow.
  • Aplicaciones híbridas, implementan en su totalidad o sólo parte del código en html + css + JavaScript, dejando abierta la posibilidad a ataques estilo Cross Site Scripting (XSS) y Cross Site Request Forgery (XSRF), y también a los ataques de buffer overflow [5].

Cuando se hacen pruebas a las aplicaciones móviles, se tiene que aprender cómo construir un ambiente para las pruebas de las aplicaciones móviles y aplicar técnicas para descubrir fallas dentro de la aplicación y en los sistemas que conforman el backend de la aplicación. El profesional encargado de probar la aplicación debe de tener la habilidad de identificar por donde se podría fugar la información que maneja la aplicación, y para ello necesita tener conocimientos acerca de la arquitectura y de la plataforma móvil, construir un laboratorio de pruebas, interceptar el tráfico entre los web services y las aplicaciones, inyectar tráfico malicioso y detectar posibles fugas de información en el dispositivo.

Tipos de pruebas de penetración

Las pruebas de penetración se pueden clasificar en: 

Caja Blanca: se cuenta con el código fuente de la aplicación y la documentación. Se simula el ataque y el daño que podría ocasionar un trabajador interno enojado o desleal. En éste tipo de prueba, se encuentran cuestiones relacionadas a: fallas lógicas, caminos mal estructurados en el código, el flujo de entradas específicas a través del código, funcionalidad de ciclos y condiciones, hoyos de seguridad interna y permite probar cada objeto y función de manera individual.

Caja Negra: el tester no tiene acceso al código, ni a la documentación. Lo único con lo que cuenta para trabajar es con la versión descargable de manera pública de la aplicación. Se simula un ataque lanzado por un hacker; el vector de ataque más común, es la intercepción de tráfico y la inyección de contenido malicioso para obtener información. Éste tipo de pruebas, trata de explotar vulnerabilidad de tipo Cross Site Scripting(XSS), inyección de link e inyección de comandos SQL.

Caja Gris: es una combinación de ambas, se realiza un análisis con la ventaja que se cuenta con el código y documentación, que sirven como guía. 

Dependiendo del tipo prueba, serán las técnicas y tipos de resultados que arrojará el estudio. Hay que tener en cuenta, que un atacante sólo tiene que encontrar un vector de ataque que sea exitoso; mientras que el profesional de las pruebas de penetración tiene como objetivo detectar la mayor cantidad de hoyos de seguridad que pudieran ser explotados. 

El Open Web Application Security Project (OWASP) ha formulado guías de los aspectos que se deben tener en cuenta cuando se evalúa una aplicación iOS [6]. La figura 1 ilustra los aspectos sobre la plataforma en sí mismo, y la figura 2 los aspectos relacionados con ataques de la red. 

 


Figura 1
. Checklist de tareas al evaluar una aplicación iOS (Cornea & Haddix, 2013)

 


Figura 2.
Checklist de tareas al evaluar una aplicación iOS en cuanto a ataques de la red (Cornea & Haddix, 2013)

 Vectores de Ataque

Las partes que conforman la arquitectura de una aplicación móvil, permiten identificar los diferentes vectores de ataques:

  • El software ejecutándose en el dispositivo móvil.
  • Canal de comunicación.
  • Infraestructura del lado del servidor.

Partiendo la lista anterior, se puede analizar las vulnerabilidades potenciales. Empezando por aprender acerca de la aplicación sujeta a las pruebas de penetración y la infraestructura que le da soporte, ésta fase se le conoce como information gathering (recolección de información) y permite conocer las tecnologías que utiliza la aplicación y así poder diferenciar el comportamiento esperado de un comportamiento anormal. 

El primer paso, es familiarizarse con la aplicación como lo haría un usuario común, navegar en ella y entender el flujo normal de la aplicación. Después se tienen que interceptar peticiones y respuestas HTTP, con una herramienta como Burp Suite, para analizar, modificar y reenviar los paquetes y observar el comportamiento obtenido para ampliar el análisis se utilizarán herramientas para el sniffing como tcdump y Wireshark.

El dispositivo móvil se debe configurar para utilizar el proxy, y poder empezar a interceptar el tráfico en búsqueda de paquetes que contengan nombre de usuario, contraseñas, consultas SQL, datos de geolocalización, tokens, etc. Durante el análisis de tráfico que genera la aplicación es importante estar atento a los mensajes de errores, inyección SQL, manejo inadecuado de sesiones, criptografía débil, notificaciones Push, autenticación, autorización, almacenamiento de los datos, validación de datos y denegación de servicio. 

Las pruebas de penetración de caja negra enfocadas al análisis del tráfico de información, servirán para generar fuzzing cases o modelado de amenazas que sirvan para identificar áreas riesgo y probablemente considerar la implementación de un ciclo de vida que contemple la seguridad durante todo el proceso de desarrollo, como lo formula el Software Development Lifecycle (SDL) y la utilización del modelado de amenazas STRIDE. El siguiente paso en el estudio de la aplicación, es el análisis en tiempo de ejecución, el almacenamiento de información (logs, respaldos, bases de datos SQLite, cache del teclado), estudiar las mejoras del iOS 7 y las características que ofrece al problema del uso del celular en las empresas (BYOD). 

El número de aplicaciones maliciosas va en aumento como lo establece McAffee Labs en su reporte Threats Predictions 2013 y prevé que sigua a la alza, las amenazas en los dispositivos móviles  de malware, gusanos, ransomware, spam SMS, smishing, botnet móviles, entre otros. 

Al utilizar una aplicación, es importante estar conscientes de los privilegios que se le otorgan, qué tipo de información almacena en el dispositivo, si utiliza encriptación para almacenar los datos o para mandar información a través de la red; y establecer lo que podrían recuperar en caso de que el dispositivo se perdiera y cayera en manos equivocadas.  

Referencias

[1] Universal, E. (2013). Apple desplaza a Coca-Cola como marca más valiosa. Visto el 13 de octubre del 2013, en http://www.eluniversal.com.mx/finanzas-cartera/2013/apple-coca-cola-954713.html

[2] Statt, N. (2013). Apple by the numbers: 700M iOS devices shipped. Visto el 7 de octubre del 2013, en http://news.cnet.com/8301-13579_3-57602117-37/apple-by-the-numbers-700m-ios-devices-shipped/

[3] Cook, T. D. (2013). Apple Keynote October 2013.  Visto en http://www.apple.com/apple-events/october-2013/ el 25 de octubre del 2013

[4] Osborne, C. (2013). Malicious apps, mobile malware reaches 1 million mark. Visto el 16 de octubre del  2013,  en http://www.zdnet.com/malicious-apps-mobile-malware-reaches-1-million-mark-7000021371/

[5] Shah, K. (2012). Penetration Testing for iPhone / iPad Applications, 1–34.

[6] Cornea, O., & Haddix, J. (2013). IOS Application Security Testing Cheat Sheet. Visto el  19 de octubre del 2013, en https://www.owasp.org/index.php/IOS_Application_Security_Testing_Cheat_Sheet