
Ein auf maschinellem Lernen basierendes Malware-Analyse-Framework für Android-Apps.
🕵️ Ein Framework zur Malware-Analyse für Android-Apps mittels maschinellem Lernen. ☢️
DroidDetective ist ein Python-Tool zur Analyse von Android-Anwendungen (APKs) auf potenziell schädliches Verhalten und Konfigurationen. Wenn ein Pfad zu einer Anwendung (APK-Datei) angegeben wird, trifft DroidDetective eine Vorhersage (mithilfe seines ML-Modells), ob die Anwendung bösartig ist. Zu den Funktionen und Eigenschaften von DroidDetective gehören:
AndroidManifest.xml-Datei der Anwendung angegeben sind. 🙅AndroidManifest.xml-Datei verwendeten Standard- und proprietären Berechtigungen. 🧮Alle Abhängigkeiten von DroidDetective können manuell oder über die Anforderungen-Datei installiert werden, mit
pip install -r REQUIREMENTS.txt
DroidDetective wurde sowohl unter Windows 10 als auch unter Ubuntu 18.0 LTS getestet.
DroidDetective kann ausgeführt werden, indem der Python-Datei eine APK als Befehlszeilenparameter übergeben wird, z.B.:
python DroidDetective.py myAndroidApp.apk
Wenn keine Datei apk_malware.model vorhanden ist, trainiert das Tool zuerst das Modell und benötigt einen Trainingssatz von APKs in einem Ordner namens malware und einem weiteren namens normal im Projektstammverzeichnis. Nach erfolgreicher Ausführung wird in der CLI ein Ergebnis ausgegeben, ob das Modell die APK als bösartig oder gutartig identifiziert hat. Ein Beispiel für diese Ausgabe ist unten zu sehen:
>> Analysierte Datei 'com.android.camera2.apk', als nicht bösartig identifiziert.
Ein zusätzlicher Parameter kann an DroidDetective.py als JSON-Datei übergeben werden, um die Ergebnisse zu speichern. Falls diese JSON-Datei bereits existiert, werden die Ergebnisse dieses Durchlaufs an die JSON-Datei angehängt.
python DroidDetective.py myAndroidApp.apk output.json
Ein Beispiel für diese JSON-Ausgabe ist wie folgt:
{
"com.android.camera2": false,
}
DroidDetective ist ein Python-Tool zur Analyse von Android-Anwendungen (APKs) auf potenziell schädliches Verhalten. Dies funktioniert, indem ein Random-Forest-Klassifikator mit Informationen trainiert wird, die sowohl aus bekannten Malware-APKs als auch aus Standard-APKs aus dem Android App Store stammen. Dieses Tool wird vortrainiert ausgeliefert, das Modell kann jedoch jederzeit mit einem neuen Datensatz neu trainiert werden. ⚙️
Dieses Modell verwendet derzeit Berechtigungen aus der AndroidManifest.xml-Datei einer APK als Merkmalssatz. Dies funktioniert, indem ein Wörterbuch mit jeder Standard-Android-Berechtigung erstellt wird und das Merkmal auf 1 gesetzt wird, wenn die Berechtigung in der APK vorhanden ist. Ebenso wird ein Merkmal für die Anzahl der im Manifest verwendeten Berechtigungen und für die Anzahl der nicht identifizierten Berechtigungen im Manifest hinzugefügt.
Das vortrainierte Modell wurde mit etwa 14 Malware-Familien (jeweils mit einer oder mehreren APK-Dateien) aus ashisdb's Repository und etwa 100 normalen Anwendungen aus dem Google Play Store trainiert.
Nachfolgend sind die Statistiken für dieses ML-Modell aufgeführt:
Accuracy: 0.9310344827586207
Recall: 0.9166666666666666
Precision: 0.9166666666666666
F-Measure: 0.9166666666666666
Die zehn am höchsten gewichteten Merkmale (d.h. Android-Berechtigungen), die von diesem Modell zur Identifizierung von Malware verwendet werden, sind unten aufgeführt:
"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