# Détection de logiciels malveillants sur Android

Comme tout système informatique, de nombreux logiciels malveillants existent sur le système d'exploitation Android. Ce dernier étant particulièrement répandu, le nombre de ces logiciels malveillants ne cesse de se multiplier. Cette expansion rend difficiles la détection et la mise à jour des solutions anti-logiciels malveillants usuels. Cependant, de nouvelles solutions sont recherchées et testées afin de rendre plus efficace et plus rapide la détection de nouveaux logiciels malveillants.
Plusieurs méthodes de détection de logiciels malveillants adaptés pour Android sont actuellement en développement. Afin d'aider ces logiciels pour la détection de comportements inattendus, plusieurs types d'analyses de comportements ont été mis en place.

## Analyses statiques

Les analyses statiques se basent sur une extraction de diverses données sans exécution de code. L'analyse statique est l'une des analyses les plus répandues et les plus efficaces, plus particulièrement en cas de code impénétrable.

### Incohérence entre interface et comportement

Certains systèmes basent leurs analyses sur les différences entre le comportement attendu d'une application et son interface d'utilisation. Lorsqu'il y a une contradiction entre les deux parties, l'application est déclarée comme suspecte. Par exemple, AsDroid est un système de recherche qui implémente cette analyse. Sur 182 applications testées en 2014, 113 sont déclarées comme réalisant des tâches furtives inconnues de l'utilisateur, avec 28 faux positifs et 11 faux négatifs.

### Détection de fuite de données personnelles

Une autre approche détecte toutes applications qui ont la capacité d'enregistrer des données utilisateur (microphone, accès à la mémoire utilisateur...) et de les envoyer (accès internet, connexion Bluetooth...) comme suspectes. IccTA est un exemple de système qui utilise une approche similaire. En 2015 IccTA détecte 534 fuites réunies sur 108 applications provenant de MalGenome ainsi que 2395 fuites réunies sur 337 applications sur un jeu de 15000 applications provenant de Google Play.ou App store

### Différenciation des contextes d'appels de comportements sensibles

La différenciation de contextes d'appels se base sur une analyse du contexte dans lequel un comportement potentiellement dangereux et sensible s'exécute.
Il existe par exemple des logiciels tels que AppContext qui se basent sur cette approche. AppContext permet d'identifier les appels de fonctions ou d'API sensibles, et d'identifier si le contexte dans lequel ceux-ci sont exécutés correspond à un contexte connu de l'utilisateur et en adéquation avec l'utilisation de l'application, ou si le contexte est plutôt identifié comme potentiellement malicieux.

### Comparaison de description et de comportement

Une approche moins conventionnelle est explorée pour la première fois par CHABADA. Celle-ci consiste en l'analyse de la description en langage naturel de l'application sur le Google Play et de sa comparaison avec le comportement réel de l'application. On obtient donc la fonction d'une application uniquement grâce à sa description sur le Google Play.
Par exemple, une application météorologique qui envoie des messages devient donc une anomalie. De la même façon, il n'est pas attendu d'une application de messagerie d'avoir accès à la localisation de l'utilisateur.
CHABADA a été utilisé sur plus de 22 500 applications pour constituer sa base de données et 56 % de nouveaux logiciels malveillants ont été détectés en tant que tel sans avoir d'informations préalables sur les logiciels malveillants connus.

## Analyses dynamiques

Contrairement aux analyses statiques, les analyses dynamiques peuvent exploiter de réels appels de code et système pour récolter des informations lorsque l'application est en fonctionnement. Celle-ci est possible en analysant l’exécution du code de l'application ou via émulation.

### Analyse de souillure

L'analyse de souillure (en anglais : taint analysis) est une technique basée sur la propagation de variables, généralement celles créées ou modifiées par l'utilisateur. On les dit "souillées". Par défaut, ces variables sont considérées comme suspectes. Si une ou plusieurs variables sont créées à partir d'une variable souillée, elle sera souillée à son tour. Si une variable souillée est utilisée pour effectuer une tâche risquée (une requête sur base de données par exemple), alors l'analyseur indique un comportement suspect. TaintDroid est un exemple notable d'utilisation d'analyse de souillure sur Android.

### Analyse d'utilisations de permissions

Une analyse dynamique initiée par VetDroid consiste en l'analyse des utilisations explicites et implicites des permissions d'une application Android.
Par exemple, lorsqu'une application demande de récupérer la localisation de l'appareil, cela constitue une utilisation explicite des permissions. De plus si cette application est capable d'envoyer des SMS, une autre utilisation explicite des permissions, alors elle peut également être capable d'envoyer par SMS la localisation récupérée auparavant, cela devient donc une utilisation implicite et inattendue des permissions de localisation, ce qui est habituellement difficile à détecter.