
Un marco de análisis de malware basado en aprendizaje automático para aplicaciones Android.
🕵️ Un framework de análisis de malware para aplicaciones Android basado en machine learning. ☢️
DroidDetective es una herramienta Python para analizar aplicaciones Android (APKs) en busca de comportamientos y configuraciones potencialmente maliciosas. Al proporcionar una ruta a una aplicación (archivo APK), Droid Detective realizará una predicción (usando su modelo de ML) sobre si la aplicación es maliciosa. Las características y cualidades de Droid Detective incluyen:
AndroidManifest.xml de la aplicación. 🙅AndroidManifest.xml de la aplicación. 🧮Todas las dependencias de DroidDetective se pueden instalar manualmente o mediante el archivo de requisitos, con
pip install -r REQUIREMENTS.txt
DroidDetective ha sido probado tanto en Windows 10 como en Ubuntu 18.0 LTS.
DroidDetective se puede ejecutar proporcionando el archivo Python con un APK como parámetro de línea de comandos, por ejemplo:
python DroidDetective.py myAndroidApp.apk
Si no hay un archivo apk_malware.model presente, la herramienta primero entrenará el modelo y requerirá un conjunto de entrenamiento de APKs tanto en una carpeta llamada malware como en otra llamada normal, ambas en la raíz del proyecto. Una vez ejecutado con éxito, se mostrará en la CLI un resultado sobre si el modelo ha identificado el APK como malicioso o benigno. Un ejemplo de esta salida se puede ver a continuación:
>> Analysed file 'com.android.camera2.apk', identified as not malware.
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 agregarán al archivo Json.
python DroidDetective.py myAndroidApp.apk output.json
Un ejemplo de este Json de salida es el siguiente:
{
"com.android.camera2": false,
}
DroidDetective es una herramienta Python para analizar aplicaciones Android (APKs) en busca de comportamientos potencialmente maliciosos. Esto funciona entrenando un clasificador Random Forest con información derivada tanto de APKs de malware conocidos como de APKs estándar disponibles en la tienda de aplicaciones Android. Esta herramienta viene pre-entrenada, sin embargo, el modelo puede ser re-entrenado con un nuevo conjunto de datos en cualquier momento. ⚙️
Este modelo actualmente utiliza los permisos del archivo AndroidManifest.xml de un APK como conjunto de características. Esto funciona creando un diccionario de cada permiso estándar de Android y estableciendo la característica en 1 si el permiso está presente en el APK. Del mismo modo, se añade una característica por la cantidad de permisos en uso en el manifiesto y por la cantidad de permisos no identificados encontrados en el manifiesto.
El modelo pre-entrenado se entrenó con aproximadamente 14 familias de malware (cada una con uno o más archivos APK), obtenidas del repositorio de ashisdb, y aproximadamente 100 aplicaciones normales obtenidas de Google Play Store.
A continuación se muestran las estadísticas de este modelo de ML:
Accuracy: 0.9310344827586207
Recall: 0.9166666666666666
Precision: 0.9166666666666666
F-Measure: 0.9166666666666666
Las 10 características con mayor peso (es decir, permisos de Android) utilizadas por este modelo para identificar malware se pueden ver 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