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

modifier

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[1], plus particulièrement en cas de code impénétrable.

Incohérence entre interface et comportement

modifier

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[2] 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

modifier

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[3] 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

modifier

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[4] 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

modifier

Une approche moins conventionnelle est explorée pour la première fois par CHABADA[5]. 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

modifier

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[1]. Celle-ci est possible en analysant l’exécution du code de l'application ou via émulation.

Analyse de souillure

modifier

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

modifier

Une analyse dynamique initiée par VetDroid[6] 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.

Notes et références

modifier
  1. a et b (en) Ankita Kapratwar, « Static and Dynamic Analysis for Android Malware Detection », SJSU ScholarWorks,‎ (lire en ligne)
  2. (en) Jianjun Huang, Xiangyu Zhang, Lin Tan, Peng Wang et Bin Liang, « AsDroid: detecting stealthy behaviors in Android applications by user interface and program behavior contradiction », The ACM Digital Library,‎ (lire en ligne)
  3. (en) Li Li, Alexandre Bartel, Tegawendé F. Bissyandé, Jacques Klein, Yves Le Traon, Steven Artz, Siegfried Rasthofer, Eric Bodden, Damien Octeau et Patrick MacDaniel, « IccTA: Detecting Inter-Component Privacy Leaks in Android Apps », IEEE Xplore,‎ (lire en ligne)
  4. (en) Wei Yang, Xusheng Xiao, Benjamin Andow, Sihan Li, Tao Xie et William Enck, « AppContext: Differentiating Malicious and Benign Mobile App Behaviors Using Context », IEEE Xplore,‎ (lire en ligne)
  5. (en) Alessandra Gorla, Ilaria Tavecchia, Florian Gross et Andreas Zeller, « Checking app behavior against app descriptions », ACM Digital Library,‎ (lire en ligne)
  6. (en) Yuan Zhang, Min Yang, Zheming Yang, Guofei Gu, Peng Ning et Binyu Zang, « Permission Use Analysis for Vetting Undesirable Behaviors in Android Apps », IEEE Explore,‎ , p. 1828 - 1842 (ISSN 1556-6021, lire en ligne)