Mostrando entradas con la etiqueta iphone. Mostrar todas las entradas
Mostrando entradas con la etiqueta iphone. Mostrar todas las entradas

19 septiembre 2013

Navega a través de TOR desde tu dispositivo iOS

A principios del 2011 en el post "Instalando TOR en iPhone: Privacidad con WiFi y GPRS/3G" indicábamos cómo poder navegar anónimamente desde nuestro dispositivo iOS (iPhone, iPad...) a través de la red TOR, tanto estando conectados vía wifi como mediante conexión de datos. Para esto último, requeríamos utilizar un servicio de VPN gratuito sobre el que viajarían nuestras conexiones tras habernos conectado a la red TOR. Además de la complejidad, la única manera de disponer de Tor era teniendo el dispositivo con Jailbreak.



Con la aplicación de la que os hablaremos en este post, ya no será necesario el llevar a cabo varios pasos, siendo posible obtener una conexión anónima a través de Tor.

Onion Browser consiste en un pequeño navegador web (para nada se asemeja a la versión móvil de Safari, ya que sus funcionalidades son restringidas) que permite tunelizar las peticiones realizadas a través de la red Tor.



Si bien no ha sido desarrollada por el propio equipo del Tor Project, obviamente está basada en la herramienta del proyecto, y además el desarrollador, Michael Tigas, ¡pone a nuestra disposición el código fuente de la aplicación! 

Las grandes ventajas de esta aplicación, frente a soluciones alternativas son:
- No es necesario un dispositivo con jailbreak instalado.
- Funciona tanto para conexiones mediante wifi como GPRS/3G, ya que se trata de un navegador normal.
- Permite el cambio de user-agent directamente desde las opciones del navegador.



Pero como todo, también tiene algunos inconvenientes...
- No es gratis, aunque su precio no pase de un euro.
- No ofrece privacidad máxima y absoluta, debido a, por ejemplo, ciertas limitaciones con el SDK de iOS. 

Una vez instalada la aplicación, ejecutamos haciendo clic en el icono, y el navegador restringido comenzará a negociar la conexión a través de la red Tor.




Tras finalizar el establecimiento de red, podremos hacer uso de los enlaces presentados para conocer la nueva dirección IP que se nos ha establecido, y mediante la cual navegaremos.




Recordad que para conectarnos a través de Tor en dispositivos Android, podéis acudir al siguiente post sobre la aplicación Orbot, disponible en la Play Store, o incluso recurriendo a Orweb, siendo este también un navegador que incluye la conexión establecida.

La aplicación Onion Browser está disponible por 0,89€ y está programada tanto para iPhone como para iPad, requiriendo una versión de iOS 5.1 o superior.
Leer más...

16 enero 2013

Control de certificados permitidos en IOS


Hace tiempo explicamos cómo se podía hacer análisis de seguridad de las peticiones web que hace una aplicación de iOS instalando una CA  en el propio móvil. Aunque en la  gran mayoría de casos el método funcionará, en otros el tráfico no será transmitido tal y como se espera, ya que la aplicación verificará que el certificado que recibe está firmado por una CA concreta, desconfiando de cualquier otro tipo de certificado recibido, sea o no válido.

Para llevar a cabo ese control (que roza la seguridad por oscuridad), se hace de dos formas distintas: definir exactamente el certificado que se espera recibir, sacando de la ecuación a la CA o limitando las firmas válidas a una CA determinada. 

Las funciones que se usan para trabajar con SSL son tres: NSStream, CFStream, NSURLConnection, siendo esta última la más usada. 

NSURLConnection usa varios métodos delegados para obtener los valores y poder hacer la comprobación de los parámetros, como didReceiveAuthenticationChallenge, canAuthenticateAgainstProtectionSpace o willSendRequestForAuthenticationChallenge.

Por ejemplo, twitter hace uso de este método para evitar ataques man in the middle, y se puede intuir el "pinado" del certificado en el volcado de su aplicación.
Volcado de class-dump-z de la aplicación de Twitter.

En esos casos, la estrategia debe ser distinta. Usar un debugger y cambiar el comportamiento, recompilar la aplicación o hookear esas funciones.

Con este objetivo iSEC Partners ha creado IOS SSL Kill Switch, un pequeño tweak de MobileSubstrate que realiza esta tarea. Para usarlo, como es obvio, se requiere que el teléfono tenga jailbreak.

La instalación es sencilla, se instala el paquete deb correspondiente y se reinicia el proceso de MobileSubstrate.

Instalación de IOS SSL Kill Switch

Una vez instalado, se aparecerá una nueva configuración dentro de los ajustes para habilitarlo o deshabilitarlo.

Ajustes de SSL Kill Switch

Actualización 10/2/2013:
Otra herramienta que parchea a un nivel más bajo: https://github.com/intrepidusgroup/trustme

Referencias:
Leer más...

13 agosto 2012

Mi nombre es Manuel, mi apodo de toda la vida es Eagle desde niño, aunque casi siempre está cogido por otro cuando me registro :), y me encanta afrontar problemas y resolverlos. La curiosidad mató al gato, pero afortunadamente no soy un gato...

Este artículo nace a raíz de un problema con el que me encontré hace un par de días y para transmitiros cómo lo resolví.

Vamos directamente a exponer el caso.

Mi iPhone se pone a consumir datos él solito, tanto por Wifi como por 3G


Resulta que últimamente venía notando que el teléfono consumía demasiados datos (me llegó un aviso de la operadora de que había consumido 200Mb, mi tarifa del mes) y la batería duraba menos de lo normal. Como soy muy pejiguero para esas cosas, me descargué un programa de consumo de datos para intentar averiguar cuándo y cuánto estaba consumiendo.

Hay que aclarar que tengo el iPhone con jailbreak hecho, pero con pocos programas de Cydia instalados, apenas unos 15 tweaks (modificaciones del sistema), casi todos gratuitos y algunos comprados. Bien, me instalé DataMonitor, que es un programa muy completo (aunque no te dice qué programas consumen qué datos, pero te da estadísticas muy interesantes, por minuto incluso). Es el programa que veis en la foto.

Con él pude averiguar que estaba consumiendo muchos megas de subida y bajada. En concreto, en los primeros días de agosto ya llevaba 150Mb de mi tarifa de 200Mb. Una burrada, porque no había bajado ni subido nada con 3G salvo el correo (sin adjuntos). Mi consumo normal es de 50-100Mb al mes.

Además, este programa permite ver el uso de la CPU, que resultaba que por momentos se ponía al 100% durante varios minutos, ralentizando el móvil.

Muy bien, está claro que hay algún problema y hay que encontrar la solución... no me voy a quedar sin tarifa de datos a los 10 días porque sí. ¿Qué podía hacer? Opción 1: reinstalar todo el sistema, por si estaba tocado. Eso no me aseguraba no volver a tener el problema. No soy ningún experto en seguridad, pero sí que soy curioso y soy ingeniero informático, algo podré hacer con todo lo que me enseñaron, años ha.

Me sonaba eso de analizar el tráfico entrante y saliente. ¿Pero de un iPhone? ¿Cómo lo hago?

Usando herramientas de Seguridad

Pues nada, san Google a nosotros y listo. Al poco tiempo ya averigüé que lo mejor era usar Wireshark para la captura de todo lo que se moviese.

Problema: mi PC estaba por cable y el iPhone por Wifi, así que, para abreviar, ya que en muchos sitios explican todo esto muy bien, necesitaba hacer un envenenamiento ARP para poder capturar el tráfico dirigido desde el Router-Wifi al iPhone (básicamente, engañar al iPhone y al Router para que toda la información pasara previamente por mi PC, un ataque man in the middle).

Solución: Ettercap. Lo hay para Windows y para Linux, pero resulta que en Windows 7 no debe funcionar muy bien, porque se cierra inesperadamente. Así que nuevo problema, que solucioné usando una máquina virtual de Windows XP, pero no sé por qué, no aparecía el tráfico del iPhone, aún haciendo el envenenamiento.

Total, al final me bajé una VMware de BackTrack 5, que decían era lo mejor para evitar problemas y, efectivamente, pude capturar todo el tráfico del iPhone por fin.

Ha pasado un día con todo esto. Soy novato como hacker, qué le vamos a hacer... :)

Capturando paquetes para analizar


Bueno, pues ya estamos en el siguiente día y me voy a poner a dar palos de ciego a ver si veo algo que me llame la atención entre todo el pifostio de información que sale en Wireshark.

Como novato que soy, no me entero de nada al principio. Pero bueno, lo importante es que tras mucha búsqueda y lectura de manuales (unas dos horas) consigo descubrir tres cosas fundamentales: cómo capturar con filtros, cómo hacer filtros sobre lo capturado (no es lo mismo) y como usar la opción "TCP Stream" para ver el paquete "completo" y no solo una trama.

En mis primeras capturas veía 30.000 paquetes en poco tiempo porque no filtraba las capturas. Aprendí que con host XXX.XXX.XXX.XXX puedo capturar solo los paquetes dirigidos/enviados a la IP correspondiente (la del iPhone).

Una vez con el tráfico único del iPhone y viendo con DataManager que los datos seguían subiendo sin yo tocar nada, me puse a buscar cadenas http, para ver si había llamadas a sitios raros... y vaya si había. Descubrí una bonita opción en el menú de Statistics que se llama "HTTP -> Request" en donde, si no pones filtro, te saca todas las URL llamadas y ésto fue lo que encontré:

Todas esas urls que aparecen son páginas de contaje de clicks, estadísticas de uso, publicidad, etc. Y como veis en el total de contaje, son 3.723 clics en 5 minutos de capturas.

Ya con el susto en el cuerpo de un posible virus o proceso, cuanto menos, irregular, me puse a pensar: ¿qué leches de programa puede estar haciendo un proceso en segundo plano que visite todas estas webs, si no existe la multitarea real en el iOS, salvo para procesos del sistema habilitados por Apple?

La respuesta parecía lógica: solo alguna aplicación de Cydia podría hacer algo similar, ya que no tienen las limitaciones que iOS impone. ¿Pero cuál? Hombre, yo tenía pocas, pero aún así saber cuál podría ser se me antojaba bastante complicado.

No obstante, como presumo de tener buena memoria para los detalles, recapitulé un mes para ver qué había instalado de Cydia recientemente: eso acotaba las posibilidades a cinco programas. ¿Por qué un mes, diréis, y no dos? Hacía un mes más o menos que empecé a notar el consumo excesivo.

Bueno, finalmente me centré en analizar con más detalle el contenido de cada una de estas URL, ya que no eran muchas. Buscaba algo que me llamara la atención... y al cabo de apenas 30 minutos lo encontré.

Descubriendo el motivo

Estaba viendo las cadenas http y me llamó mucho la atención esta en concreto:


Hay un referer en esa cadena (un "nombre de cuenta"). Uno que además me sonaba conocido. Google es nuestro amigo. Busqué Nobitazzz en Google y oh sorpresa... es el creador de nueve aplicaciones gratuitas de Cydia, entre ellas una que yo me instalé hacía tres semanas que permitía tener las nuevas opciones de iOS6 en iOS5. Se llama "iOS 6 Photos Menu", para enviar las fotos del carrete a Facebook y demás directamente sin ir a la aplicación concreta. El nombre me sonaba de verlo al instalar la aplicación de Cydia.

Veamos qué más nos dice Google de Nobitazzz... que tiene un buen posicionamiento web, con muchas visitas diarias (fuente: http://www.statscrop.com/www/nobitazzz.com)

Ahora casi todo cobraba sentido. El tío aumenta su PageRank haciéndose autovisitas desde todos los dispositivos iOS que tengan instaladas sus aplicaciones "gratuitas".

Ya me estaba poniendo nervioso. Sigo analizando un poco más todas las apariciones de Nobitazzz en el log de Wireshark y me doy cuenta de que todas hacen referencia a la página de ptp4ever.net

Entonces se me ocurre ir a la página, a ver qué es y qué servicio dan y, ahora sí, averiguo el motivo final de todo esto: esta página PAGA por visitas y mostrado de banners publicitarios. Curiosamente tiene una sección donde figuran los Top 10 que más dinero han ganado. Creo que encontraré a alguien conocido...


Vaya, vaya, vaya. Resulta que nuestro amigo es el tercero que más dinero ha ganado. No me creo lo que veo: ¡¡los usuarios de sus aplicaciones somos una granja de clics para su cuenta!

Conclusiones

Por fin descubrí de qué iba todo esto: sus aplicaciones gratuitas van haciendo llamadas a varios sitios que pagan por click o por ver banners, banners que los usuarios no ven nunca porque todo esto ocurre con el móvil bloqueado y en segundo plano. Es un timo en toda regla, a los usuarios y a los publicistas. 

A los usuarios porque nos roban consumo de datos y CPU (por tanto batería), y a los publicistas porque están pagando por clics que nadie ve.

Lógicamente desinstalé la aplicación de este tío ipsofacto pero, quién me asegura que eso elimina este "proceso" del sistema. Ahora puedo seguir analizando mi tráfico en los próximos días, a ver si vuelve a la normalidad (que parece que sí) o reinstalar todo el iOS, con las consiguientes molestias de volver a meter toda mi configuración de Cydia (no me gusta iOS sin Cydia, pero ese es ya otro tema).

Lo que está claro es que paso de instalar cosas que apenas usaré. Solo lo imprescindible de Cydia para mí. Y ahora está claro cuán peligroso es instalar aplicaciones de Cydia, que no pasan ningún control por parte de nadie. ¿Quién te asegura que en vez de este "sencillo" sistema no te meten un keylogger, o monitorizan tu actividad, o cualquier otra cosa?

Yo sin Cydia no quiero iOS, así que seguiré arriesgándome a tenerlo, pero está claro que a partir de ahora meteré aplicaciones bien conocidas y con mucha reputación, como puede ser Springtomize o LockInfo, que además son de pago y no baratas precísamente.

Espero que os haya gustado este mi primer artículo de seguridad. Todo esto que he contado tan rápido me ha tenido bastante ansioso estos dos-tres días que he estado investigando. El "por qué" siempre te acaba llamando.

Saludos.

Posdata

Tras haber escrito el artículo me puse en contacto con los administradores de Cydia para comentarles el caso y, muy amablemente, se comunicaron con el desarrollador y con Saurik para resolver el problema. El desarrollador confesó estar empleando ese sistema de publicidad encubierta y ha dicho que no lo volverá a emplear más. Caso resuelto.

------------------------------------

Artículo cortesía de Manuel Conde Vendrell (Eagle)
Leer más...

15 mayo 2012

WhatsApp Forensics

Siguiendo la línea de algunos posts sobre la aplicación WhatsApp (que de seguro todos conocemos), en este post me gustaría presentaros una herramienta para facilitar la extracción e interpretación de los datos generados por esta aplicación. 

 Si bien es cierto que la aplicación cifra los logs de los mensajes cuando realiza el backup en la sdcard, todos estos registros así como las conversaciones actuales, agenda de contactos y demás ficheros propios de la aplicación, se encuentran sin cifrar en la memoria interna del dispositivo, de tal forma, que accediendo a la memoria del dispositivo podremos extraer dichos ficheros para analizarlos en otro entorno. 

 La aplicación que me gustaría presentaros está escrita en Python (DJango) y aunque es una versión Beta y espero poder seguir agregándole más funcionalidades, nos facilitará bastante la tarea a la hora de interpretar la información basándose en los registros de los siguientes ficheros:
  • wa.db (agenda de contactos)
  • msgstore.db (conversaciones actuales)
  • whatsapp-YYYY-MM-DD.log.gz (registro de conversaciones)
  • msgstore-YYYY-MM-DD.X.db.crypt (registro de conversaciones cifrado)
Listado de archivos de interés
Nota: Como registro de mensajes solo se usará msgstore.db, pero podemos reemplazar este archivo por cualquiera de los registros de mensajes guardados. Para descargar la aplicación, podemos hacerlo desde la URL del proyecto descargando el fichero zip/tgz o clonando el repositorio:
~$ git clone git://github.com/sch3m4/wforensic.git Cloning into 'wforensic'... remote: Counting objects: 136, done. remote: Compressing objects: 100% (117/117), done. remote: Total 136 (delta 11), reused 135 (delta 10) Receiving objects: 100% (136/136), 364.66 KiB | 163 KiB/s, done. Resolving deltas: 100% (11/11), done. ~$ 
Una vez hecho esto, entramos en el directorio creado y copiamos en él los ficheros wa.db y msgstore.db:
~$ cd wforensic/ ~/wforensic$ cp -v /tmp/*.db . `/tmp/msgstore.db' -> `./msgstore.db' `/tmp/wa.db' -> `./wa.db' ~/wforensic$ ls -1 CHANGELOG LICENSE README msgstore.db tools wa.db wforensic ~/wforensic$
En caso de necesitar utilizar un registro de log, procederemos de la misma manera, descomprimiendo el fichero:
~$ gzip -d whatsapp-2012-05-03.1.log.gz ~$ mv whatsapp-2012-05-03.1.log wforensic/msgstore.db ~$
Hecho esto, podemos iniciar la aplicación y acceder al navegador accediendo al puerto correspondiente, que por defecto es el 8000:
Ejecutando el servidor DJango
 Hecho esto, si accedemos a la URL especificada podremos ver como página principal un breve resumen de la actividad:
Index (1/2)
Index (2/2)
Si por el contrario, solo tenemos acceso a los ficheros cifrados, podemos usar el script "tools/decrypt.py" (gracias al post de Alejandro Ramos):
Volcando y descifrando un registro de mensajes desde la sdcard.
Ahora volvemos a acceder a la aplicación y navegar por todos sus apartados para revisar el registro descifrado:
Contactos
Página Principal
En la parte de "Contacts" (como en el resto de la aplicación) se muestran tanto los contactos con WhatsApp como los que no. Cuando un contacto tiene WhatsApp instalado en su dispositivo, aparecerá con el icono (como se muestra) al lado del nombre, el número de mensajes intercambiados y un enlace en su número de teléfono para mostrar la conversación. 

En el menú superior de la aplicación, aparecen secciones para ver la lista de contactos, los chats mantenidos, mostrar los mensajes con coordenadas GPS, mensajes con contenido multimedia, etc. Cuando un mensaje posee algún tipo de adjunto (imagen, contacto, coordenadas, etc.) a demás de mostrar el thumbnail del contenido, nos aparecerá un icono al lado del nombre del contacto, con la URL al contenido original, (en el caso de las coordenadas GPS, será un enlace a Google Maps). Y para sorpresa (o no) de muchos, esto es lo que pasa cuando accedemos a la URL original:
Mensajes multimedias
Contenido original
Y finalizando, dos capturas para ver cómo se muestra el listado de chat y las conversaciones:

Chat
Lista de Chats
Como dije al principio del post, se trata de una beta y se le pueden agregar muchas más opciones que espero poder agregar. No obstante, toda contribución de ideas (se incorporarán al TODO) , manual o mejora (serán agregadas lo antes posible) es bienvenida.

Artículo cortesía de Chema García
Leer más...

10 mayo 2012

Registra cualquier número en TU Me

La entrada de hoy pretende ser un resumen rápido desde el punto de vista de seguridad de la aplicación TU Me, presentada ayer por Telefónica para móviles iPhone y que se ha mostrado en Internet como la competencia de WhatsApp.

Detrás de TU Me se encuentra la compañía jajah, con sede en California pero origen israelí, está especializada en VoIP y fue adquirida por Telefónica en 2010. Por lo que parece, todo ha sido desarrollado fuera de España y sus sistemas también se encuentran en California.

Teniendo en cuenta la experiencia ganada de ver como funciona WhatsApp he comprobado algunos de los fallos que hemos encontrado y contado. En algunos casos los resultados son buenas noticias y en otros no.

El registro solo se puede hacer mediante la recepción de un SMS, sin posibilidad de recibir una llamada u otro método de validación, como ocurre con su amigo verde.


Cuando se introduce el número, se manda una petición https con ese número de móvil, TU Me responde por SMS un código pin de tan solo cuatro números para verificar que ese teléfono es de nuestra propiedad, ya que como último paso hay que introducirlo en la aplicación, para que sea nuevamente valido. El proceso tendría un esquema similar a esto:

Registro en TU Me

---------------------------------------------------------------------------------------------------------------------------
ACTUALIZACIÓN:
Lo comentado a continuación ha sido solucionado a las pocas horas de publicarse esta información en el blog.






----------------------------------------------------------------------------------------------------------------------------

Desgraciadamente el número de veces que se introduce el PIN no está controlado y con una herramienta como burp es muy fácil automatizar el proceso y registrar el número que queramos en unos minutos.


En otro orden de cosas, revisando el directorio de la aplicación y la base de datos de conversaciones que se almacena en el fichero Connect.sqlite, me he encontrado que guarda la geo localización de todos los mensajes. Aunque no sea necesaria ni se solicite. Una vez mandas tu posición, los siguientes mensajes también llevarán esta información. Con todo lo que ello implica. ¡No hemos aprendido!

Connect.sqlite (geolocalización)

La sorpresa, esta vez buena, ha sido encontrar que las imágenes compartidas no son públicas y requieren autenticación para acceder a ellas. Además de estar solo disponibles por SSL, a diferencia de WhatsApp que cualquiera puede acceder a ellas si conoce la ruta y se sirven sin cifrar.

Almacenamiento de imágenes en https://store.yarnapp.com

Intento de acceso a una imagen sin credenciales

También las conversaciones se hacen usando protocolos cifrados, por lo que será difícil encontrar herramientas del tipo WhatsAppSniffer.

De momento, ¡esto es todo!


Leer más...

09 marzo 2012

Tu contraseña, en un archivo en texto claro.


Me hubiera encantado poner como título a esta entrada "Tu contraseña de Dropbox, guardada en texto claro", que sería carne de cañón, cuando realmente la contraseña a la que me refiero, no es la propia del servicio de Dropbox.


Esta aplicación que dispone de cliente para dispositivos IOS (esto de que haya iPad,  iPhone y AppleTV y no pueda usar un único termino es realmente molesto), permite  especificar un PIN de cuatro números antes de mostrar el contenido de la "carpeta en la nube".

Otra característica interesante de esta protección es que también posibilita la opción de eliminar los archivos si este código secreto se escribe erróneamente 10 veces seguidas. Evitando la posibilidad de que alguien trate de automatizar el proceso y hacer un ataque de fuerza bruta que recorra del 0000 al 9999. Por cierto, si la habilitáis, no uséis un código del 0000 al 0009 o ¡¡la encontrarán antes de que se borren!! :-)


Lo curioso es que una empresa como Dropbox, que ya tiene una masa muy importante de usuarios y consideran un factor crítico la seguridad, cometa un error de novato y guarde este PIN en texto claro, sin cifrado de ningún tipo en un archivo plist. 

La peor parte es que esto debería sorprender, pero es tan común en casi todas las aplicaciones que ya parece hasta normal.


Os podéis plantear una duda: si para acceder a ese fichero hace falta que el teléfono tenga jailbreak, ¿qué más da? ya que también podría acceder al "fichero de sesión" de la aplicación y por lo tanto utilizar otro terminal accediendo sin contraseña.

Me alegra que me hagáis esta pregunta, incluso que me la haga yo mismo, que así puedo responderla.

Importa, ya que  la seguridad se basa en capas y nada tiene que ver que un control de seguridad pueda ser evadido de varias formas para no tapar el mayor número posible de ellas.

Otro día vemos como saltarse otra aplicación con una protección similar, sin tener ni averiguar el código.


Leer más...

13 febrero 2012

La protección de datos en la auditoría de aplicaciones IOS


El modelo de seguridad de iOS se basa en cuatro capas: seguridad del dispositivo (acceso físico), seguridad de los datos almacenados, seguridad de las comunicaciones y seguridad de las aplicaciones.

Tal vez el aspecto más importante a analizar durante una auditoría de aplicaciones móviles es el método para almacenar y acceder a datos personales o confidenciales. En la actualidad este es el problema que más veces se presenta y generalmente tienen una criticidad alta. Un ejemplo claro de esta vulnerabilidad es lo ocurrido y reportado a Whatsapp el año pasado por Yago.

En la entrada de hoy se van a enumerar los lugares y ficheros más comunes que se han de comprobar en un dispositivo, aunque tal vez lo mejor sea comenzar por comentar la estructura básica de una aplicación.

El directorio de cada aplicación (/var/mobile/Applications/[GUID]) se compone de:

NombreApp.app/: directorio con el binario y contenido estático de la aplicación.
  • Documents/: archivos que serán compartidos con el escritorio usando iTunes.
  • Library/: ficheros adicionales de la aplicación.
  • Library/Preferences/: ficheros de preferencias específicas de la aplicación.
  • Library/Caches/: ficheros que han de ser persistentes a distintas ejecuciones de la aplicación.
  • tmp/: ficheros temporales de cualquier tipo y que no han de ser persistentes en reinicios o distintas ejecuciones de la aplicación

FICHEROS PLIST
Como ya se ha visto anteriormente son ficheros que pueden incluir cualquier tipo de dato que crea conveniente el desarrollador, como credenciales, cookies, permisos, etc. En ocasiones pueden cifrar o codificar algún campo, por lo que se comprobará si es reversible o débil o incluso si hay datos confidenciales directamente en texto claro.

Los ficheros plist están en cualquier directorio dentro de la aplicación y se pueden abrir con un editor de texto en caso de los XML y con un editor como plist Editor si son binarios.

La captura siguiente es un ejemplo de iDelicious, una aplicación para consultar los bookmarks del servicio delicious:


FICHEROS DE BASES DE DATOS SQLITE
Ocurre exactamente lo mismo que en el caso anterior, solo que se almacenan en una base de datos del tipo SQLite y para abrirlos hará falta un interprete como: SQLite Administrator, también están en el directorio de la propia aplicación y tienen de extensión .sqlite o .db.

El mejor ejemplo la ya mencionada entrada de Yago, donde se mostraba que una vez borrabas una conversación desde la aplicación WhatsApp, está dejaba de ser mostrada, pero el contenido seguía presente.

FICHERO DE DICCIONARIO PREDICTIVO PARA TECLADO:
Es una base de datos donde se almacenan palabras que no están en el diccionario. En él se pueden guardar usuarios, contraseñas, PIN y cualquier dato de validación. Es similar al "autocomplete" de los formularios web. Por ese motivo la aplicación debe especificar en qué sitios no quieren que sean almacenados.

Se encuentra en el directorio: /private/var/mobile/Library/Keyboard/es_ES-dynamic-text.dat y pese a que su acceso no está permitido de forma nativa, un móvil infectado por malware si puede consultarlo y enviarlo.

CAPTURAS DE PANTALLA
Para crear el efecto "bonito" cada vez que se pulsa el botón "home" y se vuelve al menú del móvil, el sistema genera una captura de pantalla con el contenido que es almacenada en el directorio: Library/Caches/Snapshots/ de cada aplicación. El efecto se puede evitar en caso de que el contenido pueda ser confidencial, al igual que ocurre con las páginas cacheadas de un navegador. Otra opción es diseñar las vistas teniendo en cuenta este problema. 

COPIAR Y PEGAR
Si la aplicación utiliza la característica de copiar y pegar texto, este puede ser accedido por otra aplicación del portapapeles y es almacenada en el fichero: /var/mobile/Library/Caches/com.apple.UIKit.pboard, para analizar esto, tan solo hay que revisar en que sitios se permite copiar y pegar y pensar si "importa" que esos datos sean accedidos por otra aplicación. Por ejemplo, un campo password, nunca debería poder ser copiado.

Debido a que esto es conocido, en nuevas versiones de IOS ya no permite nunca copiar desde un campo de contraseña, aunque si en otros que se han de revisar. La siguiente imagen muestra un ejemplo de la aplicación gmail

Ejemplo: no se muestra opción "copiar"
FICHEROS CACHEADOS
En algunas aplicaciones  es posible que se almacene ficheros confidenciales o con algún tipo de dato de interés sin cifrar. Se han de revisar los directorios "Library/Caches", "tmp/" y "Documents/".

FICHEROS DE LOG
Generados en casos de errores o por los desarrolladores para incluir trazas de depuración, son susceptibles de incluir datos confidenciales. Se revisan en el propio sistema en la ruta /private/var/log/system.log, /User/Library/Logs/CrashReporter  y en los datos locales de iTunes de la estación de trabajo, en el directorio: C:\Users\[USER]\AppData\Roaming\Apple computer\Logs\CrashReporter/MobileDevice/[nombredispositivo]


ESQUEMAS URL
Son utilizados para invocar una acción determinada de una aplicación, por ejemplo "mailto://" para enviar un correo, o twitter:// para invocar el cliente de Twitter. Se definen en el archivo Info.plist mediante el uso de CFBundleURLSchemes, Es conveniente descifrar el binario y buscar strings para conocer sus métodos.

Un ataque podría provocar que se ejecuten acciones no deseadas, similar a un cross-site-request-forgery. Como por ejemplo añadir esto en una página: [iframe]twitter://post?soy_un_luser[/iframe]








Leer más...

02 febrero 2012

Seguridad en IOS, herramientas para desensamblar Objective-C

Auditar una aplicación móvil requiere que se revisen y contemplen todos los aspectos de su seguridad: la aplicación nativa, como se comunica y el servicio remoto en caso de que exista.

Para desensamblar las aplicaciones de iPhone/iPad, primero hay que descifrarlas tal y como ya vimos en los posts anteriores (I, II y III) para posteriormente usar una herramienta que haga este trabajo.

En esta entrada, voy a enumerar las aplicaciones más populares en esta tarea:

Originalmente se desarrolló para trabajar con Objective-C en binarios Match-O, pero sin considerarse iPhoneOS. Pese a que se puede utilizar para este propósito y se ha actualizado para darle soporte, es recomendable usar el fork class-dump-z de kennytm. Requiere ejecutarse en un MacOS 10.6.x

El tercer fork del original class-dump, está desarrollado en C+ y es multiplataforma. Se desarrolló considerando las peculiaridades de IOS. Por desgracia su última versión 0.2a solo funciona en Mac. Para iphone @trufae ha colgado una versión en su repositorio: http://cydia.radare.org/
Ya se ha visto en uso, aunque solo para obtener información de un binario. La realidad es que otool es una aplicación muy completa que también sirve para hacer desensamblados básicos.

radare2: http://radare.org/y/
¿Quién no ha oído hablar ya de radare? no solo desensambla el binario, también hace las funciones de debugger, editor, etc. Es multiplataforma y se puede instalar en el propio iphone de forma sencilla usando su propio repositorio: http://cydia.radare.org/

Tal vez sea la más popular ya que su uso está muy extendido y es muy común en entornos windows, linux y mac. Se puede descargar gratuitamente la versión 6.2 con limitaciones y la 5.0 completamente gratuita.

Fueron realmente útiles en la versión 5.x, antes de que IDA Pro soportase Objective-C en la versión 6.2.

Al igual que los anteriores, los scripts de kennytm para IDA tuvieron gran importancia en las versiones 5.x

Otx  es una utilidad para sistemas mac, que se basa en otool para desensamblar el binario, añadiendo nuevas características al procesado resultante, además se puede usar tanto por línea de comandos como mediante su interfaz gráfica.


Esta herramienta es un port de code-dump para PPC, que a su vez es otro fork de class-dump y que finalmente ha sido integrado en este. Requiere de un mac y xcode para compilarlo.

Leer más...