DroidDetective Framework de Análisis de Malware para Apps Android
DroidDetective Framework de Análisis de Malware para Apps Android

DroidDetective: Framework de Análisis de Malware para Apps Android

DroidDetective es una herramienta de Python para analizar las aplicaciones de Android (APK) en busca de posibles comportamientos y configuraciones relacionadas con el malware. Cuando se le proporciona una ruta de acceso a una aplicación (archivo APK) Droid Detective hará una predicción (usando su modelo ML –machine learning-) de si la aplicación es maliciosa. Las características y cualidades de Droid Detective incluyen:

  • Analizar cuáles de los ~330 permisos están especificados en el archivo AndroidManifest.xml de la aplicación.
  • Analizar el número de permisos estándar y propietarios en uso en el archivo AndroidManifest.xml de la aplicación.
  • Utilizando un clasificador de aprendizaje automático RandomForest, entrenado a partir de los datos anteriores, de ~14 familias de malware y ~100 aplicaciones de Google Play Store.
Framework DroidDetective para Android
Framework DroidDetective para Android

Cómo Empezar

Instalación

Clona el repositorio:

git clone https://github.com/user1342/DroidDetective.git

Todas las dependencias de DroidDetective se pueden instalar manualmente o a través del archivo de requisitos, con:

pip install -r REQUIREMENTS.txt
Instalación de DroidDetective en Mac
Instalación de DroidDetective en Mac

DroidDetective ha sido probado tanto en Windows 10 como en Ubuntu 18.0 LTS.

Uso de DroidDetective

DroidDetective se puede ejecutar proporcionando el archivo Python con un APK como parámetro de línea de comandos, como:

python DroidDetective.py myAndroidApp.apk

Si un archivo apk_malware.model no está presente, entonces la herramienta primero entrenará el modelo y requerirá un conjunto de APKs de entrenamiento en una carpeta en la raíz del proyecto llamada malware y otra llamada normal. Una vez que se ejecute con éxito, se imprimirá un resultado en la CLI sobre si el modelo ha identificado el APK como malicioso o benigno. Un ejemplo de este resultado se puede ver a continuación:

>> Analysed file 'com.android.camera2.apk', identified as not malware.
Ejemplo de uso de DroidDetective
Ejemplo de uso de DroidDetective

Se puede proporcionar un parámetro adicional a DroidDetective.py como un archivo Json para guardar los resultados. Si este archivo Json ya existe, los resultados de esta ejecución se añadirán al archivo Json.

python DroidDetective.py myAndroidApp.apk output.json

Un ejemplo de esta salida Json es el siguiente:

{
    "com.android.camera2": false,
}

Ciencia de datos | El modelo ML

DroidDetective es una herramienta de Python para analizar las aplicaciones de Android (APKs) en busca de posibles comportamientos relacionados con el malware. Funciona entrenando un clasificador Random Forest sobre la información derivada tanto de los APKs de malware conocidos como de los APKs estándar disponibles en la tienda de aplicaciones de Android. Esta herramienta viene pre-entrenada, sin embargo, el modelo puede ser re-entrenado en un nuevo conjunto de datos en cualquier momento.

Este modelo utiliza actualmente los permisos de un archivo AndroidManifest.xml del APK como conjunto de características. Esto funciona creando un diccionario de cada permiso estándar de Android y estableciendo la característica a 1 si el permiso está presente en el APK. Del mismo modo, se añade una característica para la cantidad de permisos en uso en el manifest y para la cantidad de permisos no identificados encontrados en el manifest.

El modelo preentrenado fue entrenado con aproximadamente 14 familias de malware (cada una con uno o más archivos APK), localizadas en el repositorio de ashisdb, y aproximadamente 100 aplicaciones normales localizadas en Google Play Store.

A continuación, se muestran las estadísticas de este modelo ML:

Accuracy: 0.9310344827586207
Recall: 0.9166666666666666
Precision: 0.9166666666666666
F-Measure: 0.9166666666666666

Las 10 características más ponderadas (es decir, los permisos de Android) utilizadas por este modelo, para identificar el malware, pueden verse a continuación:

"android.permission.SYSTEM_ALERT_WINDOW": 0.019091367939223395,
"android.permission.ACCESS_NETWORK_STATE": 0.021001765263234648,
"android.permission.ACCESS_WIFI_STATE": 0.02198962579120518,
"android.permission.RECEIVE_BOOT_COMPLETED": 0.026398914436102188,
"android.permission.GET_TASKS": 0.03595458598076517,
"android.permission.WAKE_LOCK": 0.03908212881520419,
"android.permission.WRITE_SMS": 0.057041576632290585,
"android.permission.INTERNET": 0.08816028225034145,
"android.permission.WRITE_EXTERNAL_STORAGE": 0.09835914154294739,
"other_permission": 0.10189463965313218,
"num_of_permissions": 0.12392224814084198

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda