Hace ya mucho tiempo analizamos la seguridad de forma superficial de los dispositivos con iPhone OS, y ahora le llega el turno para Android, por supuesto sin profundizar demasiado en cuestiones de toda su arquitectura. Otro asunto interesante es la gran cantidad de información que las aplicaciones de los dispositivos portátiles (en especial Android e iPhone OS) roban que cada vez más usuarios denuncian en sus dispositivos portátiles (me refiero a cualquier dispositivo, no solo a Android), puesto que cada vez son más las aplicaciones las que acceden más y más a nuestros datos para enviarlos después a bases de datos de terceros. Y es que hablamos de robo cuando dicha aplicación no requiere de autorización para ello. Recientemente han aparecido en diferentes sites advertencias a los usuarios de terminales “inteligentes”, instándoles a tener sumo cuidado sobre las aplicaciones que instalan, puesto que muchas de ellas envían diferentes datos sobre su dispositivo a terceras personas, a veces con autorización y a veces sin ella. También me gustaría analizar las recientes palabras de parte de la compañía de Antivirus Sophos, la cual aseguraba que Android es menos seguro que iPhone OS(Lo analizaremos más adelante)

Uno de los primeros pasos a la hora de analizar la seguridad (de cara a un posible ente externo) es comprobar los servicios visibles externamente, puesto que son la primera puerta ante cualquier ataque externo. La mejor forma para ello es escanear todos los puertos del sistema, tanto puertos TCP como UDP. (Todas las pruebas realizadas hacia Android se han realizado sobre una versión AOSP 2.2.1 pura)

 

Escaner completo de puertos TCP y UDP:

#nmap -A -p1-65535 Androide.

Starting Nmap 5.36TEST3 ( http://nmap.org ) at 2011-01-15 15:12 Hora estßndar romance
Nmap scan report for Androide. (192.168.x.100)
Host is up (0.063s latency).
rDNS record for 192.168.x.100: Androide
All 65535 scanned ports on Androide. (192.168.x.100) are closed
MAC Address: 90:xx:xx:xx:xx:xx
Too many fingerprints match this host to give specific OS details
Network Distance: 1 hop

#nmap -A -p1-65535 -sU Androide.

Starting Nmap 5.36TEST3 ( http://nmap.org ) at 2011-01-16 10:41 Hora estßndar romance
Nmap scan report for Androide. (192.168.x.100)
Host is up (0.053s latency).
rDNS record for 192.168.x.100: Androide
All 65535 scanned ports on Androide. (192.168.x.100) are closed
MAC Address: 90:xx:xx:xx:xx:xx
Too many fingerprints match this host to give specific OS details
Network Distance: 1 hop

Ante la falta de resultados, comencé a creer que Android tendría algún tipo de firewall interno basado posiblemente en iptables que detectaba el escaner, pero nada más lejos, cuando se instala un servidor SSH efectivamente el puerto 22 se abre y cualquier escáner lo detecta. Podemos por tanto tomar nota de las primeras dos conclusiones:

  • La primera es que Android no tiene por defecto ningún puerto abierto. Recordemos que en su defecto, iPhone OS por defecto posee dos puertos: Puerto 53533UDP y Puerto 62078 TCP.
  • La segunda, es que al poseer todos los puertos cerrados, cualquier escaner tiene mucho más complicado el poder reconocer el OS objetivo, en este caso nmap no es capaz de especificarlo, todo lo contrario de lo que sucedería si escaneásemos un dispositivo iPhone OS.

 

Visto esto, la posibilidad de un exploit o un ataque DoS directo al sistema se reduce considerablemente, teniendo en cuenta además la imposibilidad del atacante de conocer que sistema operativo posee la víctima. De este modo, básicamente el riesgo en cuanto a seguridad se refiere se reduce a un exploit directo sobre el dispositivo de manera local (dispositivo en mano), el navegador Web, los SMS y en todo caso los gestores de correo. Es evidente que ningún software por seguro que sea es invulnerable y los exploits siempre van a existir, la cuestión es el número, la gravedad y la velocidad de reacción por parte de los programadores que se encargan de mantener un software limpio.

No obstante, el diseño interno de Android hace de este que sea bastante seguro. Todas las aplicaciones (cada una de ellas) que se ejecutan bajo Android corren a cargo de una máquina Dalvik independiente, es decir, cada aplicación en si misma es algo así como una caja negra, lo que ayuda a que cualquier vulnerabilidad que pueda acusar a una aplicación concreta no exceda de su propio ámbito, manteniendo el resto de aplicaciones y al sistema propio más seguro. Este sistema no solo ayuda a la seguridad en general del sistema, sino que ayuda a que la multitarea de Android sea más eficiente (Recordemos que la multitarea de Android es realmente multitarea, al contrario de lo que sucede en iPhone, en el que la multitarea es cuanto menos parcial). Por supuesto, como he dicho, esto no exime a Android de ser objetivo de exploits.

Según Sophos, Android es un sistema más inseguro que iPhone OS porque según ellos es de código abierto. No obstante, esto es desde mi punto de vista uno de los motivos por los cuales Android es más seguro que iPhone OS. Es cierto que cualquier producto de código abierto está expuesto a un mayor escrutinio por parte de expertos en seguridad, y por tanto es más fácil encontrar exploits y otros fallos de programación. No obstante también hace que cualquier fallo de seguridad o programación sea detectado a una mayor velocidad y que este sea corregido con la mayor brevedad posible. Creo que fundamentalmente es una cuestión de “gustos” y de como afecta al usuario final. La filosofía de Apple es completamente contraria a la filosofía de Google frente a Android. Para los primeros el secreto y la ausencia de información es positivo por dos motivos principales, primero por la mala prensa que origina cualquier fallo de seguridad en sus productos y segundo porque mientras que el fallo de seguridad sea desconocido, tan solo estará al alcance de “unos cuantos” y no tendrán necesidad de corregir el fallo en meses. Para Google y muchos otros que apuestan por el código abierto piensan que la forma más eficiente de hacer seguro un software es que no solo tengan acceso a su código 10, 100 o mil personas, sino millones!! a la par de que cualquier fallo de seguridad encontrado sea perfectamente catalogado y hecho público, puesto que la única forma de protección ante un ataque de esta índole es la información, no el ocultismo. El primer método es bueno para el bolsillo a corto plazo, el segundo método da confianza y seguridad a todos. Preferimos un software plagado de fallos de seguridad que saben a ciencia exacta cientos de personas con intenciones nada buenas o preferimos un software mucho más seguro cuyos fallos de seguridad conocen los mismos cientos de personas con malas intenciones y otras tantas cientos o miles que sinceramente no entienden mucho sobre ello. Yo creo que es mucho mejor lo segundo, porque siempre puedes educarles y enseñarles, y por supuesto publicar las correcciones de software en el menor tiempo posible, no esperar meses o años a que dichos fallos se corrijan.

 

En otro orden de cosas, y una cuestión igualmente importante es la información que damos voluntariamente o involuntariamente a terceros. Que Google sea la compañía que es hoy en día, se debe en gran medida al mayor de los poderes que existen a día de hoy: La información. La información a día de hoy lo es todo. Os voy a explicar un ejemplo real que sucedió hace unos días, para que comprendáis a que me refiero.

Hace unos meses, por septiembre creo recordar, Google cambió su logo de portada a un logo animado la mar de simpático que mostraba una serie de bolas que parecían atraerse o repelerse en función de donde estuviese el puntero del ratón. Generalmente Google siempre da información sobre el logo en cuestión cuando se hace clic en la imagen, pero esta vez no fue así. La expectación fue tal que cientos, miles, millones de personas una de las primeras cosas que hicieron (un servidor incluido) fue buscar en Google el posible motivo de dicho logo, y llevó a buscar en Google términos como: “Magnetic Balls”. La casualidad o el azar hizo que una web de juegos de bolas magnéticas apareciese en el primer o segundo puesto de la búsqueda de Google (una web completamente ajena a Google). Esto hizo a su vez que las visitas a dicha web no solo se multiplicaran por miles y cientos de miles, sino que dicha empresa recibió dicho día una cantidad sin precedentes de pedidos, cientos de miles de pedidos dicho día. Simplemente fue necesario una pregunta que se hicieron muchos para que una empresa se hiciese de oro sin hacer absolutamente nada. Ese es el poder de la información.

Pero Google no es el único que conoce esto, y cada vez son más las empresas que se dedican a recopilar la mayor información posible de los usuarios, incluso información que a priori para la mayoría sería completamente inservible. Desde nuestros datos personales, tendencias, ubicaciones, historiales de navegación, gustos… todo ello puede ser usado desde el uso de publicidad dirigida, spam, venta de datos a otras terceras o cuartas personas, estadísticos, con fines de control, para fines delictivos. El problema en la actualidad es que el comportamiento descuidado de la mayoría de los usuarios, así como la aparente despreocupación de estos en tanto a sus datos, produce que cada vez más estemos expuestos a este tipo de ataques. Es aquí donde las aplicaciones móviles juegan un papel indispensable para estas empresas, ya que son una fuente infinita de información, la posibilidad de acceder a las agendas, ubicación, costumbres… de cada usuario es sin duda alguna un filón de oro.

La teoría dice que el usuario siempre tendría que tener el control total sobre los datos que desea compartir, pero la práctica dice que las empresas no siempre cumplen esto. Evidentemente esto no es solo una cuestión de los desarrolladores de este tipo de software, sino que son los propios dispositivos los que deben de tener importantes políticas de privacidad para así poder advertir en todo momento al usuario de las pretensiones de la aplicación. Por supuesto, incluso con estas medidas, es el usuario final quien debería de aceptar el acceso a dicha información o no, lo cual de nuevo devuelve parte del problema a la despreocupación de los usuarios ante que información comparten.

Hace unos días, un estudio realizado (no recuerdo la fuente, lo siento) declaraba que despúes de analizar cientos de aplicaciones tanto para Android como para iPhone OS, eran muchas las que intentaban acaparar más datos de los necesarios. Aquí, a los usuarios de iPhone OS la mayoría de las veces ni siquiera se les pedía confirmación ni advertencia sobre los datos y recursos que serían compartidos o usados por las aplicaciones, mientras que Android avisaba de forma rigurosa al instalar la aplicación de todos y aquellos recursos a los que la aplicación accedería (lo cual no quiere decir que no se recopilen datos, solo que para instalar la aplicación el usuario debe de aceptar el acceso a dichos datos, con lo que puede negarse si así lo desea).

Google, aunque parezca lo contrario tiene un gran historial en cuanto a privacidad de datos se refiere, y aun cuando posiblemente posee las mayores bases de datos de todos nosotros, no quiere decir que se tome a risa dichas amenazas. Cualquiera con un terminal Android puede si quiere acceder a una sección específica del dispositivo llamada “Permisos” (dentro de Ajustes/Aplicaciones) para poder ver TODOS y cada uno de los diferentes permisos que posee Android y TODAS y cada una de las aplicaciones que hacen uso de ellos. No obstante, una cosa es lo que digan estudios realizados por otras personas, y otra que yo me los crea, así que (y sin querer en absoluto menospreciar el trabajo de otros) no puedo sino verificar o desmentir dichos datos. A fin de cuenta el asunto de Sophos citado anteriormente es una cuestión de punto de vista, esto es una cuestión objetiva que no se puede tener una opinión, sino una certeza.

En este caso se realizaron todas las pruebas sobre un dispositivo Android AOSP 2.2.1 con varias aplicaciones instaladadas, un buen variado para comprobar si nuestro dispositivo comparte o no información con el exterior sin nuestro consentimiento, y de hacerlo que tipo de información (sea con o sin consentimiento). Para ello nada más sencillo que colocar un sniffer dentro del propio terminal, colocar un servidor proxy en el router… cualquier técnica es válida. La cuestión es que en un arranque en frío, esto es todo lo que encontramos (sincronización de datos deshabilitada):

  • Hora: El dispositivo Android se comunica con un servidor NTP, tan solo envía su fecha y hora local y recibe la hora y fecha remota (información en texto plano).
  • Chequeo de correo electrónico: Comunicación con Gmail, posiblemente (aunque esté deshabilitado la sincronización de datos) porque estaba abierto. La comunicación se realiza por SSL.
  • Comprobación de Google Market: Comunicación TCP al puerto 5228 de los servidores de Google. La comunicación se realiza en texto plano cifrado para buscar actualizaciones de las aplicaciones.
  • Acceso a los servicios de WhatsApp: Comunicación con los servidores WhatsApp para comprobar el estado del servicio, la validez de la licencia, la conectividad y nuestra ubicación, dicha comunicación se realiza cada 5 minutos exactamente. La comunicación se realiza a través de SSL

No está mal, nuestro dispositivo al estar simplemente conectado a la red no comparte absolutamente ningún dato sensible con terceros, a pesar de tener varias aplicaciones instaladas que se ejecutan como servicios de fondo: ADW Launcher, Handcent SMS… no existe ningún tipo de conexión al exterior. Tan solo aquellas aplicaciones que requieren una conectividad constante con inet como WhatsApp (un servicio de mensajería instantanea), Gtalk… Pero veamos como se comportan las aplicaciones. Hay que tener en cuenta que tan solo puedo testear una cantidad limitada de aplicaciones, no puedo probar las cerca de 200.000 aplicaciones que posee actualmente Android Market. Voy a poner una pequeña lista de las aplicaciones “Probadas”, lo cual no descarto ir ampliando, pero nos permitirá tener una concepción un poco más abierta sobre todo lo que estamos hablando:

  • InkPad: Es un bloc de notas, si es la versión lite posee publicidad, pero nada más.
  • The Weather Channel: Una aplicación para el tiempo. Evidentemente esta aplicación requiere de conectividad, pero no comparte ningún dato sensible, tan solo la ubicación del dispositivo y cuando se usa dicha opción.
  • StockWatcher: Aplicación para la Bolsa. Al igual que Weather Channel, esta aplicación tan solo hace lo que dice, envía la petición de actualizar los datos de la bolsa y punto, no comparte ningún tipo de información con los servidores de Yahoo (a los que conecta)
  • handyCalc: Es una calculadora bastante interesante, no obstante envía estadísticas constantemente (aun cuando se deshabilita la opción de depuración). Dichas estadísticas incluyen marca y modelo de nuestro dispositivo, Firmware y versión y algunos otros datos, y todo ello lo envía al servidor data.flurry.com, evidentemente con fines de marketing. La transmisión de los datos se hace en texto plano, y la aplicación ya avisaba al instalarse que requeriría de acceso a la red y del estado del teléfono (lo cual no significa que sepamos que tipo de información transmite). Personalmente? Otra inclusión más al archivo de hosts
  • QuickSSHD: Servidor SSH, no tiene comunicación alguna con el exterior.
  • Root Explorer: Gestor de archivos. No tiene comunicación alguna con el exterior.
  • Advanced Task Killer Free: Un administrador de procesos, en su versión lite muestra publicidad, pero nada más.
  • CIFS Manager: Un gestor de SMB, protocolo de Microsoft para acceso a archivos compartidos. No tiene conexión alguna al exterior
  • GPS Status: Una aplicación interesante para el GPS. Posee publicidad, y usa la conectividad a Internet para toda la gestión del GPS, como por ejemplo los servidores de Google para el GPS asistido. Por lo demás, no comparte ningún tipo de información con el exterior.
  • TubeMate: Aplicación para la descarga y visionado de videos de YT. Además de su función, también verifica la versión de la aplicación. Esta tan solo tiene acceso a la marca y modelo del dispositivo y su idioma, no parece que comparta ningún dato con terceros.
  • Jewels: Juego. Tan solo se conecta cuando quiere recuperar o enviar datos de puntuaciones, nada más. Lo realiza por medio de SSL
  • Gem Miner: Juego. No tiene acceso al exterior.
  • Galcon: Juego. No tiene acceso al exterior.
  • Angry Bird: Juego. Todo el mundo conoce ya este juego, lo que no saben es que además de la publicidad, al igual que InkPad recolecta información del usuario por medio de los mismos servidores: data.flurry.com. Modelo, marca, estadísticas de uso… un motivo más para añadir dicho host a nuestro archivo de hosts.
  • WordPress: Un gestor de WP. Además del propio blog, se comunica con Gravatar.com para comprobar si hay algún avatar para nuestro site.
  • FaceBook: Lo interesante de la aplicación de Facebook es que toda la transmisión de datos se hace en texto plano!! un simple Sniffer y capturaría todo el tráfico de cualquiera. Pero aquí no estamos hablando de la seguridad de las aplicaciones, sino de la gestión de nuestros datos.
  • Tuenti: Al igual que la aplicaicón Facebook, no recopila nada diferente a lo que recopilaría en la web original, y al igual que Facebook, toda la comunicación se realiza en texto plano, desde mi opinión una burrada.
  • IMO: Una aplicación para gestionar clientes de mensajería instantánea. Evidentemente requiere de conexion a internet, y todo lo hace por medio de SSL, eso sí, a sus servidores propios. No comparte información sensible que no sepamos (evidentemente compartimos las contraseñas o nombres de usuario, las cuales están almacenadas en las bases de datos de ellos de forma cifrada)
  • Aplicaciones de Google: Maps, Goggles, Sky, Listen, My Track, Voice, Search, Latitude… ninguna recopila información que no sea obvia. Por ejemplo, es evidente que la aplicación mapas comparte la ubicación del dispositivo, o la aplicación Goggles usa la cámara.
  • Handcent SMS: Aplicación para SMS. Tan solo usa la conexión para recursos internos y eso sí, publicidad.
  • Otras (Widgets, Launchers, Juegos, Aplicaciones…)

Es interesante como efectivamente, Android parece que es mucho más seguro a la hora de salvaguardar nuestros datos. De más de las 50 aplicaciones probadas (tan solo he listado las 20 primeras), tan solo 2 de ellas comparten información a terceros, información que no nos avisan que usarán con fines comerciales. Por suerte para nosotros, es tan simple como añadir unas entradas  a nuestro archivo hosts para impedir que el robo de información continúe, así como la publicidad molesta. Es una lástima que haya empresas que se valgan de estas prácticas.

Tal y como decía el estudio, Android es mucho más segura de cara al robo descarado de nuestros datos de lo que es iPhone OS, en cuya plataforma el índice de aplicaciones que acceden a nuestra información es muy superior, del orden de 5 veces más. 2 de 50 no está nada mal a fin de cuenta.

Repito, que aquí lo importante no es que nuestros datos sean usados con fines comerciales, sino más bien que nuestros datos son usados para dichos fines sin nuestro consentimiento. Sí, Android nos avisa de que la aplicación tendrá acceso a dichos datos, pero evidentemente no especifica que datos en concreto o que harán con dichos datos, la aplicación podría acceder a dicha información tan solo para uso interno. No obstante como digo el balance (al menos por ahora) es positivo.