Dans cette chronique nous allons voir que l'analyse hybride permet avec différentes approches de consolider ou d'affiner les analyses effectuées sur des applications mobiles. Les analystes sont ainsi en mesure de mieux comprendre le fonctionnement de celles-ci. Enfin, nous verrons aussi que ce type d'analyse permet l'automatisation totale d'un processus d'analyse permettant ainsi de produire cette démarche sur de très grands jeux de données. Cet aspect possède d'ailleurs un impact considérable sur l'avenir des modèles de détection.

La composition de l’analyse hybride

Ce type d’analyse repose sur l’utilisation des deux précédentes méthodes que nous avons préalablement abordées, à savoir l’analyse statique et dynamique. Les deux méthodes peuvent être utilisées avec deux approches possibles : soit par complémentarité soit par exploration.

L’approche par complémentarité traite les deux modes d’analyses de façon indépendante et agrège les résultats sous la forme d’une base de données. Les résultats peuvent être traités à part égale ou par comparaison afin d’apporter la validation du premier résultat suivant l’ordre d’application des modes d’analyses. Prenons un cas concret : une application M est supposée détenir un type de comportement C au sein de son fonctionnement. Bien sûr, celui-ci se retrouvera attaché à une classe C* non déterminée en début d’analyse.

Dans le cadre d’une approche de complémentarité, le système réalisera une passe statique puis une passe dynamique sur l’application pour détecter le comportement M présent en son sein. Le résultat pourra bien sûr être exprimé de diverses manières (état booléen, probabilité, indice de correspondance...). Le résultat global sera bien souvent une agrégation des résultats fournis par les deux analyses.

L’approche par exploration traite les deux modes d'analyse en chaîne. Le premier fournit des résultats qui seront ensuite utiles pour orienter l’analyse suivante. Ces résultats serviront aussi la plupart du temps à émettre un résultat sur la détection ou non d’un type de comportement. Reprenons notre exemple précédent afin d’illustrer cette approche.

Dans le cadre de l’approche par exploration, le modèle réalisera une première passe pour délimiter les zones où ledit comportement a le plus de chance de se trouver. Pour cela, il en identifiera les premières traces. Ensuite, une analyse approfondie de ces zones sera effectuée en deuxième étape afin d’en vérifier la teneur et/ou d’en comprendre finement le fonctionnement. Là encore, les résultats pourront être exprimés de diverses manières.

Il est important de comprendre que la différence majeure entre les deux approches consiste à orienter l’étape n°2 à partir des résultats de l’étape n°1 du processus. En comprenant cette spécificité, nous devinons facilement que l’analyse statique constituera l’étape n°1 qui permettra de produire une analyse dynamique localisée en étape n°2.

Les limites possibles

Ce type d’analyse repose sur des mécanismes complexes et requiert une bonne connaissance des comportements à identifier dans les applications. Il nécessite aussi les mêmes connaissances exigées par la mise en œuvre d’une analyse dynamique. De plus, le recours à l’apprentissage automatique est incontournable pour réaliser cette étape afin de rendre le modèle opérationnel sur de grandes échelles. Le praticien souhaitant utiliser ce type de méthode devra donc avoir des notions solides dans ce domaine. 

Une autre difficulté, particulièrement présente pour l’approche par exploration, réside dans la structure du jeu d’analyse. De fait, nous devons pouvoir comparer et emboîter les résultats fournis par les deux types d’analyses puisque nous avons une logique de filtrage. Il faut définir une structure réutilisable pour les phases de l’analyse. Plusieurs solutions sont possibles mais les deux principalement utilisées de nos jours restent les graphes et les classes de données.

Un futur prometteur

Malgré les biais préalablement identifiés, ce type d’analyse permet de fournir des études approfondies pour des comportements donnés automatisables et donc applicables à grande échelle. Des modèles ont vu le jour avec cette approche dernièrement et d’autres sont à venir.

Ils permettent non seulement de procéder à une détection d’un comportement mais aussi à une étude de celui-ci. Les analystes sont ainsi en mesure de vérifier des tendances comportementales sur un large échantillon. De cette manière, ils peuvent aisément voir quel mécanisme, pour un type de programme malveillant donné, est utilisé pour assurer le cryptage des données (la nature de l’algorithme par exemple). Ils peuvent aussi, en cas d’échantillon très vaste, voir les changements de celui-ci au fil des évolutions de ce type de programme.

Nous comprenons alors que ce type d’analyse représente l’évolution majeure des systèmes de détection et d’étude de programmes de nos jours. Toutefois, ce type de travail est récent et à besoin d’être amélioré afin de pouvoir faire face à la complexification perpétuelle des applications malveillantes et opacifiées.