Spyware en Android

En el día de hoy os traigo un artículo generado a raíz de una pequeña investigación que realicé al móvil android chino (chino, re-chino, vamos que ni la marca es pronunciable) de un familiar el cual, al utilizarlo yo mismo para realizar una llamada (hay que ahorrar xD), noté, por intuición más bien, que algo en el teléfono no andaba bien.

Llevo usando android hace bastante tiempo, “tuneando” ROMs en mis terminales, haciendole mods y otros “enrreos” así como en el último año, he estado más centrado en probar herramientas de pentesting de Android aunque no haya publicado ni expuesto nada sobre esto.

Bueno pues tras pelearme unos instantes con él detecté que ¡estaba roteado! A partir de ahí os podéis imaginar un poco que posibilidades se puede abrir en el caso de ser infectado por algún malware.

Por lo pronto detecté que, al desbloquearlo, siempre salía una pantallita con un anuncio. Oh Shit! Siempre. Desinstalé alguna APP de estas famosillas de programas de la TV y algún Widgets del tiempo un poco cutre pero el problema seguía. El teléfono mostraba publicidad.

androchina_logo


Nota: Antes de nada, aclarar que este artículo no pretende ser un post muy avanzado en forense ya que necesitaríamos explicar muchos conceptos, y demás.

Mi objetivo siguiente fue ver que conexiones realizaba con el mundo exterior y fui comprobando (no todas) cada una de las IPs y que aplicación las solicitaba. ¡Vaya trabajo!…¡De chinos! Pues no, fue sencillo, porque para ello usé una APP muy interesante llamada Network Connections la cual en un plis plas te relaciona APPs con IPs que están en tu teléfono Android. Observando el listado, visualicé una de ellas que ponía “Play ###” dónde ## son caracteres chinos.

1_android

La IP me la situaba en Beijing como podéis comprobar en la siguiente captura. Aquí pude parar la “mini-audit” porque si apuntaba a china un Fake del Market, malo. Pero no quería autoconvencerme.

2_android

Después de la famosa noticia en la que se descubrió que móviles, estos famosos, XIAOMI conectaban misteriosamente a servidores en el país asiático la cosa mosqueaba un poco.

Procedí a localizar la ruta de esta aplicación. La propia aplicación Network Connections si clicas encima de la IP te da más información detallada que puede servir para localizar el nombre de sistema que tiene la carpeta asignada a su instalación como vemos en la captura.

3_android

Com.uucun4470.android.cms era su nombre. Ahora tocaba localizar la APK para poder descargarla y proceder a su “masacre” destripándola para ver a que accedía. Fuera o no la causa de la publicidad, iba a ser la “cabeza de turco” xD.

Como estaba roteado, que desconozco si venía así, aunque según mis búsquedas parece ser que sí que venía de fábrica así, husmeé por las carpetas de sistema. Concretamente en /system/app para localizar uuplay.apk y curiosamente otra llamada uuairpush.apk que tenía pinta de estar relacionada. Por si acaso, me la descargué también.

4_android

Ahora tocaba desgranarla, ver de que estaba hecha para al menos quedarme tranquilo y de paso tener un artículo para todos vosotros xD.

Para ello vamos a usar Androguard (hola Edu xD). Voy a usar Android Tamper, una Distribución Linux específica para Android con herramientas muy curradas para hacer de todo con los APK.

Decompilar la APK

Vamos a usar un script muy interesante escrito en Python llamada Androlyze. Lo primero será ejecutar para entrar en la “consola”.

5_android

El segundo paso, es introducir la siguiente consulta:

a,d,dx = AnalyzeAPK(“uuplay.apk”, decompiler=”dad”)

Dónde uuplay.apk es nuestra APK china usando el decompilador “dad”. Así obtendremos una línea en blanco y a continuación un “In [2]:” Esperando que le introduzcamos las órdenes pertinentes.

Introduciremos: a.get_activities() Para ver las actividades de la APK y echarle una ojeada obteniendo:

6_android

Veamos que permisos maneja:
a.get_permissions()

7_androidLe falta permiso para acceder a tu casa xD. Atención que tiene permiso de SEND_SMS.

Podemos aplicar diferentes comandos para acceder a la información que vayamos buscando. Por ejemplo, introduciendo a.get_ y tabulando, aparecen las opciones que hay. Lo vemos en la captura.

8_android
Podemos usar también d.get_ y tabulador para que nos muestre las opciones de debugging.

9_android

Aunque estos detalles ya forman parte de un análisis mucho más profundo del que no es objetivo este artículo os pueden servir para haceros una idea, de cuantas opciones nos facilita androlyze.

Si esto nos resulta una odisea, o muy lioso, podemos optar por otro script de Androguard llamado Androapkinfo que nos facilita esto mismo, pero de otra forma. Lo vemos.

10_android

El problema de utilizar esto, que refleja mucha información y hay que descargarla en un TXT para que no se nos pierda en el scroll de la ventana.
11_android
Si pasáis de leeros a manopla líneas y líneas de texto, podéis utilizar Androwarn (https://github.com/maaaaz/androwarn/) que “pinta” los resultados en un HTML y que para reporting, siempre viene bien. Os mostramos el resultado.

12_android

Si queréis más visualización y “comodidad” aunque esto es relativo, yo me encuentro más cómodo via consola, podéis utilizar APK Analyser. En formato JAVA, seleccionas el directorio y el APK, le das a analizar y tras unos instantes te muestra los resultados.

13_android
¡Un momento! WTF!! ¿Qué son esas URL?

14_android 15_android

Si hacemos ping a esas URL, nos devuelve la IP inicial que detectamos con Network Connections.

16_android
Con esto hemos comprobado que realmente esta fake Play Store China, contiene rutas o hilos de comunicación hacia servidores chinos. Lo que no conocemos es para qué, pero ya partimos de la base de que no va a ser para nada bueno.

Tras investigar más las IPs que aparecen utilizamos Maltego para sacar entidades que nos relacionen más que son estas IPs, obteniendo los siguientes resultados. No se corresponde la .57 con la .51 del inicio, pero ahora veremos que tienen algo que ver, alguna relación, por lo que nos es útil analizarla aunque NetworkConnections no nos la hubiera mostrado.

17_androidIP:211.151.167.51

18_android

19_android
Si realizamos una búsqueda en Google, para comprobar por ejemplo la relación en “pastebin” que realiza maltego obtenemos:

20_android

Si consultamos las IPs en sitios de reputación, no aparecen como blacklist. Esto no nos libra de nada, porque puede ser un NODO de recepción de datos, por lo que emitir malware y/o spam no es su cometido y por tanto no aparecer.

23_android

22_android
Pero no solamente analicé el código en sí, sino que configuré un proxy en mi equipo y dejé conectado el móvil por Wifi unos instantes para capturar conexiones con Wireshark. Aparte de la multitud de conexiones que realiza un móvil sin usar, identifiqué las IPs de la discordia. También tenían su protagonismo en mi pcap.

23_android
No dio tiempo a más, puesto que mi familiar necesitaba el móvil y yo, como todos, no es que ande sobrado de tiempo pero al menos ha dado para darns un paseito “androide” jeje.

Como veis, podemos analizar rápidamente el origen de cualquier APK con las premisas mencionadas aquí. Existe documentación mucho más avanzada por si queréis perfeccionar el tema.

Espero que os haya gustado.

@ManoloGaritmo