Identificación de dispositivos iOS a través del usuario.

Destripando iOS.
Parte II. Identificación.

Toca estudiar la identificación de iDevices a través del usuario o de las apps que utiliza. De esta forma conoceremos si un determinado usuario utiliza un dispositivo iOS, o no. Incluso qué tipo de dispositivo, que versión de iOS, y alguna que otra cosa más… Comentaremos algún caso curioso del pasado y terminamos profundizando con una reflexión sobre la seguridad de la información.

1.- Identificando dispositivos iOS a través del usuario.
En este capítulo estudiaremos la identificación de dispositivos iOS a través del usuario. Bien por la participación del propio usuario o a través de las apps (aplicaciones en dispositivos iOS) que utiliza. De esta manera comprobaremos si un determinado usuario utiliza un dispositivo iOS, o no.

1.1.- A través del número de teléfono.
Existen varias apps que mediante el número de teléfono nos indican si el usuario utiliza un dispositivo iOS.

1.1.1.- iMessage.
iMessage es un servicio de mensajería que se utiliza tanto en iOS como en OS X.

Se trata de un servicio bastante reciente que posibilita a los usuarios enviar mensajes entre dispositivos iOS / OS X.

En dispositivos iOS este servicio funciona a través de la app de Mensajes (SMS). Para ello creamos un mensaje como si de un SMS o MMS se tratase y si el destinatario del mensaje dispone de un dispositivo iOS podremos enviarlo a través de este servicio de forma totalmente gratuita.

Y ahora la pregunta que nos interesa… ¿Como sabemos que el destinatario utiliza iMessage y por extensión iOS /OS X? Pues muy fácil, creamos el mensaje y cuando introducimos el número de teléfono del destinatario o el contacto de la agenda cambia automáticamente de servicio, de SMS a iMessage, y nos avisa mediante un “bocadillo” que el destinatario utiliza iMessage de iOS.

Ejemplo con un contacto que no dispone de un iDevice iOS:

Sin iMessage

En los siguientes ejemplos utilizamos un contacto que utiliza iOS:

Con iMessage

Al introducir el contacto vemos que la app cambia de “Nuevo Mensaje” a “Nuevo iMessage”.

Cuando la app detecta que se trata de un contacto que utiliza iOS / iMessage introduce un icono de “bocadillo” para indicar que el contacto utiliza este servicio.

Con iMessage 2

En el próximo capítulo seguiremos estudiando la identificación de dispositivos iOS, pero esta vez a través del usuario o de las aplicaciones que utiliza…

1.1.2.- Whatsapp!.
El servicio de mensajería multiplataforma creo que necesita presentación.

A través de esta app también podríamos conocer que usuarios utilizan un dispositivo con iOS.

Todos los iPhone que envían un mensaje a través de Whatsapp! Son recibidos por el destinatario como “iPhone de Pepito el grillo”.

WhatsApp!

1.2.- Redes sociales. (Tuenti, Facebook, Twitter].
Aunque hoy en día no se puede identificar los dispositivos iOS a través de la mayoría de redes sociales antaño si se podía y se han dado casos bastante simpáticos, como el caso de Alicia Keys, representante de Blackberry.

Anteriormente cuando escribíamos un estado o un tweet e las redes sociales aparecía el contenido del mensaje más una nota informativa desde el dispositivo en que fue enviado.

Alicia Keys Twitter

Es gracioso ver como un representante de BlackBerry, Alicia Keys, utiliza un dispositivo de la competencia, en este caso un iPhone. ¡Una buena metedura de pata, sin duda! 😉

Actualmente ya no se muestra esa información.

Facebook ya no identifica dispositivos

Solo se muestra que ha sido enviada desde un dispositivo móvil.

1.3.- User-Agent del navegador.
Cuando un usuario accede a una página web, la aplicación generalmente envía una cadena de texto que identifica al agente de usuario ante el servidor. Este texto forma parte del pedido a través de HTTP, llevando como prefijo User-agent: o User-Agent: y generalmente incluye información como el nombre de la aplicación, la versión, el sistema operativo, y el idioma. Los bots, como los web crawlers, a veces incluyen también una URL o una dirección de correo electrónico para que el administrador del sitio web pueda contactarse con el operador del mismo.

Vamos a identificar un dispositivo iOS a través del User-Agent para ello necesitamos que el usuario a través de una app en este caso Safari navegue hacia una URL que controle el atacante.

Para la identificación me voy a valer de Netcat. Netcat es una herramienta de red que permite a través de intérprete de comandos y con una sintaxis sencilla jugar con los puertos y hacer alguna que otra virguería.

Podéis descargar netcat desde aquí: http://eternallybored.org/misc/netcat/netcat-win32-1.11.zip

Para GNU/LiNUX desde aquí: http://netcat.sourceforge.net/download.php

Voy a simular con netcat un servidor WEB. Para ello lanzo netcat con los siguientes parámetros:

nc –vv –l –p 80.

nc: netcat.

–vv: Muestra información de la conexion, al ser doble v será más expectativo. (Very Verbose).

-l: Pone un puerto a la escucha (modo Listening). Acepta una única conexión de un Cliente y se cierra.

-p: Puerto. En el ejemplo el 80 que se utiliza con el protocolo HTTP (Hypertext Transfer Protocol).

Luego el usuario deberá naveguar hacia la URL donde tengo preparado netcat. En este caso:

http://192.168.100.99

Y obtenemos la siguiente información a través de netcat:

User-Agent con netcat

Aquí podemos identificar varias cosas:

–          Lenguaje: Es. Castellano.
–          Mozilla/5.0.
–          iPhone.
–          Firmware: OS 6_1.
–          AppleWebkit/536.26.
–          Version 6.0 Mobile/10B144 (Versión).
–          Safari/8536.25

Estos datos nos pueden resultar de sumo interés cuando vayamos a lanzar algún ataque contra alguna versión específica.

Lógicamente estos datos se pueden modificar al gusto del usuario… Los buscadores modifican el User-Agent para poder obtener ciertos contenidos que solo están disponibles para dispositivos iOS.

Seguramente en más de una ocasión os habéis preguntado porque cuando navegáis por ejemplo hacia http://www.marca.com desde vuestros teléfonos os aparece una versión para móviles en vez de la versión habitual si utilizáis la misma URL que en el ordenador. Pues ahora ya sabes la respuesta. Por el user-agent del navegador 😉

Safari no permite cambiar el User-Agent si no se le ha realizado un jailbreak, pero existen otros navegadores en los que si podemos cambiar el User-Agent sin jailbreak como es el caso de: Atomic Web browser, Diigo Web Browser, iCab Mobile, etc.

1.3.1.- Anexo. Profundizando en la seguridad de la información.
Cuando uno crea un laboratorio de investigación sobre seguridad informática y mete bajo el microscopio ciertas cosas, los resultados que se obtienen, muchas veces, no dejan de sorprenderte.

Es el claro ejemplo de hoy. Me resulta muy curioso la cantidad de información que Safari bajo iOS envía de forma “gratuita” mediante el protocolo HTTP.

¿Realmente es necesario enviar tanta información? La respuesta es un rotundo NO!.

Como dijimos, el User-Agent se puede utilizar para que la plataforma WEB entregue el contenido que mejor se adapte al dispositivo. Ahora bien, en la cabecera HTTP existe información más que suficiente para este mero “trámite”. Esto me ha hecho profundizar un poco más en el asunto y corroborar que estoy en lo cierto.

Muchos blogs y profesionales del mundo de la seguridad han reflexionado sobre todo esto y  a día de hoy no se ha llegado a ninguna conclusión clara.

Incluso, los más escépticos, utilizan otros navegadores para evitar este comportamiento.

La teoría de User-Agent dice que este valor debe ser suficientemente explícito como para que el servidor pueda atender con garantías de satisfacción al navegador cliente. En otras palabras que pueda entregarle un código que pueda interpretar el navegador y sea legible para el usuario. Provocando que en caso de incompatibilidad (Flash, protocolos, plugins, tamaño, etc) el servidor entregue la página más compatible. Esto es lo que dice la teoría…

Pero no dice nada de mostrar la versión concreta de iOS. Es cierto que los navegadores bajo MS Windows muestran la versión NT (MS Windows 7 : NT 6.1) pero no indican la edición del Sistema Operativo (Home Basic, Home Premium, Profesional, Ultimate, etc) ni los Services Pack instalados.

El User-Agent debería de enviar una petición HTTP mostrando iPhone iOS sin nada más. O un iOS con un tipo concreto para la renderización necesaria de la página… Pero jamás mostrar toda la información como lo está haciendo actualmente. Puesto que con esta información un atacante dispondría de todo lo necesario para encontrar vulnerabilidades conocidas en nuestro dispositivo iOS.

Imaginaros a la inseguridad que están sometiendo a los usuarios con dispositivos iOS que han dejado de ser respaldados como es el caso del iPhone 3G y anteriores modelos. Estos dispositivos están navegando con versiones de iOS 4.2, o anteriores, que tienen vulnerabilidades muy conocidas y críticas. Incluso a los usuarios con dispositivos más recientes que no actualizan sus dispositivos frecuentemente.

¿Os imagináis un servidor con una base de datos con todas las versiones de iOS y sus correspondientes exploits?. Tan solo tendría que recoger la versión del iOS y del dispositivo a través del User-Anget, buscar en la base de datos la versión y ejecutar el pertinente exploit…. Y obtendría el control TOTAL del dispositivo. ¿Alguien da más?.

1.4.- MobileMail, el cliente de correo de iOS.
La app que utilizamos como cliente de correo por defecto en iOS se llama MobileMail

Este cliente nos permite identificar dispositivos iOS de varias formas diferentes.

Vamos a detallarlas:

1.4.1.- Cabecera del correo.
Podemos comprobar las cabeceras de los correos que hemos recibido o que tenemos acceso.

En el ejemplo, he enviado un correo electrónico desde el iPhone a mi cuenta de correo de GMAIL.

Para poder ver la cabecera en un correo de GMAIL:

–          Abre el mensaje en la bandeja de entrada de Gmail.
–          Haz clic en la flecha que apunta hacia abajo, situada en la esquina superior derecha del mensaje
–        Haz clic en el vínculo “Mostrar original” al final del cuadro de opciones. El mensaje se abrirá en una nueva ventana con las cabeceras completas en la parte superior.

Cabecera Correo GMAIL

Con lo que obtenemos la siguiente información de la cabecera del correo:

Cabecera Correo 2 GMAIL

Donde podemos observar claramente:

X-Mailer: iPhone Mail (10B144)


1.4.2.- Carga automática de imágenes de MobileMail.

Otra opción más directa y limpia es aprovecharse de la configuración por defecto que trae MobileMail. Se trata de la “Carga de imágenes automáticamente”, esta opción cuando se encuentra habilitada muestra todas las imágenes que tiene un correo electrónico.

Para que MobileMail pueda mostrar las imágenes al usuario debe de conectarse a los servidores que las almacenan, ¡lógico!.

Pues bien, nosotros vamos a enviarle un correo electrónico a un usuario determinado para saber si utiliza su cuenta de correo a través de MobileMail, y por extensión iOS.

Para ello necesitamos una cuenta de correo, un servidor web que controlemos y una imagen.

Alojamos una imagen en nuestro Servidor WEB. En mi caso APACHE sobre MS Windows 7.

La ruta o URL de la imagen será: http:// http://192.168.100.99/www/iPhoneHack.jpg

Creamos un correo con la imagen “incrustada”. No vale con pegar el link o URL de la imagen, tampoco podemos adjuntarla. Hay que incrustarla en el correo, y GMAIL nos permite hacerlo.

Para ello creamos un correo electrónico con su destinatario, la víctima en este caso, un asunto, un texto e incrustamos la imagen a través del icono de la cámara de fotografía de GMAIL.

Insertar Imagen GMAIL

Añadimos la imagen desde la opción “Dirección web (URL)”, de lo contrario MobileMail no se conectaría a ningún Servidor WEB y no podríamos “pescar” la conexión.

Luego introducimos la URL de la imagen alojada bajo un Servidor WEB que controlamos.

HackImagen

Solo queda Aceptar todo y enviar el correo a la víctima.

La víctima recibe el correo electrónico con la imagen controlada, y no nota nada extraño.

MobileMail Correo Imagen Incrustada

En los logs del APACHE (acces.log) vamos a tener registrada la conexión…

Su ruta suele ser APACHE\logs.

access.log - Apache

También os dejo una captura de netcat para verlo mejor 😉

Peticion HTTP imagen incrustada

Una vez que hemos mostrado la “trampa” no estaría de más saber cómo podemos protegernos de ella.

Para desactivar esta opción por defecto vamos a:

Ajustes – Correo, contactos, calen.

Configiguracion Correo MobileMail

Y ahí activamos o desactivamos la “Carga de imágenes”.

La mayoría de los usuarios no tendrán desactivada esta opción, primero porque viene por defecto y segundo porque provoca que la experiencia del usuario con la aplicación sea menos vistosa y cómoda, puesto que no solo desactivaremos la previsualización de todas imágenes de todos los correos, también desactivaremos todos los ficheros JavaScript así como los CSS.

Cuando esta opción se encuentra desactivada y el correo tiene alguna imagen incrustada MobileMail pone a nuestra disposición un botón para cargar las imágenes, haciéndonos de nuevo vulnerables ante este tipo de “ataques” de identificación por usuario o app.

Opcion Cargar Imagenes Desactivada - MobileMail

1.4.3.- La firma del correo.
La forma más sencilla de identificar un dispositivo iOS a través de un correo electrónico enviado por un usuario de iOS es a través de la firma, puesto que MobieMail por defecto crea una firma en todos nuestros correos enviados desde un dispositivo iOS tal que así:

“Enviado desde mi iPhone”.

Para modificar la firma de los correos:

Ajustes – Correo, contactos, calen.- Firma.

Configiguracion Correo MobileMail

Todavía no hemos terminado con la identificación de dispositivos iOS a través del usuario o de las apps… Nos falta un apartado muy interesante. Estoy seguro que a más de uno lo dejará boquiabierto.

A la hora de cerrar este artículo he decidido independizar el próximo capítulo para profundizar más en el tema y darle todo el protagonismo que se merece y, por extensión, no hacer más extenso este artículo.

Puede que hayamos olvidado en el tintero alguna que otra forma más de identificar dispositivos iOS… Siendo este caso, más adelante crearía un anexo con las nuevas posibilidades.

En el próximo artículo, que será la extensión de este, estudiaremos los metadatos de las imágenes que capturamos con nuestros dispositivos para mortalizar momentos especiales… ¡Un artículo que no podrás perderte! 😉

Nos vemos en la próxima entrega… Wadalsaludos 😉

Publicado en Artículos, Destripando iOS, Seguridad Informática
One comment on “Identificación de dispositivos iOS a través del usuario.
  1. […] instalarla en el teléfono preparado pues a través de un correo “envenenado” como vimos en Identificando dispositivos iOS a través del usuario… pero esos son otros temas que veremos en futuras […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: