Simon Frenette Marc-Antoine Béland Jérémie Poisson Proposition de recherche TaintDroid Laboratory Présenté à M. François Bertrand Réalisé par l équipe Droid Dans le cadre du cours 420-620-SF Département d informatique Cégep Sainte-Foy 14 Janvier 2014
Sommaire QU EST-CE QUE TAINTDROID?... 3 1. LE SUJET... 3 IDENTIFICATION DU SUJET... 3 BUT DE LA RECHERCHE... 3 CONTEXTE ACTUEL... 3 DOMAINE D APPLICATION ACTUEL... 3 NOS CONNAISSANCES... 4 2. LES ENJEUX... 4 IDENTIFIER LES CONNAISSANCES À ACQUÉRIR... 4 IMPORTANCE DE LA RECHERCHE... 4 IMPACTS DE LA RECHERCHE... 4 DOMAINE D APPLICATIONS FUTURES... 5 MOTIVATION DE RECHERCHE... 5 3. LES OBJECTIFS... 5 4. L EXPÉRIMENTATION... 5 OUTILS À DÉVELOPPER... 5 PROGRAMME DE RECHERCHE... 6 5. LES LIMITES... 6 6. LES INCERTITUDES... 6 7. LES RESSOURCES... 7 MATÉRIELLES... 7 LOGICIELLES... 7 8. PLANIFICATION DE L EXPÉRIMENTATION... 7
QU EST-CE QUE TAINTDROID? Une équipe de chercheurs a mis au point un système d exploitation basé sous Android permettant facilement de savoir les informations sensibles quittant l appareil. Ce système, nommé «TaintDroid» a été testé avec un très petit bassin d applications venant de sources officielles. Ce groupe de chercheurs a découvert qu un bon pourcentage d applications dans les applications les plus populaires envoyait des informations sensibles à des compagnies de marketing sans le consentement de l usager. Il s agit d un problème de sécurité important qui se fait sous la barbe de Google. De plus, la confidentialité des informations envoyées n est probablement pas respectée et ces informations peuvent se retrouver dans les mains de personnes malveillantes. Le but de ces chercheurs était donc de fournir les outils nécessaires pour améliorer la sécurité sous un téléphone Android. 1. LE SUJET IDENTIFICATION DU SUJET Les fuites de données personnelles sous Android causé par une application malveillante à l insu de l usager. BUT DE LA RECHERCHE Dans le cadre de ce cours, nous visons l obtention de statistiques en lien avec les fuites de données selon un échantillon d applications Android provenant de différentes sources. Dans le cadre du projet, nous désirons obtenir les statistiques des fuites de données venant d'un plus grand nombre d'applications. CONTEXTE ACTUEL Actuellement, les sources qui fournissent la publication et le téléchargement des différentes applications Android effectuent peu ou pas de vérifications pour savoir si les applications soumises par les développeurs sont sécuritaires ou si celles-ci peuvent voler des données sensibles de l usager. Même les sources plus officielles telles que Google Play (bassin d application officiel de Google) sont tout de même susceptibles de contenir des applications malveillantes. DOMAINE D APPLICATION ACTUEL Les résultats de nos recherches permettraient de savoir à quel degré les applications sous Android peuvent représenter un certain danger pour les données de l utilisateur. Selon les résultats obtenus, la sensibilisation des individus et des différentes compagnies de développement d application reste le plus grand domaine d application actuel.
NOS CONNAISSANCES Puisque nous avons déjà commencé le développement du projet il y a quelques mois, nous partons donc avec une très bonne connaissance de l architecture logicielle du projet. Technologie TaintDroid; Techniques de programmation avancés en Java; Concept client/serveur distribué; Utilisation d un «fetcher», «lister», «parsers» et de «downloader» pour télécharger en masse les applications; 2. LES ENJEUX IDENTIFIER LES CONNAISSANCES À ACQUÉRIR Ce projet de recherche nécessite l acquisition de nouvelles connaissances concernant l utilisation de TaintDroid. Comment tester une application automatiquement avec TaintDroid; Comment gérer les différents états des clients connectés; Comment gérer les événements imprévus des clients par le serveur; Comment analyser et stocker automatiquement les résultats contenus dans les rapports produits par TaintDroid; Comment obtenir des statistiques quant aux résultats de l expérimentation; Comment assurer une bonne maintenance du projet pour les années futures. IMPORTANCE DE LA RECHERCHE Toujours selon l étendue de nos résultats, ce projet de recherche pourrait contribuer grandement à démontrer le manque de sécurité dans un système d exploitation mobile ouvert comme Android permettant l installation d application provenant de source inconnue, voire non fiable. Il est important de noter que cela pourrait contribuer indirectement à l augmentation d une politique de sécurité sous Android voire d'une plus grande utilisation de TaintDroid sur le marché, surtout chez les compagnies hébergeant plusieurs applications. IMPACTS DE LA RECHERCHE Nous nous attendons à obtenir des résultats variés principalement selon la source de l application testée. Il est certain que des sites web plus officiels tels que Google Play sont moins susceptibles de contenir des applications corrompues. Nous espérons tout de même démontrer grâce à cette expérimentation qu il pourrait y avoir un plus grand effort mis en place par ces compagnies pour assurer la sécurité des informations de leurs usagers. Nous souhaitons également encourager les gens à ne plus utiliser des sites non officiels qui devraient, selon nous, avoir un plus grand taux d applications malveillantes.
DOMAINE D APPLICATIONS FUTURES Notre projet n a pas vraiment d application à entrevoir dans le futur. Son but unique est de mettre en évidence le manque de contrôle par Android des informations qui quitte ses téléphones à l insu de l utilisateur. MOTIVATION DE RECHERCHE L équipe possède une grande motivation quant à participer dans un projet de recherche d envergure. Notre curiosité pour la sécurité informatique fait de ce projet une excellente occasion d explorer ce domaine plus en profondeur. 3. LES OBJECTIFS Voici une liste des objectifs que nous allons poursuivre lors de nos expérimentations : Avoir la possibilité d obtenir une grande quantité d applications provenant de différentes sources. Créer un serveur qui distribue les tâches aux clients connectés. Avoir un client qui exécute automatiquement les différents tests sur les applications envoyées par le serveur. Afficher sur un GUI les résultats obtenus par le client. 4. L EXPÉRIMENTATION Nous développons un laboratoire virtuel qui s occupe d assigner des expériences à faire aux clients qui y sont connectés. Un client ayant une tâche assignée exécute l expérience sous TaintDroid et produit divers «logs» contentant les informations quittant le téléphone. Ces résultats sont ensuite analysés (à l aide de «parser») dans le but de produire un rapport des résultats finaux. Suite à l'analyse d'une application de manière graphique, le rapport sera affiché à l'aide d'un GUI et indiquera les fuites de données découvertes. OUTILS À DÉVELOPPER Plusieurs outils sont toujours à développer, voir finaliser, pour nous permettre de mettre à terme ce projet de recherche : Finalisation du serveur; Finalisation du client; Finalisation du «parser» des résultats; GUI permettant l affichage des fuites de données pour une application (principalement pour la présentation des résultats);
PROGRAMME DE RECHERCHE Dans le cadre de l expérience, le serveur sera sur une machine principale ayant un disque partagé avec tous les clients connectés. Chaque client sera sur une machine individuelle et sera connecté au disque partagé surveillé par le serveur. Interrelations entre les différentes composantes (serveur et clients) Le serveur doit fournir les applications à tester aux clients. Il doit donc gérer l'état de tous les clients connectés en temps réel et fournir les applications au bon moment. Il doit aussi stocker les résultats ainsi que maintenir le bassin d application à jour. Le serveur doit lui-même gérer les événements imprévus des clients. Si un client est inactif depuis un certain temps, le serveur devra faire en sorte d ignorer tout résultat fourni par ce client et doit remettre l application dans le bassin d application à tester. Il doit aussi pouvoir gérer les événements de connexion et déconnexion des clients connectés. Les clients eux se doivent d exécuter une expérience à la fois sous TaintDroid. Lorsqu une application est déployée par le serveur, les clients exécutent l expérience sous TaintDroid et produisent un rapport contenant les diverses fuites de données. Ensuite, le serveur s occupe de la récupération des données et le client est prêt pour l exécution d une autre expérience. 5. LES LIMITES Puisque notre projet sera continué après les délais imposer par le cours, la plupart des limites indiquer cidessous ne seront que temporaires. Pour ce cours, notre laboratoire devra se limiter à un test simple. C'est-à-dire que chaque test ne prendra en compte qu une application et les résultats obtenus ne concerneront que cettedite application. Les résultats obtenus seront affichés dans un GUI et indiqueront les fuites de données découvertes lors de l expérimentation d une seule application à la fois. Le résultat final visé permettrait de tester un large bassin d application (plusieurs centaines d applications provenant de différentes sources) d un seul coup. Les résultats obtenus seraient en liens avec toutes les applications et peupleraient une basse de données. Cette base de données nous permettra d obtenir des statistiques en lien avec la sécurité sous Android. 6. LES INCERTITUDES À ce stade du projet, il y a toujours quelques points qui demeurent des incertitudes. Entre autres, ce qui a trait au fonctionnement de Taintdroid pour localiser la fuite de données sensibles à l insu d un utilisateur. L utilisation de machine virtuelle Android sous Windows avec ADT demeure un également point flou. Pour ce qui est du fonctionnement de Taintdroid, la lecture complète de l étude à la base de notre projet serait intéressante. http://appanalysis.org/tdroid10.pdf Pour une meilleure compréhension d ADT, le site web suivant sera notre référence. http://developer.android.com/tools/sdk/eclipse-adt.html
7. LES RESSOURCES MATÉRIELLES Un micro-ordinateur moderne. Il doit être assez puissant pour pouvoir rouler l expérimentation en même temps que des machines virtuelles Android. Une connexion internet rapide pour pouvoir télécharger les nombreuses applications. LOGICIELLES Windows XP ou supérieur. Android Development Tools (ADT). Un framework Android permettant de créer des applications mobiles et qui offre la possibilité de rouler des machines virtuelles Android sur notre ordinateur. Des machines virtuelles Android créées spécifiquement pour le projet. Java 7. Toute l application sera développée en Java, le serveur, le client, le «parser» et le GUI. Base de données pour stocker les résultats de l expérimentation. INFORMATIONNELLES Documentation internet sur TaintDroid et les applications Android en générale. Plusieurs projets open source sur le sujet. Professeur François Gagnon. 8. PLANIFICATION DE L EXPÉRIMENTATION Périodes Temps prévu Descriptions des tâches à réaliser Responsable 21 Janvier au 23 janvier 18h Recherche documentaire Toute l équipe 24 Janvier au 31 janvier 24h Construction des outils d expérimentation Simon et Jérémie 24 Janvier au 31 janvier 12h Mise au point des outils d expérimentation 4 Février au 7 février 18h Expérimentation avec les outils : faire rouler l expérimentation sur une machine et récupérer les résultats. Marc-Antoine Toute l équipe Mardi 11 février 3h Validation des résultats obtenus Jérémie Mardi 11 février 6h Préparation de la présentation Simon et Marc- Antoine 13 Février au 14 février 18h Publication des résultats Toute l équipe