Tacita: crear un #BigData con análisis estático de APKs

banner-tacita

Tras unos meses hablado de Shodita y de sus bots con los nombres de los personajes de la serie de dibujos de Doraemon. Ha llegado la hora de empezar esta saga de cómo crear tu propia base de datos (big data) de análisis estático de APKs para obtener links, permisos, librerías, ficheros y mucho más con el objetivo de facilitar la búsqueda de malware con patrones. Volveremos a usar Python 2.7 y MongoDB.

¿Qué es Tacita?

Tacita es una suit de herramientas (licencia GPL) dependientes una de las otras. Cada script es un bot encargado de una funcionalidad. En conjunto todas ellas funcionando de forma secuencial o en paralelo nos ayudan a buscar con patrones malware en los APKs descargados y analizados.

¿Qué hace Tacita.py?

Usaremos la misma estructura de bots que Shodita, creando una familia de scripts intereactuando y dependiendo una de las otras. Los diferentes bots que crearemos son:

  • downloadAPK.py: encargado de descargar en el directorio llamado ‘bot’ los apks que posteriormente serán analizados.
  • analizeAPK.py: encargado de obtener package, directorios y archivos, permisos, librerías, activities, urls, emails, ftp, etc de todos los APKs descargados anteriormente por downloadAPK.py y almacenar la información en MongoDB.
  • little-cup.py: panel en consola que nos permite hacer búsquedas con patrones.

¿Cómo descargará los APKs que vamos a analizar?

Al no disponer acceso a todos los APKs de Google Play tendremos que buscar otras opciones. Para ello usaremos una web de descarga de APKs no oficial. APKmirror.com es una web creada en WordPress que permite al usuario descargar una gran abanico de aplicaciones para Android.

Si navegamos por la web y accedemos a descargar cualquier app podemos ver la ruta donde guarda los APKs:

wp-apkmirror

¿Cómo funciona downloadAPK.py, analizeAPK.py y little-cup.py?

downloadAPK.py:

En la primera versión beta solo tenemos que modificar las 2 variables siguientes por la cantidad de APKs que intentaremos descargar de APKmirrror. Recomiendo echar un vistazo a la web para saber por donde va el parámetro id.

downloadapk

analizeAPK.py:

Su configuración es semejante que downloadAPK.py solo tendremos que poner en las 2 variables anteriores los mismos números. Es importante que si queremos trabajar de forma paralela debemos pensar que número poner para que funcione correctamente y no exista “colisión”. Por ejemplo: analizeAPK1.py {start = 100000, end = 105000}, analizeAPK2.py {start = 105000, end = 110000}

analizeapk

little-cup.py:

Aun por desarrollar.

¿Cómo recoge la información?

La idea me viene un día utilizando la herramienta Androguard y observando su código en Python se me ocurrió la idea de hacer un Shodita de la información que obtiene y luego poder consultarla creando patrones.

Investigando encontré el módulo creado por Tdoly y su fácil uso para obtener la información que claramente te expone en su Github. Y me dispuse a crear Tacita.

¿Qué información se puede obtener?

Estos son algunos de los ejemplos de la información que podemos llegar a obtener, sin embargo existe muchas más posibilidades infinitas que dependerán de la creatividad del usuario.

  • Podemos detectar urls que utiliza la aplicación. Por ejemplo el uso de web services, urls con tokens, contraseñas y usuarios, etc
  • Hacer un gráfico de permisos y mismos activities
  • Identificar los emails
  • Encontrar directorios y archivos como “password.txt”, “pass.txt”, “data.txt”, etc
  • Encontrar urls por FTP

¿Cómo puedo descargar la aplicación?

Actualmente está en la versión beta pero puedes descargarlo Github de QuantiKa14. Recuerda compartir y participar para que el proyecto pueda seguir mejorando.

Además incluye un archivo llamado “tacita-ejm.json” para que podáis importarlo para que vosotros mismos podáis hacer vuestros análisis con datos reales sobre más de 1800 APKs analizados.

~$ mongoimport –collection Tacita –file tacita-ejm.json

Recuerda que debes instalar con anterioridad MongoDB:

~$ sudo apt-get install mongodb

¿Qué falta por desarrollar?

La aplicación esta actualmente en su versión Beta 1.0 sin embargo es totalmente funcional. Falta por mejorar la configuración creando un archivo o script que permita configurar los parámetros fácilmente. Además de little-cup.py que será una aplicación de consola que nos permitirá realizar diferentes búsquedas a la base de datos y devolver los resultados.

Más adelante trabajaremos en una GUI más apto para usuarios que conozcan menos y puedan usarlo sin dificultades. Ese es el objetivo final.

Un saludo.

 

 

Add a Comment

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