Nous ne présentons plus l'intérêt de veiller à la protection des terminaux informatiques quelle que soit leur nature. Les smartphones ne font bien sûr pas exception. Ce type de périphérique possède en plus la particularité d'être nomade et de pouvoir se connecter à des réseaux publics (urbains ou dédiés à des organisations). Cela favorise d'autant plus l'exploitation de ce type de terminal dans des cas variés. 

Une voie d'entrée pour les attaquants sur ce type de terminal reste la corruption de paquets applicatifs (apk) légitimes ou dédiés à un but précis. Les activités malveillantes sont réalisées grâce à une couverture offerte par des actions légitimes et des techniques d'opacification (obfuscation). 

La place de l'analyse statique 

Le sujet n'est pas récent et de nombreux chercheurs et analystes ont mis au point des modèles permettant d'analyser les paquets applicatifs. Le problème reste que bien souvent les créateurs de solutions malveillantes intègrent des techniques qui permettent de rendre certaines zones de l'application inaccessibles.  

Nous pouvons dans ce cas précis, retrouver une liste non-exhaustive des zones pouvant être opacifiées ou bloquées en lecture : 

- Les fichiers de classes (dex files) ; 
- Les descripteurs et les flux d’arguments ; 
- Les déclarations de classes… 

Les contre-mesures possibles 

Des solutions émergent peu à peu pour contourner le problème. Une première solution consiste à combiner l'analyse statique avec l'analyse dynamique. Toutefois, il existe d'autres manœuvres possibles pour contourner cette situation en se reposant sur l'analyse statique. Premièrement, nous pouvons confronter les résultats provenant de l'analyse statique avec les techniques d'opacification exploitées dans le paquet. De nos jours, nous en retrouvons un certain nombre mais les principales sont les suivantes : 

- Le renommage des éléments (renaming) ; 
- Le réordonnancement (rebuilding) ; 
- Le cryptage (encrypting).

Cette confrontation consiste à faire un état des lieux des méthodes présentes afin d'identifier les éléments exploitables dans le cadre de l'analyse statique. Une autre optique consiste à s'appuyer sur l'analyse de données qui sont toujours exploitables malgré les opacifications présentes. C'est notamment le cas des graphes. Dans cet esprit, nous retrouvons deux grandes familles de graphes : les graphes d'appels (CG) et les graphes de contrôle de flux (CFG). Ces données permettent de représenter l’enchainement des appels mené par le programme dans le cadre de son fonctionnement. Il permet de voir le lien entre les différentes classes et méthodes d'une application mobile. 

Le défaut de cette approche réside dans le fait que ces types de données sont longues à extraire et ont une taille considérable à l'échelle d'une application. Il faut donc souvent travailler sur des extraits de ces données, ce qui soulève une autre question : la représentativité des résultats obtenus. 

Dans cet esprit, l'analyste doit faire un choix :  travailler à l'échelle d'une méthode, d'une classe ou de l'application entière.  Pour lever ces biais, il existe des solutions que nous aborderons dans un autre article et qui se basent sur l'utilisation de l'apprentissage automatique.

Nous remarquons que l'analyse statique n'est pas totalement démunie face à la présence d'opacifications dans les applications mobiles. Celle-ci peut toujours fournir des résultats précieux, bien qu'il faille intégrer de nouvelles approches et méthodes de calcul.