Cazando Pokemon

Creo que no es necesario presentar ni aclarar que significa, actualmente, «cazar Pokemon» pero por si acaso voy a explicarlo brevemente para despistados.

Pokemon GO es una aplicación que se ha vuelto viral, utilizada para «cazar» pokemons utilizando un mapa de situación del lugar dónde te encuentres, con el estilo típico de pokemon pero totalmente ajustado a la realidad. Además utiliza la cámara para que cuando tengas un pokemon cerca, esta sirva para saber en que lugar de tu emplazamiento está.

La APP es gratuita en su descarga(importante) y cualquiera puede registrarse y patearse su ciudad en busca de los pokemon. No obstante, y ya os habréis dado cuenta, la app es gratis a costa de cierta información.

Para justificar nuestro parecer, en hacking-etico.com hemos hecho un breve análisis estático de esta APK (no de la app fake que está pululando por ahí que tiene sorpresa)para ver de qué tira esta afamada aplicación y a modo solamente educativo.

pok

Descarga de la APK

Nos vamos a la web apkpure.com para realizar la descarga de la APK. Si tuvieramos nuestro terminal rooteado podríamos instalar desde Play Store y extraerla con Root Explorer pero como no es el caso, pues procedemos a descargar de APKPURE.

apkpure

Tras montar el entorno y desgranar la APK utilizando algunas técnicas que mencionaba el compañero Edu Sánchez, Auditando aplicaciones en Android y en Spyware en Android (de un servidor). Obtenemos los siguientes resultados analizando el AndroidManifest.xml:

permisos2 permisos1

Además, el análisis de este fichero que nos revela información muy interesante, podemos ver que tiene algunos problemas de configuración como:

  • La actividad com.upsight.android.googlepushservices.internal.PushBroadcastReceiver no está protegida. Existe un «intent-filter». ¿Qué significa esto? Pues que el BroadCast Receiver se comparte con todas las aplicaciones, es decir, otras aplicaciones tienen acceso al Broadcast Receiver. Además con el «intent-filter» permite exportar el Broadcast Receiver. ¿Pero y que es un Broad%&/%&%/%&//%%$&/(? es un componente que recibe y responde ante eventos globales generados por el sistema, tipo recepción de SMS, llamadas, aviso de la memoria interna además de eventos producidos por otras APP’s.
  • Se permite backup mediante ADB. Esto es otra mala praxis a la hora de programar en android. Lo ideal es seleccionarlo es mantener el flag en False. ¿Acaso es necesario poder hacer backup de la app por ADB?

Analizando los entresijos de la APP de forma superficial podemos ver algunos problemas típicos de las librerías «GMS» (Servicios de Google Play) como el uso de «addJavascriptInterface» que tiene CVE (CVE-2013-4710). Esto suele pasar porque se usan API’s más o menos «antiguas» para que la APP sea compatible con el número máximo de versiones android, siendo las más antiguas (4.2 para atrás) vulnerables a este CVE.

También se ha detectado que la aplicación escribe en la tarjeta SD (accesible por todas las aplicaciones) esto, podría suponer un riesgo de seguridad si almacena cualquier información sensible por lo citado anteriormente.

Desde el punto de vista de la privacidad, otros aspecto, es que dentro del código de la APK existen proveedores de identidad tales como:

https://www.facebook.com
https://accounts.google.com
https://www.linkedin.com
https://login.live.com
https://www.paypal.com
https://twitter.com
https://login.yahoo.com

¿Qué hace en una aplicación estos proveedores? Bien es cierto que para loguearse piden cuenta google o facebook, pero existen referencias a PayPal, que todos conocemos y que nos da que pensar, aunque en este análisis básico no se ha encontrado ninguna actividad que pueda hacer lo que estáis pensando, ejecutar pagos. No obstante, dentro de la propia interfaz aplicación que existe este método de pago (Gracias Julio! ) para realizar compras pero como hemos aclarado, es un análisis básico general, rápido, sin entrar en localizar detalles del código.

Desde el punto de vista de seguridad de la APP, podemos decir que es segura si usamos ultimísimas versiones android pero que realmente, pide permisos un tanto prescindibles como el bluetooth, acceso a contactos, o a almacenamiento por ejemplo.

En Android 6.0, ya permite controlar a que accede la aplicación cuando la iniciamos y, al menos, sería interesante rechazar ciertos permisos que no son fundamentales para que funcione la aplicación.

Screenshot_20160722-104415

Screenshot_20160722-104419

Screenshot_20160722-104458

Recordad, «nadie da duros por pesetas» y lo que se ha convertido en un fenómeno viral siendo gratuita su utilización, está generando muchísima información sobre datos personales de rutas, hábitos, situación, perfiles, uso, etcétera… Big Data is coming…

 

@ManoloGaritmo