NOTÍCIAS

[ANONYMOUS][grids]

DroidDetective: uma estrutura de análise de malware de aprendizado de máquina para aplicativos Android

 


DroidDetective é uma ferramenta Python para analisar aplicativos Android (APKs) para possíveis comportamentos e configurações 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. Os recursos e qualidades do Droid Detective incluem:

  • Analisando quais das ~330 permissões são especificadas no  AndroidManifest.xml arquivo do aplicativo. 
  • Analisar o número de permissões padrão e proprietárias em uso no  AndroidManifest.xml arquivo do aplicativo. 
  • Usando um classificador de aprendizado de máquina RandomForest, treinado com os dados acima, de ~14 famílias de malware e ~100 aplicativos da Google Play Store. 

Instalação

Todas as dependências do DroidDetective podem ser instaladas manualmente ou através do arquivo de requisitos, com

pip install -r REQUIREMENTS.txt

O DroidDetective foi testado no Windows 10 e no Ubuntu 18.0 LTS.

Uso

O DroidDetective pode ser executado fornecendo ao arquivo Python um APK como parâmetro de linha de comando, como:

python DroidDetective.py myAndroidApp.apk

Se um  apk_malware.model arquivo não estiver presente, o conjunto de ferramentas treinará primeiro o modelo e exigirá um conjunto de treinamento de APKs em uma pasta na raiz do projeto chamada  malware e em outra chamada  normalUma vez executado com sucesso, um resultado será impresso na CLI se o modelo tiver identificado o APK como malicioso ou benigno. Um exemplo desta saída pode ser visto abaixo:

Arquivo analisado 'com.android.camera2.apk', identificado como não malware.

Um parâmetro adicional pode ser fornecido  DroidDetective.py como um arquivo Json para salvar os resultados. Se este arquivo Json já existir, os resultados desta execução serão anexados ao arquivo Json.

python DroidDetective.py myAndroidApp.apk output.json

Ciência de Dados | O modelo de ML

DroidDetective é uma ferramenta Python para analisar aplicativos Android (APKs) para comportamento potencial relacionado a malware. Isso funciona treinando um classificador Random Forest em informações derivadas de APKs de malware conhecidos e APKs padrão disponíveis na loja de aplicativos Android. Esse conjunto de ferramentas vem pré-treinado, 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 com aproximadamente 14 famílias de malware (cada uma com um ou mais arquivos APK), localizadas no repositório do ashisdb, e aproximadamente 100 aplicativos normais localizados na Google Play Store.

O abaixo denota as estatísticas para este modelo de ML:

Precisão: 0,9310344827586207
Recall: 0,9166666666666666
Precisão: 0,9166666666666666
F-Measure: 0,9166666666666666

Os 10 recursos de maior peso (ou seja, permissões do Android) usados ​​por este modelo, para identificar malware, podem ser vistos 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