
Uma estrutura de análise de malware de aprendizado de máquina para aplicativos Android. ☢️
O DroidDetivective é uma ferramenta Python para analisar aplicativos Android (APKs) para potenciais comportamentos e configurações relacionados a malware. Quando fornecido com um caminho para um aplicativo (arquivo APK) O detetive Droid fará uma previsão (usando seu modelo ML) se o aplicativo for malicioso. Os recursos e as qualidades do detetive Droid incluem:
AndroidManifest.xml do aplicativo. ?AndroidManifest.xml do aplicativo. ?Todas
pip install -r REQUIREMENTS.txtO DroidDetective foi testado no Windows 10 e no Ubuntu 18.0 LTS.
O DroidDeTective pode ser executado fornecendo ao arquivo python um APK como um parâmetro da linha de comando, como:
python DroidDetective.py myAndroidApp.apk
Se um arquivo apk_malware.model não estiver presente, as ferramentas primeiro treinarão o modelo e exigirão um conjunto de treinamento de APKs em uma pasta na raiz do projeto chamado malware e outro chamado normal . Uma vez executado, um resultado com sucesso será impresso na CLI, se o modelo tiver identificado 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 desta saída JSON é o seguinte:
{
"com.android.camera2" : false ,
}O DroidDetective é uma ferramenta Python para analisar aplicativos Android (APKs) para potencial comportamento relacionado a malware. Isso funciona treinando um classificador florestal aleatório em informações derivadas de APKs conhecidos de malware e APKs padrão disponíveis na Android App Store. Essa ferramenta é pré-treinada, no entanto, o modelo pode ser treinado novamente em um novo conjunto de dados a qualquer momento.
Atualmente, este modelo usa permissões de um arquivo APKS AndroidManifest.xml 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 em aproximadamente 14 famílias de malware (cada uma com um ou mais arquivos APK), localizados no repositório do Ashisdb e aproximadamente 100 aplicativos normais localizados na Google Play Store.
O abaixo indica as estatísticas para este modelo ML:
Accuracy: 0.9310344827586207
Recall: 0.9166666666666666
Precision: 0.9166666666666666
F-Measure: 0.9166666666666666
As 10 principais características mais altas (por exemplo, permissões 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
GNU Licença pública em geral v3.0