
Un framework di analisi malware basato su machine learning per app Android.
🕵️ Un framework di analisi malware basato su machine learning per app Android. ☢️
DroidDetective è uno strumento Python per analizzare applicazioni Android (APK) alla ricerca di comportamenti e configurazioni potenzialmente riconducibili a malware. Quando viene fornito il percorso di un'applicazione (file APK), Droid Detective effettua una previsione (tramite il suo modello di ML) per determinare se l'applicazione è dannosa. Caratteristiche e qualità di Droid Detective includono:
AndroidManifest.xml dell'applicazione. 🙅AndroidManifest.xml dell'applicazione. 🧮Tutte le dipendenze di DroidDetective possono essere installate manualmente o tramite il file dei requisiti, con
pip install -r REQUIREMENTS.txt
DroidDetective è stato testato sia su Windows 10 che su Ubuntu 18.0 LTS.
DroidDetective può essere eseguito fornendo al file Python un APK come parametro della riga di comando, ad esempio:
python DroidDetective.py myAndroidApp.apk
Se non è presente un file apk_malware.model, lo strumento addestrerà prima il modello e richiederà un set di addestramento di APK sia in una cartella alla radice del progetto chiamata malware, sia in un'altra chiamata normal. Una volta eseguito con successo, il risultato verrà stampato sulla CLI per indicare se il modello ha identificato l'APK come dannoso o benigno. Un esempio di questo output è visibile di seguito:
>> File analizzato 'com.android.camera2.apk', identificato come non malware.
È possibile fornire un parametro aggiuntivo a DroidDetective.py come file Json per salvare i risultati. Se questo file Json esiste già, i risultati di questa esecuzione verranno aggiunti al file Json.
python DroidDetective.py myAndroidApp.apk output.json
Un esempio di questo output Json è il seguente:
{
"com.android.camera2": false,
}
DroidDetective è uno strumento Python per analizzare applicazioni Android (APK) alla ricerca di comportamenti potenzialmente riconducibili a malware. Funziona addestrando un classificatore Random Forest su informazioni derivate sia da APK malware noti, sia da APK standard disponibili sul negozio di app Android. Questo strumento è pre-addestrato, tuttavia il modello può essere riaddestrato su un nuovo set di dati in qualsiasi momento. ⚙️
Questo modello utilizza attualmente le autorizzazioni dal file AndroidManifest.xml degli APK come insieme di caratteristiche. Funziona creando un dizionario di ogni autorizzazione Android standard e impostando la caratteristica a 1 se l'autorizzazione è presente nell'APK. Allo stesso modo, viene aggiunta una caratteristica per il numero di autorizzazioni in uso nel manifest e per il numero di autorizzazioni non identificate trovate nel manifest.
Il modello pre-addestrato è stato addestrato su circa 14 famiglie di malware (ciascuna con uno o più file APK), reperite dal repository di ashisdb, e su circa 100 applicazioni normali reperite dal Google Play Store.
Di seguito sono riportate le statistiche per questo modello di ML:
Accuracy: 0.9310344827586207
Recall: 0.9166666666666666
Precision: 0.9166666666666666
F-Measure: 0.9166666666666666
Le prime 10 caratteristiche con il peso maggiore (cioè autorizzazioni Android) utilizzate da questo modello per identificare il malware sono elencate di seguito:
"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