
Un marco de análisis de malware de aprendizaje automático para aplicaciones de Android. ☢️
DroidDetective es una herramienta Python para analizar las aplicaciones de Android (APK) para un posible comportamiento y configuraciones relacionadas con el malware. Cuando se le proporcione una ruta a una aplicación (archivo APK), Droid Detective hará una predicción (usando su modelo ML) de 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 DroidDetective se pueden instalar manualmente o mediante el archivo de requisitos, con
pip install -r REQUIREMENTS.txtDroidDetective se ha probado tanto en Windows 10 como en Ubuntu 18.0 LTS.
DroidDetective se puede ejecutar proporcionando el archivo de Python un APK como parámetro de línea de comandos, como:
python DroidDetective.py myAndroidApp.apk
Si no está presente un archivo apk_malware.model , entonces las herramientas primero entrenarán el modelo y requerirán un conjunto de capacitación de APK en una carpeta en la raíz del proyecto llamado malware y otro llamado normal . Una vez ejecutado con éxito, se imprimirá un resultado en la CLI si el modelo ha identificado que el APK es 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 esta salida JSON es el siguiente:
{
"com.android.camera2" : false ,
}DroidDetective es una herramienta Python para analizar las aplicaciones de Android (APK) para un posible comportamiento relacionado con malware. Esto funciona capacitando un clasificador de bosque aleatorio sobre información derivada de los APK de malware conocidos y los APK estándar disponibles en Android App Store. Esta herramienta viene previamente capacitada, sin embargo, el modelo puede volver a entrenar en un nuevo conjunto de datos en cualquier momento.
Este modelo actualmente utiliza permisos de un archivo APKS AndroidManifest.xml como un conjunto de características. Esto funciona creando un diccionario de cada permiso estándar de Android y configurando la función en 1 si el permiso está presente en el APK. Del mismo modo, se agrega una característica para la cantidad de permisos en uso en el manifiesto y por la cantidad de permisos no identificados que se encuentran en el manifiesto.
El modelo previamente capacitado fue capacitado de aproximadamente 14 familias de malware (cada una con uno o más archivos APK), ubicado desde el repositorio de AshisDB, y aproximadamente 100 aplicaciones normales ubicadas en Google Play Store.
El siguiente denota 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 importantes (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
GNU Licencia pública general v3.0