
Un framework d'analyse de logiciels malveillants par apprentissage automatique pour applications Android.
🕵️ Un framework d'analyse de logiciels malveillants par apprentissage automatique pour applications Android. ☢️
DroidDetective est un outil Python pour analyser les applications Android (APK) pour un comportement potentiellement lié aux logiciels malveillants et leurs configurations. Lorsqu'un chemin vers une application (fichier APK) est fourni, Droid Detective fera une prédiction (en utilisant son modèle ML) pour savoir si l'application est malveillante. Les fonctionnalités et qualités de Droid Detective incluent :
AndroidManifest.xml de l'application. 🙅AndroidManifest.xml de l'application. 🧮Toutes les dépendances de DroidDetective peuvent être installées manuellement ou via le fichier requirements, avec
pip install -r REQUIREMENTS.txt
DroidDetective a été testé sur Windows 10 et Ubuntu 18.0 LTS.
DroidDetective peut être exécuté en fournissant le fichier Python avec un APK comme paramètre de ligne de commande, par exemple :
python DroidDetective.py myAndroidApp.apk
Si un fichier apk_malware.model n'est pas présent, l'outil entraînera d'abord le modèle et nécessitera un ensemble d'entraînement d'APK dans un dossier à la racine du projet appelé malware et un autre appelé normal. Une fois exécuté avec succès, un résultat sera affiché sur la CLI indiquant si le modèle a identifié l'APK comme malveillant ou bénin. Un exemple de cette sortie peut être vu ci-dessous :
>> Analysed file 'com.android.camera2.apk', identified as not malware.
Un paramètre supplémentaire peut être fourni à DroidDetective.py sous forme d'un fichier Json pour enregistrer les résultats. Si ce fichier Json existe déjà, les résultats de cette exécution seront ajoutés au fichier Json.
python DroidDetective.py myAndroidApp.apk output.json
Un exemple de ce fichier Json de sortie est le suivant :
{
"com.android.camera2": false,
}
DroidDetective est un outil Python pour analyser les applications Android (APK) pour un comportement potentiellement lié aux logiciels malveillants. Cela fonctionne en entraînant un classifieur Random Forest sur des informations provenant à la fois d'APK de logiciels malveillants connus et d'APK standards disponibles sur le Google Play Store. Cet outil est pré-entraîné, cependant, le modèle peut être ré-entraîné sur un nouvel ensemble de données à tout moment. ⚙️
Ce modèle utilise actuellement les permissions d'un fichier AndroidManifest.xml d'APK comme ensemble de caractéristiques. Cela fonctionne en créant un dictionnaire de chaque permission Android standard et en définissant la caractéristique à 1 si la permission est présente dans l'APK. De même, une caractéristique est ajoutée pour le nombre de permissions utilisées dans le manifeste et pour le nombre de permissions non identifiées trouvées dans le manifeste.
Le modèle pré-entraîné a été entraîné sur environ 14 familles de logiciels malveillants (chacune avec un ou plusieurs fichiers APK), provenant du dépôt ashisdb, et environ 100 applications normales provenant du Google Play Store.
Les statistiques pour ce modèle ML sont indiquées ci-dessous :
Accuracy: 0.9310344827586207
Recall: 0.9166666666666666
Precision: 0.9166666666666666
F-Measure: 0.9166666666666666
Les 10 caractéristiques les plus pondérées (c'est-à-dire les permissions Android) utilisées par ce modèle pour identifier les logiciels malveillants peuvent être vues ci-dessous :
"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