
Um framework de análise de malware baseado em aprendizado de máquina para aplicativos Android.
🕵️ Um framework de análise de malware com aprendizado de máquina para aplicativos Android. ☢️
DroidDetective é uma ferramenta Python para analisar aplicativos Android (APKs) em busca de comportamentos e configurações potencialmente relacionados a malware. Quando fornecido com um caminho para um aplicativo (arquivo APK), o Droid Detective fará uma previsão (usando seu modelo de ML) se o aplicativo é malicioso. Recursos e qualidades do Droid Detective incluem:
AndroidManifest.xml do aplicativo. 🙅AndroidManifest.xml do aplicativo. 🧮Todas as dependências do DroidDetective podem ser instaladas manualmente ou através do arquivo de requisitos, com
pip install -r REQUIREMENTS.txt
DroidDetective foi testado tanto no Windows 10 quanto no Ubuntu 18.0 LTS.
DroidDetective pode ser executado fornecendo o arquivo Python com um APK como parâmetro de linha de comando, por exemplo:
python DroidDetective.py myAndroidApp.apk
Se um arquivo apk_malware.model não estiver presente, a ferramenta primeiro treinará o modelo e exigirá um conjunto de treinamento de APKs em uma pasta na raiz do projeto chamada malware e outra chamada normal. Após a execução bem-sucedida, um resultado será impresso no CLI indicando se o modelo identificou o APK como malicioso ou benigno. Um exemplo dessa saída pode ser visto abaixo:
>> Analysed file 'com.android.camera2.apk', identified as not malware.
Um parâmetro adicional pode ser fornecido ao DroidDetective.py como um arquivo Json para salvar os resultados. Se esse arquivo Json já existir, os resultados desta execução serão anexados ao arquivo Json.
python DroidDetective.py myAndroidApp.apk output.json
Um exemplo desse Json de saída é o seguinte:
{
"com.android.camera2": false,
}
DroidDetective é uma ferramenta Python para analisar aplicativos Android (APKs) em busca de comportamentos potencialmente relacionados a malware. Isso funciona treinando um classificador Random Forest em informações derivadas tanto de APKs de malware conhecidos quanto de APKs padrão disponíveis na loja de aplicativos Android. Esta ferramenta vem pré-treinada, no entanto, o modelo pode ser retreinado com um novo conjunto de dados a qualquer momento. ⚙️
Este modelo atualmente usa permissões do arquivo AndroidManifest.xml dos APKs como um conjunto de recursos. Isso funciona criando um dicionário de cada permissão padrão do Android e definindo o recurso como 1 se a permissão estiver presente no APK. Da mesma forma, um recurso é adicionado para a quantidade de permissões em uso no manifesto e para a quantidade de permissões não identificadas encontradas no manifesto.
O modelo pré-treinado foi treinado com aproximadamente 14 famílias de malware (cada uma com um ou mais arquivos APK), localizadas no repositório de ashisdb, e aproximadamente 100 aplicativos normais localizados na Google Play Store.
Abaixo estão as estatísticas deste modelo de ML:
Accuracy: 0.9310344827586207
Recall: 0.9166666666666666
Precision: 0.9166666666666666
F-Measure: 0.9166666666666666
As 10 principais características com maior peso (ou seja, permissões do Android) usadas por este modelo para identificar malware podem ser vistas abaixo:
"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