Application de l’analyse de la mémoire vive
Ce chapitre propose une technique d’analyse de la mémoire vive visant un équilibre entre une approche suffisamment spécifique pour capturer des comportements malicieux particuliers à la plateforme Android, mais assez générique pour demeurer valide à travers les versions du SE. La méthode proposée utilise les greffons de Volatility ciblant l’extraction de structures internes du noyau Linux depuis une capture de la mémoire vive et les applique dans un contexte d’analyse de maliciels sur Android. Il est également proposé d’utiliser une technique proposée dans ce mémoire, l’analyse différentielle de la mémoire vive (ADMV), afin de concentrer l’effort d’analyse sur les structures affectées par l’exécution de l’application. Ce chapitre présente en premier lieu le rationnel et le fonctionnement de l’ADMV. En second lieu, il présente une étude dans laquelle l’approche est appliquée afin de capturer et d’extraire des artefacts de l’exécution d’un maliciel expérimental conçu à cette fin et vise à démontrer la pertinence de l’ADMV sur une plateforme Android utilisant ART.
Analyse différentielle de la mémoire vive
L’analyse différentielle peut être définie comme l’utilisation de la différence entre les données recueillies à deux temps de mesure t espacés par Dt. La résultante permet d’isoler uniquement les éléments ayant été créés, supprimés ou modifiés entre ces temps de mesure. Ce substrat réduit la quantité de données à analyser et vise à réduire le temps et la complexité de d’analyse. Dans le cas de l’analyse de maliciels, il est possible d’obtenir un état initial qui se définit par l’état de la plateforme au moment qui précède le déploiement de l’échantillon à analyser. Pour l’ADMV, cela signifie qu’il est possible d’obtenir une acquisition à un temps toù l’application à analyser n’a pas encore été déployée et que le système fonctionne normalement. Après l’acquisition de cette capture initiale, l’application est déployée. Afin d’augmenter les chances qu’elle se révèle malicieuse si tel est le cas, elle peut être stimulée manuellement paroù les artefacts de l’exécution de l’application sont possiblement encore présents dans la mémoire vive.
Afin d’effectuer la comparaison entre les deux temps de mesure, il est proposé de comparer les informations extraites à l’aide des modules visant Linux de Volatility. Tel qu’il est décrit précédemment, Volatility permet d’extraire des informations sur les structures internes du SE à partir de la mémoire vive. La comparaison des résultats obtenus par l’outil permet d’établir clairement quelles composantes du SE sont d’intérêt pour l’analyse. Il est postulé que les nouvelles entrées sont des éléments ayant été créés pendant l’exécution de l’application. Les éléments présents avant et après le déploiement de cette dernière sont considérés pour l’analyse s’ils ont été modifiés dans l’intervalle d’acquisition. Finalement, les éléments présents au temps tL’ADMV a également été explorée par 504ensics Labs [2] en visant principalement les greffons Windows de Volatility. Leur approche est démontrée par l’outil Differential Analysis of Malware in Memory (DAMM) qui vise à automatiser la différenciation entre les captures de mémoire vive. Ce programme a été étudié dans les présents travaux et des efforts ont été menés afin de l’adapter aux greffons pour Linux de Volatility. Toutefois, le développement de l’outil a été abandonné par son créateur et les efforts pour le maintenir ont été interrompus. Conséquemment, DAMM n’a pas été retenu dans les présents travaux bien qu’il en démontre l’intérêt de l’approche.
Étude de cas
L’approche de l’ADMV a reçu peu d’attention dans la littérature. Sur Android, il n’a pas été possible d’identifier des travaux s’étant penchés sur sa pertinence et son utilisation en tant qu’outil d’analyse de maliciels. C’est pour cette raison que l’étude suivante s’est intéressée à démontrer l’applicabilité de l’ADMV dans l’identification de comportements malicieux de même que sa résilience aux tactiques d’évasion de la détection comme l’obfuscation, lePlus spécifiquement, l’expérimentation décrite vise à répondre aux questions suivantes : est-ce possible d’utiliser l’ADMV pour identifier, récupérer et analyser le contenu d’un fichier de code malicieux déchiffré, chargé dynamiquement et supprimé dès la fin de son chargement afin d’empêcher sa récupération sur le stockage physique de l’appareil ? Également, est-il possible par cette même technique d’identifier une élévation de privilèges et un cheval de Troie (ou porte dérobée) ?
L’appareil utilisé pour le déploiement de l’application est un téléphone Nexus 4 de LG avec la version 5.1 du système d’exploitation. Ce dernier a été recompilé pour supporter le chargement du module LiME selon la méthode présentée à la section 3.1.1. Le module est préchargé sur l’appareil avant le scénario. Également, pour le bien de la démonstration, le noyau a été modifié afin d’être vulnérable à l’élévation de privilèges utiliser dans l’exploit towelroot introduit par Hotz [63]. La révision du noyau utilisée correspond à une variante du noyau Linux, appelée Mako, et adaptée au Nexus 4. La version du code utilisée se situe sur la branche Git appelée origin/android-msm-mako-3.4-lollipop-mr1. La seule exception est le fichier kernel/futex.c qui est à une version antérieure, soit à la révision identifiée par l’identifiant unique Git 7e9543a0ebde3c1df0108523a3e9e152e254f962. Cette dernière précède le correctif appliqué pourprotéger des exploits utilisant la même technique que towelroot. Cette modification a pour effet de retourner le noyau Linux à une version vulnérable tout en restant compatible avec la version 5.1 d’Android. Le fonctionnement de cet exploit est détaillé par Zatuchna sur Nativeflow [134–136]. La version utilisée dans le cadre de cette étude est celle de Timwr [120]. Finalement, l’utilisateur root est activé à l’aide du correctif SuperSU conçu par Chainfire [22] afin de permettre l’acquisition par LiME. Toutefois, l’utilisation de ces privilèges n’est limitée qu’à l’invite de commande accessible par l’interface de déverminage ADB et utilisée pour lancer l’acquisition.