
Un marco para la extracción automatizada de características estáticas y dinámicas de aplicaciones Android
Esta es una herramienta para extraer características estáticas y dinámicas de APKs de Android. Combina diferentes herramientas de análisis de aplicaciones Android conocidas como DroidBox, FlowDroid, Strace, AndroGuard o el análisis de VirusTotal. Dado un directorio fuente que contiene archivos APK, AndroPyTool aplica todas estas herramientas para realizar análisis preestáticos, estáticos y dinámicos y genera archivos de características en formatos JSON y CSV, y también permite guardar todos los datos en una base de datos MongoDB.
Para obtener más información, puedes leer los siguientes dos artículos:
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). Android malware detection through hybrid features fusion and ensemble classifiers: the AndroPyTool framework and the OmniDroid dataset. Information Fusion. DOI: 10.1016/j.inffus.2018.12.006
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). A new tool for static and dynamic Android malware analysis. In Data Science and Knowledge Engineering for Sensing Decision Support (pp. 509-516). World Scientific.
Por favor, si usas esta herramienta, cita los trabajos anteriores en tus artículos.

Hay dos formas posibles de instalar y usar AndroPyTool.
MODO A - DOCKER: Descargar un contenedor Docker que contiene todos los archivos necesarios. Esta es la opción recomendada, puedes tener AndroPyTool funcionando en solo dos pasos.
MODO B - CÓDIGO FUENTE: Instalar y configurar todas las bibliotecas necesarias y ejecutar el código fuente de Python.
Se ha construido un contenedor Docker para proporcionar una versión rápida y confiable de AndroPyTool. Para usar AndroPyTool con Docker solo necesitas:
Instalar Docker (si aún no lo has hecho). Sigue las instrucciones aquí. Si no estás usando Ubuntu, cambia al Sistema Operativo correcto.
Obtener el contenedor de Docker hub:
$ docker pull alexmyg/andropytool
Ejecutar AndroPyTool lanzando el contenedor:
$ docker run --volume=</PATH/TO/FOLDER/WITH/APKS/>:/apks alexmyg/andropytool -s /apks/ <ARGUMENTS>
Necesitas reemplazar </PATH/TO/FOLDER/WITH/APKS/> con una ruta de tu host que contenga los apks a analizar. El argumento "-s" debe proporcionarse como se muestra en la línea anterior, apuntando a /apks/
NOTA 2: AndroPyTool mueve tus archivos APK a diferentes subcarpetas para generar un directorio de trabajo organizado. Consulta el esquema de estructura de carpetas.
Hay diferentes argumentos que se pueden proporcionar a androPyTool:
-h: Muestra el mensaje de ayuda y sale.-all, --allsteps: Ejecuta todos los pasos de AndroPyTool (Recomendado). Para obtener un informe de VirusTotal, también se debe proporcionar el argumento -vt seguido de una clave API de VirusTotal. Si no se proporciona la opción -all, entonces solo se ejecuta el último paso más los argumentos proporcionados.-s SOURCE_FOLDER, --source SOURCE_FOLDER: Carpeta que contiene los APK a analizar. Todas las muestras deben incluir la extensión .apk. Si una ejecución anterior de AndroPyTool fue interrumpida, se debe proporcionar el directorio de trabajo anterior.-S, --single: Guardar análisis individuales por separado. Por defecto: Falso.-f, --filter: Filtrar APK válidos e inválidos (Recomendado).-vt VIRUSTOTAL_API_KEY, --virustotal VIRUSTOTAL_API_KEY: Analizar aplicaciones con el servicio VirusTotal. Debe ir seguido de una clave API de VirusTotal.-cl, --classify: Clasificar aplicaciones entre malware o benignware basándose en los informes de VirusTotal. El argumento --virustotal debe estar configurado.-fw, --flowdroid: Ejecutar flowdroid.-dr, --droidbox: Ejecutar droidbox.-c, --cleanup: Realizar limpieza eliminando archivos temporales de trabajo. Por defecto: Verdadero.-P PACKAGEINDEX, --packgeIndex PACKAGEINDEX: Archivo TXT con todos los paquetes de la API de Android. Por defecto: info/package_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: Archivo TXT con todas las clases de la API de Android. Por defecto: info/class_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: Archivo TXT con todas las clases de la API de Android. Por defecto: info/class_index.txt-SC SYSTEMCOMMANDSINDEX, --systemCommandsIndex SYSTEMCOMMANDSINDEX: Archivo TXT con todos los comandos del sistema. Por defecto: info/system_commands.txt-C CLASSINDEX, --classIndex CLASSINDEX: Archivo TXT con todas las clases de la API de Android. Por defecto: info/class_index.txt-mg MONGODBURI, --mongodbURI MONGODBURI: Exporta el informe generado a una base de datos MongoDB. Requiere dirección de conexión siguiendo el esquema: localhost:27017-csv EXPORTCSV, --cexportCSV EXPORTCSV: Exporta el informe generado a un archivo CSV. Solo se incluyen características estáticas.--color: Permitir colores al imprimir mensajes.--no-color: No usar colores para imprimir mensajes.NOTA: Este procedimiento solo ha sido probado en Ubuntu
0. Requisitos
$ sudo apt-get update
$ sudo apt-get install -y --no-install-recommends software-properties-common wget git lib32gcc1 lib32ncurses5 lib32stdc++6 lib32z1 libc6-i386 libgl1-mesa-dev python-pip python-dev gcc python-tk curl
$ sudo add-apt-repository ppa:webupd8team/java -y
$ sudo apt-get update
$ sudo echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
$ sudo apt-get install -y oracle-java8-installer
$ sudo apt-get install -y python-setuptools
$ sudo apt-get clean
1. Necesitas instalar Android SDK (ve al siguiente paso si ya lo tienes) Los siguientes pasos te permitirán instalar Android SDK en modo No-GUI:
Descargar y descomprimir Android SDK:
$ cd
$ wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz
$ tar -xvf android-sdk_r24.2-linux.tgz
Agregar Android SDK al PATH (si no usas Bash, por ejemplo si prefieres Zsh, recuerda modificar el archivo correcto). Para ello, agrega estas dos líneas a tu archivo ~/.bashrc:
export ANDROID_HOME=$HOME/android-sdk-linux/
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
Cargar las bibliotecas en la sesión actual con:
$ source ~/.bashrc
2. Tenemos que instalar el paquete Android 16