Cuando un usuario utiliza herramientas como
iFile significa que tienen el terminal
iPhone con
jailbreak. Esto puede suponer un riesgo grande ya que se tiene la posibilidad de ejecutar acciones como
root con todo lo que ello conlleva.
iFile es una
app que se encarga de proporcionar un explorador de archivos al usuario y, además, proporcionar un servicio con el que el usuario pueda intercambiar ficheros mediante protocolo
HTTP. Cuando el usuario utiliza la herramienta se puede acceder a través del puerto
10000 a una interfaz web.
A través de dicha interfaz podemos subir
y
descargar
archivos para intercambiarlos con otros dispositivos. Lo primero que llama la atención es la no utilización de
ningún tipo de cifrado en la conexión
entre
iFile y el dispositivo que se conecta, pero además no existe
ningún tipo de autenticación por defecto, lo que permite que cualquier usuario que se encuentre
iFile activo, por ejemplo en segundo plano tras utilizarlo, tiene acceso completo al dispositivo. Recordad que
iFile se ejecuta como
root, por lo que el acceso al dispositivo será completo pudiendo descargar el fichero de usuarios, agenda, fotos,
SMS, etcétera. Hace pocos días hablamos en
Seguridad Apple de
dos bugs encontrados en la herramienta Air Transfer cuya finalidad es similar a la de
iFile. La diferencia es que
Air Transfer no se ejecuta como
root.
 |
| Figura 1: Acceso iFile a través de navegador |
Analizando peticiones
Tras analizar diferentes peticiones llegamos a las siguientes conclusiones:
- Es fácilmente implementable en un script que detecte esta app en el puerto 10000.
- Podemos automatizar la descarga de contenido que nos interese en el dispositivo.
- La utilización de iOS con jailbreak en redes no seguras, como por ejemplo WiFi en centros comerciales, ponen en riesgo la confidencialidad del dispositivo. Esta afirmación hay que matizarla, y es que lógicamente debemos tener claro que el usuario debe tener abierto la app. En muchas ocasiones un usuario piensa que la app se ha cerrado, aunque se encuentre realmente en background.
 |
| Figura 2: Petición a la raíz del servidor |
La respuesta obtenida es el listado de archivos que podemos encontrar en la raíz del dispositivo.
iFile responde en formato
HTML tal y como se puede ver en la siguiente imagen.
 |
| Figura 3: Respuesta al GET presentando información |
Cualquier usuario malicioso puede preparar un
script malicioso que compruebe en la red en la que se encuentre si existe un servidor web en el puerto
10000 y si lo que se presenta en ese puerto corresponde con la app. En el siguiente ejemplo se ha hecho una
pequeña prueba de concepto en la que se realiza una petición directamente a un recurso dónde se encuentra el fichero
SystemVersion.plist. En este fichero se indica la versión del sistema operativo, entre otras cosas.
 |
| Figura 4: Código Ruby con petición a iFile al recurso SystemVersion.plist |
Lógicamente se podría ampliar mucho la funcionalidad, tanto en detección
como en explotación
y obtención de ficheros. Además, la integridad de los ficheros que se encuentran en el dispositivo queda en riesgo, ya que pueden ser descargados, alterados y subidos. A continuación se muestra un ejemplo de la salida del
script.
 |
| Figura 5: Ejecución del script |
La versión del dispositivo es un
iOS 7.1.1, pero como se puede entrever este tipo de aplicaciones son un riesgo si quedan olvidadas en el equipo y siguen funcionando. El acceso completo al dispositivo de forma remota debe estar siempre controlada por el usuario y que éste no sea olvidadizo.