Android

Hunting Fake APKs – ( Parte 1 )

Buenas conejill@s!

Ha sido un tiempo pero prometo que merecerá la pena. ¿Cuantos de vosotros os habéis visto en la tesitura de ver como os piden analizar una aplicación android y nunca antes os habéis enfrentado a ello?…

Veo pocos que lo admiten pero yo seré uno, porque para todo hay una primera vez … En este caso en vez de una aplicación diseñada para practicar solo vamos a desmontar una que ha sido retirada de googleplay ¿Que de que apk hablo? Nada mas y nada menos que de esta maravilla :

Y ¿por que esta aplicación? Había oído de su existencia en varios grupos de telegram y sinceramente solo con el nombre ya evoca a la imaginación ” +32 GB Memory Card”. ¿No es genial? una aplicación que si la instalas por arte de

magia te añade una tarjeta SD de 32 Gb! con lo caros que se venden hoy en día los Gigas! Por favor! Gandalf estaría orgulloso de semejantes magos!

En este primer articulo no pretendo demostrar si la aplicación hace o no hace lo que dice, que claramente NO. Pero si pretendo que se tengan unas pequeñas herramientas y pautas a la hora de analizar una aplicación para poder saber por donde empezar y no estar totalmente perdido durante el proceso.

 

Fase 1 – Consiguiendo al sujeto de pruebas

Para poder empezar necesitamos 2 cosas: la APK y un entorno preparado para su análisis como puede ser ANDROL4B.

En este caso os he proporcionado el link de la apk que vamos a analizar pero es sencillo de averiguar. Tan solo necesitamos fijarnos en la barra superior de Google Play  en para ver que es lo que tendríamos que buscar en paginas como APKPure o EVOZI APKDownloader  estas paginas nos proporcionan una manera de descargar las APK de una forma sencilla eligiendo hasta la version de la misma si es que la tienen disponible.

 

 

Hasta aquí todo genial no? Vamos a entrar mas en detalle.

Fase 2 – Instalando la app en un entorno virtual para pruebas.

 

Como nos gustan las cosas difíciles vamos a ver un poquito de ADB (Android Debug Bridge) y su interacción con la maquina virtual que viene ya pre-instalada dentro del entorno de ANDROL4B. Por un lado abriremos la shell de linux que en este caso esta en el menu superior y y también abriremos el emulador pulsando en el icono del escritorio en el que indica EMULATOR ¿fácil verdad?

 

Tras un buen rato esperando tendremos el entorno totalmente preparado para su funcionamiento pero si lo que queréis es manejar la shell sin problemas… os recomiendo “sudo setxkbmap es” y santaspascuas ya no volverá a molestar ese maldito teclado americano que tanto nos molesta.

Para hacer la instalación de la apk que hemos pre-descargado se podría hacer de dos maneras diferentes.

  1. Arrastrando la Aplicación sobre el emulador (Demasiado fácil no me seáis vagos)
  2. Subir la aplicacion en el dispositivo (adb push DIRECCIONAPK) , cambiar las opciones para poder instalar apk desde origenes desconocidos y lanzarlo desde el propio terminal. (Meh)
  3. Utilizando ADB como puente entre nuestra maquina y el dispositivo móvil android simulado en nuestra VM. (<=== USE THIS MORON!)
    1. Para ello primero vamos a comprobar que nuestro dispositivo se encuentra correctamente conectado y adb es capaz de conectar con el:
    2. Ahora que hemos visto que todo esta correctamente conectado nos queda instalar de forma remota la aplicación: 

 

Entorno completado! Ya podemos trastear con la aplicación y ver que NARICES es…. porque la verdad cuanto mas lo pienso menos sentido le veo. Al arrancar la aplicación esto es lo que encontramos:

Esto parece mas simple que la goma de una braga… no parece que tenga mucho.

 

Fase 3 – Destripemos la APK (Análisis Estático)

Las apk android suelen utilizar la misma estructura de carpetas por lo que resulta sencillo saber que hay en cada cual e ir a por lo que nos interesa. Pero antes de avanzar hay algo importante que deberíais saber y es que un maldito .apk no deja de ser un archivo comprimido que si le cambiamos la extensión a .ZIP nos permite desempaquetar la aplicación entera en nuestro equipo sin herramientas aunque eso no supone que sea legible. Dentro del paquete vamos a encontrar:

  • AndroidManifest.xml => Manifiesto de la aplicación en formato binario. En este archivo xml están contenidas las definiciones de los permisos, tareas, actividades y proveedores de actividad de la aplicación.
  • META_INF => Contiene el certificado de la aplicación y SHA1 de todos los recursos
  • assets => Contiene los archivos auxiliares de código como xmls
  • res => Equivalente a su homónima en código, contiene recursos: imágenes…
  • clases.dex => Contiene el código de la app en bytecode Dalvik
  • resources.arsc => Contienen recursos pre-compilados como XML

Una vez sabemos estas cosillas básicas en vez de liarnos por ahora vamos a utilizar una herramienta rápida llamada javadecompilers que es un entorno web en el que podremos dar nuestros primeros pasos:

Como resultado obtendremos esto:

Como podéis ver son casi todas las carpetas que hemos mencionado. En unas apk encuentras unas… en otras son algo diferentes pero muchas de estas carpetas se mantienen comunes a la mayoría de aplicaciones.

¿Pero vale… tenemos decompilado el codigo para que nos viene bien esto si tenemos poca idea?

Voila! una de las cosas mas importantes a la hora de analizar una apk es revisar el ANDROIDMANIFEST.XML ya que ahi suelen mostrarse los permisos que solicita al usuario la aplicacion, que tareas realiza etc por ello vamos a abrirla:

En la mayoria de casos cuando estamos analizando el manifest lo que buscamos es:

  • API KEYS metidos a pinrel (Si… existen mas de los que pensáis)
  • content provider con EXPORTED=True
  • Permisos innecesarios para el funcionamiento de la app
  • Incluso si los desarolladores se han colado y han dejado activado el modo debug lo que nos permitiría cambiar parámetros dentro de la aplicación.

En este caso no parece que exista nada discordante ni nada extraño por ahora.

 

Otra herramienta realmente interesante y online en este caso es KOODOUS . Se trata de una iniciativa española para ver la reputación de aplicaciones Android :

Tampoco Obtenemos Resultados de ningún tipo.

Pasamos a Androlab y vamos a desempaquetar absolutamente todo con APKTOOL para conseguir el código SMALI de la aplicación :

Si ejecutamos un comando TREE para ver el contenido veremos que se nos abre una barbaridad :

 

Una de las cosas que quizás no me gusta tanto de ANDROLAB es que para ser una VM para analizar aplicaciones android…. no trae dex2jar por lo que no podemos extraer el codigo JAVA de la aplicacion (ofuscado o no) por lo que si queremos esto necesitamos o bien instalarlo (lo cual es un coñazo y paso) o bien usar nuestro amado KALI que trae d2j-dex2jar para desempaquetar toda la parte de java.

Con este paso ya tendríamos el código java por lo que pasamos ya a JDgui de cara a poder desempaquetarlo del todo y poder manipularlo desde Sublime.

 

Con este paso lo que hacemos es transformar todo a un paquete .zip que tras descomprimirlo que se puede abrir desde el propio Sublime arrastrando la carpeta que ha resutado del zip.

Y una vez dentro de sublime para aquellos que de java no tenemos mucha idea pero si queremos hacer el máximo posible tenemos la opción de buscar ciertos Strings que pueden darnos pistas de si hay cosas bien, si hay cosas mal o incluso cosas que no deberían estar, por ello buscaremos pulsando en la carpeta superior con el botón derecho (FIND IN FOLDER) :

  • WebViews
  • IPs
  • HTTP y HTTPs
  • Logs. en busca de Logs dentro del codigo (cuidado de no poner .log ya que eso seria que importan la clase)

 

Como resumen final solo puedo decir que por una vez puedo asegurar que yo y el difunto Einstein estamos de acuerdo en algo :

“hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro”…
Albert Einstein

Y en este caso cuando ves que la app tiene 50k de descargas… y una valoración de mas de 4 sobre 5… pierdes un poco mas tu fe en la humanidad y ya no digo nada si buscas cosas similares en la store…

Un abrazo conejill@s y nos vemos en el siguiente  porque esto …. CONTINUARA……;P

 

 

Un comentario en “Hunting Fake APKs – ( Parte 1 )

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Los datos introducidos se guardarán en nuestra base de datos como parte del comentario publicado, como se indica en la política de privacidad.