martes, 6 de agosto de 2013

Ejecución de código en iPhone a través de USB y Apps maliciosas

Una nueva edición del certamen de seguridad informática por excelencia ha terminado estos días, y del nutrido grupo de presentaciones, una de las que ha tenido bastante eco en los medios ha sido la demostración pública de una vulnerabilidad que permitiría la ejecución de código en terminales iPhone a través de USB, que afectaría a todas sus versiones, incluida iOS 7 (aunque sólo hasta la beta 2). También se anunció una segunda vulnerabilidad con impacto similar a través de aplicaciones que eluden la sandbox de iOS.

MACTANS: una vulnerabilidad en los perfiles USB de iOS

Como se puede leer en el documento oficial publicado y comprobar en el video de la entrevista realizada por la CBS, los investigadores Billy Lau, Yeongjin Jang, Chengyu Song, Tielei Wang y Pak Ho Chung del grupo universitaro de la Georgia Tech Information Security Center (GTISC) han demostrado un método efectivo y automático para ejecutar código e instalar aplicaciones maliciosas de manera invisible en el terminal utilizando conexiones USB, en su caso un 'cargador' manipulado.

Este método o vector de ataque, que ya hicieron público el pasado junio, denominado MACTAN, se basa en las siguientes premisas:

  • No es un "jailbreak", no es necesario que al iPhone se le haya efectuado un "jailbreak" y disponga de una cuenta de root.
  • Es automático, sólo es necesario conectar el dispositivo y se procede con el ataque, siempre y cuando se encuentre desbloqueado o sin código de bloqueo.
  • Es totalmente transparente para el usuario.
  • Posee un nivel de acceso al dispositivo mucho mayor que ataques anteriores.
        


La vulnerabilidad de la que se sirven los investigadores para instalar código malicioso, se basa en la capacidad de emparejamiento de un dispositivo USB en iOS, ya que han demostrado que un dispositivo iPhone se empareja automáticamente sin ningún tipo de autenticación. Lo que hace posible obtener el código de identificación único (UDID) y mediante la generación de perfiles de provisionamiento de Apple (.mobileprofile) especialmente manipulados, instalar automáticamente y en segundos una aplicación  maliciosa.

La vulnerabilidad en esencia

Cuando conectamos un dispositivo iOS a otro USB se inicia un proceso de emparejamiento para poder ofrecer diferentes servicios, aparte de la consabida carga o transferencia de datos:

  • Identificación única de dispositivo UDID (UUID), números de serie del terminal, versión del terminal…
  • Realización o restauración de una copia de seguridad del dispositivo o firmware (ipsw)
  • Acceso a funciones de desarrollo (modo debug)
  • Instalación o eliminación de aplicaciones a través de perfiles de provisionamiento (.mobileprofile)

El problema viene que de serie, iOS no comprueba correctamente a qué dispositivo nos conectamos y procede al emparejamiento automático, siempre y cuando el terminal se encuentre desbloqueado (no tenemos activado la contraseña).

Tras esto, podemos obtener su identificador UDID, necesario para instalar aplicaciones en el dispositivo en conjunción con el perfil adecuado para poder instalar una aplicación. Un "provisioning profile" es un contenedor de diferentes documentos que autorizan la instalación de una aplicación:

  • Uno o más certificados de desarrollo (developer certificate), e identificador de dispositivo (device id) así como un identificador de la aplicación a instalar.

Valiéndose de la capacidad de utilizar los perfiles de provisionamiento a través de USB, se creó un sistema hardware independiente e intermedio mediante una placa Beagleboard (similar a las Raspberry Pi), y un sistema Linux modificado con todo lo necesario para realizar una conexión a los servidores de Apple, y obtener los certificados adecuados a través de cuentas de desarrollo y poder permitir la instalación de la aplicación maliciosa.

Como vemos este vector de ataque permitiría la instalación de la segunda vulnerabilidad encontrada que será demostrada durante la USENIX Security Symposium 2013

Jekyllapps: una vulnerabilidad en la sandbox de iOS

Esta vulnerabilidad (dos en realidad) permite ejecutar código de manera remota a través de la evasión del sistema de revisión de aplicaciones de Apple mediante apps especialmente manipuladas (jekyllapps).

Estas aplicaciones se han modificado para no ser detectadas en el proceso de revisión y publicación de Apple y permitirían, una vez instaladas, controlar remotamente el dispositivo u otras aplicaciones instaladas en él, eludiendo la sandbox de iOS.

"We implemented a proof-of-concept Jekyll app and successfully published it in App Store. We remotely launched the attacks on a controlled group of devices that installed the app. The result shows that, despite running inside the iOS sandbox, Jekyll app can successfully perform many malicious tasks, such as stealthily posting tweets, taking photos, stealing device identity information, sending email and SMS, attacking other apps, and even exploiting kernel vulnerabilities."

Actualmente las únicas versiones de iOS no vulnerables son las nuevas betas (3 y 4) de iOS 7. Los investigadores y la firma han coordinado la publicación de la vulnerabilidad para proveer de las actualizaciones oportunas. Como se puede observar en la captura, iOS 7 ya informa de la conexión de un dispositivo USB al que va a conectarse:


Más información:

Mactans: Injecting Malware into iOS Devices via Malicious Chargers

Jekyll Apps

Jekyll on iOS: When Benign Apps Become Evil

Attackers can compromise your iPhone through chargers and apps


José Mesa Orihuela

No hay comentarios:

Publicar un comentario en la entrada