Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Présentation du PFE

Avatar for DARDAR SAAD DARDAR SAAD
December 16, 2012
1.6k

Présentation du PFE

Avatar for DARDAR SAAD

DARDAR SAAD

December 16, 2012
Tweet

Transcript

  1. PROJET FIN DE FORMATION Etude des aspects de sécurité Audit

    d'une application Android Réalisé Réalisé par: par: Réalisé Réalisé par: par: Mr. Saad DARDAR Encadré Encadré par: par: Encadré Encadré par: par: Pr. Ghizlane Orhanou Pr. Said EL HAJJI UNIVERSITE MOHAMMED V AGDAL FACULTE DES SCIENCES
  2. Le jury: Le jury: Pr. Said El Hajji : Professeur

    à la Faculté des sciences de Rabat Dr. Ghizlane Orhanou : Docteur Ingénieur, Chef de service à la Cour des comptes M. Abdelmajid Lakbabi : Expert en Sécurité, MTDS Maroc Pr. Abdellatif EL GHAZI : Professeur à l’université internationale de Rabat M. Mohamed Ennahbaoui : Doctorant à la Faculté des Sciences Rabat PROJET FIN DE FORMATION Etude des aspects de sécurité Audit d'une application Android
  3. Introduction Introduction Introduction Introduction I. Etude I. Etude des aspects

    de sécurité du système des aspects de sécurité du système I. Etude I. Etude des aspects de sécurité du système des aspects de sécurité du système d’exploitation Android : d’exploitation Android : II. Principes II. Principes de développement sécurisé des de développement sécurisé des II. Principes II. Principes de développement sécurisé des de développement sécurisé des applications Android applications Android III. III. Audit d’une application Android Audit d’une application Android : : III. III. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2 2) ) : : Conclusion Conclusion Conclusion Conclusion Plan Plan de la de la présentation : présentation : Plan Plan de la de la présentation : présentation :
  4. I. Etude des aspects de sécurité du système d’exploitation Android

    : I. Etude des aspects de sécurité du système d’exploitation Android : 1. 1.Architecture d’Android Architecture d’Android 2. 2.ROM et accès root ROM et accès root 3. 3.Modèle de sécurité Modèle de sécurité 4. 4.Protection des données Protection des données 5. 5.Android, IOS, Windows phone Android, IOS, Windows phone 7 7. .
  5. Architecture du système d’exploitation Android Architecture du système d’exploitation Android

    - - Le noyau Linux Le noyau Linux : :   Le cœur du système Android, c’est la base de ce dernier. Le cœur du système Android, c’est la base de ce dernier.   Il permet de faire le pont entre le matériel et la pile Il permet de faire le pont entre le matériel et la pile logicielle. logicielle.   Gère les services du système. Gère les services du système.   Linux est le cœur du système Android mais il n’est pas une Linux est le cœur du système Android mais il n’est pas une distribution linux. distribution linux.
  6. Architecture du système d’exploitation Android Architecture du système d’exploitation Android

    - - Les Les bibliothèques (librairies) bibliothèques (librairies) : : • •Bibliothèque système C. Implémentation de la bibliothèque standard C (libc), Bibliothèque système C. Implémentation de la bibliothèque standard C (libc), optimisée pour les systèmes Linux embarqués et dérivée de BSD. optimisée pour les systèmes Linux embarqués et dérivée de BSD. • •SQLite. L’un des meilleures Bases de données (rapide, légère et puissante). SQLite. L’un des meilleures Bases de données (rapide, légère et puissante). • •FreeType FreeType : gérant les bitmap et le rendu des polices : gérant les bitmap et le rendu des polices • •SurfaceFlinger. Pour l’accès au sous SurfaceFlinger. Pour l’accès au sous- -système d'affichage. système d'affichage. • •LibWebCore. un moteur de navigateur web (tourne, à la fois le navigateur LibWebCore. un moteur de navigateur web (tourne, à la fois le navigateur Android et une vue web intégrable). Android et une vue web intégrable). • •Skia. Moteur graphique Skia. Moteur graphique 2 2D D • •Bibliothèques multimédias (MPEG Bibliothèques multimédias (MPEG4 4, MP , MP3 3, JPG …etc.) , JPG …etc.) • •OpenGL ES ( OpenGL ES (3 3D) D)
  7. Architecture du système d’exploitation Android Architecture du système d’exploitation Android

    - - Le moteur Le moteur d’exécution Android (Android Runtime) d’exécution Android (Android Runtime)   Un Un moteur d'exécution, moteur d'exécution, bibliothèque d'exécution bibliothèque d'exécution ou ou runtime runtime est un est un système logiciel système logiciel qui permet l'exécution qui permet l'exécution de de programmes programmes dans un dans un langage de programmation langage de programmation donné, dans donné, dans le cas du système Android on parle de Java. le cas du système Android on parle de Java.
  8. Schéma qui indique les étapes nécessaries à la compilation et

    à Schéma qui indique les étapes nécessaries à la compilation et à l’exécution d'un programme Android standard l’exécution d'un programme Android standard. . Architecture du système d’exploitation Android Architecture du système d’exploitation Android - - Le moteur Le moteur d’exécution Android (Android Runtime) d’exécution Android (Android Runtime)
  9. Architecture du système d’exploitation Android Architecture du système d’exploitation Android

    - - Application Application et Framework pour les applications et Framework pour les applications
  10.   La seule couche visible et accessible par l’utilisateur

    La seule couche visible et accessible par l’utilisateur final. final.   Un ensemble de programmes de base que l’on peut Un ensemble de programmes de base que l’on peut trouver sur Android (SMS, calendrier, photos, web et trouver sur Android (SMS, calendrier, photos, web et autres). autres).   Toutes ces applications sont développées à l’aide du Toutes ces applications sont développées à l’aide du langage de programmation Java. langage de programmation Java.   le Framework du système Android permet aux le Framework du système Android permet aux développeurs, en leurs fournissant divers API, de créer développeurs, en leurs fournissant divers API, de créer des applications riches et innovantes. des applications riches et innovantes. Architecture du système d’exploitation Android Architecture du système d’exploitation Android - - Application Application et Framework pour les applications et Framework pour les applications
  11. ROM et accès root ROM et accès root : :

      STOCK ROM STOCK ROM : c’est la ROM standard (officielle), le : c’est la ROM standard (officielle), le matériel vient avec cette version pré matériel vient avec cette version pré- -installé. installé.   CUSTOM ROM CUSTOM ROM : c’est la ROM non officielle personnalisée : c’est la ROM non officielle personnalisée qu’on peut installer sur notre matériel, il existe trois sortes qu’on peut installer sur notre matériel, il existe trois sortes de cette ROM : de cette ROM : • • Celles qui permettent de booster la vitesse et la stabilité Celles qui permettent de booster la vitesse et la stabilité du matériel (Smartphone, Tablette,…) du matériel (Smartphone, Tablette,…) • • Celles qui permettent d'installer une version Android Celles qui permettent d'installer une version Android normalement non compatible avec un matériel normalement non compatible avec un matériel • • Celles Celles qui permettent de rajouter de nombreuses qui permettent de rajouter de nombreuses fonctionnalités. fonctionnalités.
  12. ROM et accès root ROM et accès root : :

    Rooting tout simplement c’est avoir les droits Rooting tout simplement c’est avoir les droits d’administrateur et c’est à l’aide d’un petit logiciel nommé d’administrateur et c’est à l’aide d’un petit logiciel nommé « SU » qui nous rend super « SU » qui nous rend super- -utilisateur (Super utilisateur (Super- -user). user).   Elargi les capacités du matériel Android. Elargi les capacités du matériel Android.   Permet d'installer n'importe quelle application. Permet d'installer n'importe quelle application.   Exécuter toutes sortes de commandes normalement Exécuter toutes sortes de commandes normalement inaccessible aux utilisateurs inaccessible aux utilisateurs. .
  13. ROM et accès root ROM et accès root : :

    Le root est une manipulation assez dangereuse qui comporte Le root est une manipulation assez dangereuse qui comporte des risques. Presque dans tout les cas car lorsqu’on root des risques. Presque dans tout les cas car lorsqu’on root notre Smartphone par exemple on perd notre garantie chez notre Smartphone par exemple on perd notre garantie chez le fournisseur ou lorsqu’on installe une application il peut le fournisseur ou lorsqu’on installe une application il peut avoir le privilège de ce mode (root) et ainsi avoir la main sur avoir le privilège de ce mode (root) et ainsi avoir la main sur des données personnelles ou fichiers du des données personnelles ou fichiers du système. système.
  14. Modèle Modèle de sécurité de sécurité - - Définition d’un

    modèle de sécurité Définition d’un modèle de sécurité   Un modèle de sécurité peut être défini comme un Un modèle de sécurité peut être défini comme un formalisme permettant de représenter, de façon claire formalisme permettant de représenter, de façon claire et non et non- -ambiguë, la politique de sécurité. ambiguë, la politique de sécurité.   On modélise On modélise : : • • Pour mieux comprendre le système qu’on développe. Pour mieux comprendre le système qu’on développe. • • Pour visualiser ses propriétés. Pour visualiser ses propriétés. • • Pour spécifier sa structure ou son comportement. Pour spécifier sa structure ou son comportement. • • Pour documenter et guider sa construction, etc Pour documenter et guider sa construction, etc. .
  15. Les modèles de sécurité peuvent être classés en deux Les

    modèles de sécurité peuvent être classés en deux grandes familles : grandes familles : • • Des modèles généraux, qui sont plutôt des méthodes de Des modèles généraux, qui sont plutôt des méthodes de description formelle, pouvant s’appliquer à toute sorte description formelle, pouvant s’appliquer à toute sorte de politiques. de politiques. • • Des modèles spécifiques, développés pour représenter Des modèles spécifiques, développés pour représenter une politique d’autorisation particulière. une politique d’autorisation particulière. Modèle Modèle de sécurité de sécurité - - Définition d’un modèle de sécurité Définition d’un modèle de sécurité
  16. Modèle Modèle de sécurité de sécurité - - Signature numérique

    Signature numérique   Quand le développeur veut publier une Quand le développeur veut publier une application sur Google Play, il doit payer pour application sur Google Play, il doit payer pour acquérir un certificat et signé ainsi l’application acquérir un certificat et signé ainsi l’application pour qu’elle soit reconnue par Google. Cette pour qu’elle soit reconnue par Google. Cette pratique existe sur la plupart des systèmes pratique existe sur la plupart des systèmes (Symbian Signed, IOS de Apple,…). (Symbian Signed, IOS de Apple,…).   Les applications modifiées par un virus ou par un Les applications modifiées par un virus ou par un pirate invalide automatiquement la signature pirate invalide automatiquement la signature numérique, cependant il existe des options sur le numérique, cependant il existe des options sur le système Android qui permet d’installer ces système Android qui permet d’installer ces applications non signées. applications non signées.
  17. Modèle Modèle de sécurité de sécurité - - Isolation Isolation

      Ce modèle de sécurité (Android) est basé sur le modèle de Ce modèle de sécurité (Android) est basé sur le modèle de sécurité du système Linux, mais avec des modifications, qui sécurité du système Linux, mais avec des modifications, qui consistent à l'isolation des applications. consistent à l'isolation des applications.   A l'installation d'une application on lui attribut un compte A l'installation d'une application on lui attribut un compte Unix (uid). Unix (uid).   Si des applications sont signées par le même certificat, elles Si des applications sont signées par le même certificat, elles peuvent alors partager le même utilisateur. peuvent alors partager le même utilisateur.   Lors de l'installation de l'application on lui attribut un Lors de l'installation de l'application on lui attribut un répertoire privé, chemin par défaut : répertoire privé, chemin par défaut : /data/data/app_package_name /data/data/app_package_name, ce répertoire ou seulement les , ce répertoire ou seulement les fichiers de ce dernier, peuvent être partagés entre des fichiers de ce dernier, peuvent être partagés entre des applications différentes en modifiant les droits d'accès du applications différentes en modifiant les droits d'accès du système. système.
  18. Les applications Android n'utilise pas directement Les applications Android n'utilise

    pas directement le matériel (hardware) car elles n'ont pas l'accès le matériel (hardware) car elles n'ont pas l'accès aux périphériques ( aux périphériques (/dev/* /dev/*) ce n'est pas le même ) ce n'est pas le même cas du système Linux, c’est pourquoi elles utilisent cas du système Linux, c’est pourquoi elles utilisent un processus le ' un processus le 'system_app system_app' qui permet de ' qui permet de contrôler les privilèges avant de passer à contrôler les privilèges avant de passer à l'exécution l'exécution Modèle Modèle de sécurité de sécurité - - Isolation Isolation
  19. La cryptographie ou chiffrement des données c’est un ensemble La

    cryptographie ou chiffrement des données c’est un ensemble de techniques permettant de chiffrer des données, c'est de techniques permettant de chiffrer des données, c'est- -à à- -dire dire permettant de les rendre inintelligibles sans une action permettant de les rendre inintelligibles sans une action spécifique. spécifique. Le système Android comme tous les systèmes propose des API Le système Android comme tous les systèmes propose des API pour cela comme « pour cela comme « javax.crypto javax.crypto », mais ils doivent être bien », mais ils doivent être bien utilisées si non l’utilisation de ces derniers n’aura pas d’effet utilisées si non l’utilisation de ces derniers n’aura pas d’effet. . Protection des données Protection des données - - Cryptage (chiffrement) Cryptage (chiffrement)
  20. Dans le système Android il se peut que notre application

    soit Dans le système Android il se peut que notre application soit installée dans une mémoire externe comme une carte SD, dans ce installée dans une mémoire externe comme une carte SD, dans ce cas cas : :   Lors de son installation on génère un fichier chiffré avec Lors de son installation on génère un fichier chiffré avec l’application plus ses données. l’application plus ses données.   Lorsque le système veut accéder à l’application il doit monter un Lorsque le système veut accéder à l’application il doit monter un disque virtuel par application afin de déchiffrer ses données. disque virtuel par application afin de déchiffrer ses données. Malgré ce système de protection il est possible de le Malgré ce système de protection il est possible de le surpasser et déchiffrer ainsi les données. surpasser et déchiffrer ainsi les données. Protection des données Protection des données - - Cryptage (chiffrement) Cryptage (chiffrement)
  21.   Afin de protéger les applications qui utilisent des

    Afin de protéger les applications qui utilisent des communications réseaux sous le système Android, des API sont communications réseaux sous le système Android, des API sont conçues. Ces API exploitent les technologies TLS et SSL. conçues. Ces API exploitent les technologies TLS et SSL. L’utilisation de ces derniers permet L’utilisation de ces derniers permet : : • • L'authentification mutuelle du serveur et du client. L'authentification mutuelle du serveur et du client. • • Le chiffrement et la vérification de l'intégrité des connexions. Le chiffrement et la vérification de l'intégrité des connexions.   Pour les entreprises et afin de protéger leur applications, ils Pour les entreprises et afin de protéger leur applications, ils utilisent des connexions VPN (réseau privé virtuel) qui repose sur utilisent des connexions VPN (réseau privé virtuel) qui repose sur un un protocole, appelé protocole, appelé protocole de tunnelisation protocole de tunnelisation (tunneling) (tunneling) : : • • Un protocole permettant aux données passant d'une extrémité Un protocole permettant aux données passant d'une extrémité du VPN à l'autre. du VPN à l'autre. • • D'être sécurisées par des algorithmes de D'être sécurisées par des algorithmes de cryptographie. cryptographie. Protection des données Protection des données - - Sécurité des communications Sécurité des communications
  22. Android Android IOS ‘Apple’ IOS ‘Apple’ Windows mobile Windows mobile

    7 7 A l'installation d'une A l'installation d'une application on lui attribut un application on lui attribut un compte Unix (UID). compte Unix (UID). Si des applications sont Si des applications sont signées par le même certificat, signées par le même certificat, elles peuvent alors partager le elles peuvent alors partager le même utilisateur. même utilisateur. Tourne sous un seul utilisateur Tourne sous un seul utilisateur « mobile ». « mobile ». Utilise des chambres. (Trusted Utilise des chambres. (Trusted Computing Base : tous les Computing Base : tous les privilèges...) privilèges...) Pour chaque application il Pour chaque application il existe un répertoire privé. existe un répertoire privé. Pour chaque application il Pour chaque application il existe un répertoire privé. existe un répertoire privé. Pour chaque application il Pour chaque application il existe un répertoire privé. existe un répertoire privé. Ce répertoire ou seulement les Ce répertoire ou seulement les fichiers de ce dernier, peuvent fichiers de ce dernier, peuvent être partagés entre des être partagés entre des applications différentes en applications différentes en modifiant les droits d'accès du modifiant les droits d'accès du système. système. Les communications entre Les communications entre applications se font à travers applications se font à travers une copie des fichiers d'une une copie des fichiers d'une application à une autre. application à une autre. Windows Phone ne permet Windows Phone ne permet pas le partage des fichiers pas le partage des fichiers d'une application d'une application Le système Android comme Le système Android comme tous les systèmes propose des tous les systèmes propose des API pour cela API pour cela Pour le chiffrement, un Pour le chiffrement, un composant électronique est composant électronique est inclus dans les terminaux. inclus dans les terminaux. Pour le chiffrement, on a Pour le chiffrement, on a accès à toute une couche de accès à toute une couche de sécurité qui est très simple à sécurité qui est très simple à utiliser et qui inclut les utiliser et qui inclut les algorithmes les plus algorithmes les plus classiques. classiques. Android, IOS, Windows phone Android, IOS, Windows phone 7 7. .
  23. II. Principes de développement sécurisé des applications Android II. Principes

    de développement sécurisé des applications Android 1. 1.Validation Validation des entrées des entrées 2. 2.Les situations de concurrence ( Les situations de concurrence (race condition race condition) ) 3. 3.Les fichiers Les fichiers 4. 4.Les Permissions Les Permissions 5. 5.Protection contre les Protection contre les attaques attaques
  24. Les données venant vers une application soit directement Les données

    venant vers une application soit directement entrées par l’utilisateur ou indirectement via une autre entrées par l’utilisateur ou indirectement via une autre application ou par réseau ne sont pas tout le temps des application ou par réseau ne sont pas tout le temps des données fiables données fiables Ce problème (validation des entrées) existe aussi sous Ce problème (validation des entrées) existe aussi sous Android et peut causer plusieurs attaques, les plus connues Android et peut causer plusieurs attaques, les plus connues sont : sont :   Débordement de tampon (Buffer Overflow en anglais). Débordement de tampon (Buffer Overflow en anglais).   SQL injection. SQL injection.   Ingénierie sociale (social engineering Ingénierie sociale (social engineering en anglais). en anglais). Validation des entrées : Validation des entrées :
  25.   Le principe général Le principe général : :

    Un processus désire accéder de manière exclusive à une Un processus désire accéder de manière exclusive à une ressource du système. Il s'assure qu'elle ne soit déjà utilisée ressource du système. Il s'assure qu'elle ne soit déjà utilisée par un autre processus puis se l'approprie et l'emploie à sa par un autre processus puis se l'approprie et l'emploie à sa guise. guise.   Le problème Le problème : : Survient lorsqu'un autre processus profite du laps de temps Survient lorsqu'un autre processus profite du laps de temps s'écoulant entre s'écoulant entre la vérification la vérification et l' et l'accès accès effectif pour effectif pour s'attribuer la même ressource. s'attribuer la même ressource. Les situations de concurrence (race condition): Les situations de concurrence (race condition):
  26.   Les conséquences Les conséquences : : - -

    On se retrouve dans des situations de blocages définitifs des deux On se retrouve dans des situations de blocages définitifs des deux processus. processus. - - Dans les cas plus pratiques, ce comportement mène à des Dans les cas plus pratiques, ce comportement mène à des dysfonctionnements parfois graves de l'application. dysfonctionnements parfois graves de l'application. - - Des véritables failles de sécurité quand un des processus profite Des véritables failles de sécurité quand un des processus profite indûment des privilèges de l'autre. indûment des privilèges de l'autre.   Le système Android nous permet de parvenir un service d'une Le système Android nous permet de parvenir un service d'une autre application via un thread différent ce qui autre application via un thread différent ce qui permet l'existence permet l'existence d'une situation de concurrence d'une situation de concurrence cependant d'autres systèmes, IOS cependant d'autres systèmes, IOS ou Windows phone n'ont pas le même problème, car il est ou Windows phone n'ont pas le même problème, car il est impossible d'avoir un traitement en tâche de fond. impossible d'avoir un traitement en tâche de fond. Les situations de concurrence (race condition): Les situations de concurrence (race condition):
  27.   Chaque application possède son propre répertoire avec ses

    Chaque application possède son propre répertoire avec ses propres fichiers. propres fichiers.   Il est possible qu'une application partage ces fichiers, ça dépend Il est possible qu'une application partage ces fichiers, ça dépend des permissions. des permissions.   La liste des différentes permissions pour la création d'un fichier La liste des différentes permissions pour la création d'un fichier dans la mémoire interne dans la mémoire interne : : MODE_PRIVATE MODE_PRIVATE crée un fichier (ou remplace l'existant), il ne sera crée un fichier (ou remplace l'existant), il ne sera disponible que pour notre application disponible que pour notre application. . • • MODE_APPEND MODE_APPEND crée un fichier crée un fichier • • MODE_WORLD_READABLE MODE_WORLD_READABLE accès en lecture par les autres applications accès en lecture par les autres applications • • MODE_WORLD_WRITEABLE MODE_WORLD_WRITEABLE accès en écriture par les autres accès en écriture par les autres applications applications • • MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE accès accès en lecture et écriture par tous. en lecture et écriture par tous. Les fichiers: Les fichiers:
  28. Les Permissions Les Permissions - - Les permissions des applications

    Les permissions des applications Quand on veut installer une application, cette dernière Quand on veut installer une application, cette dernière demande à l’utilisateur des permissions. demande à l’utilisateur des permissions. Ces permissions qui sont demandées doivent être inscrites Ces permissions qui sont demandées doivent être inscrites dans un fichier ‘AndroidManifest.xml’. dans un fichier ‘AndroidManifest.xml’. Exemple: Exemple:
  29. Ces permissions dans Android peuvent être Ces permissions dans Android

    peuvent être regroupées en quatre catégories regroupées en quatre catégories : : • • Normale Normale • • Dangereux Dangereux • • Signature Signature • • SignatureOrSystem SignatureOrSystem Les Permissions Les Permissions - - Les permissions des applications Les permissions des applications
  30. Une application sous Android est un ensemble de Une application

    sous Android est un ensemble de composants rassemblés grâce à un fichier de configuration, composants rassemblés grâce à un fichier de configuration, c’est le fichier AndroidManifest. c’est le fichier AndroidManifest. Ces principaux concepts sont Ces principaux concepts sont : :   Activité Activité : :  Les vues Les vues : :  Les contrôles Les contrôles : (boutons, champs de saisie, etc.) : (boutons, champs de saisie, etc.)  Le fichier de configuration (sous format XML) Le fichier de configuration (sous format XML) : : • • le point d’entrée de l’application (quel code doit être le point d’entrée de l’application (quel code doit être exécuté au démarrage de l’application) ; exécuté au démarrage de l’application) ; • • quels composants constituent ce programme ; quels composants constituent ce programme ; • • les permissions nécessaires à l’exécution du programme. les permissions nécessaires à l’exécution du programme. Les Permissions Les Permissions - - Les permissions des composants Les permissions des composants
  31.   Le Le désassemblage désassemblage est l'action inverse de

    l'assemblage. est l'action inverse de l'assemblage. Il existe des outils qui ont la possibilité de surpasser la Il existe des outils qui ont la possibilité de surpasser la protection et les verrous classiques, d'extraire le code de protection et les verrous classiques, d'extraire le code de l'application et même réassembler le code (exemple d'outils : l'application et même réassembler le code (exemple d'outils : Smali, Baksmali, Dedexer, AntiLVL). Smali, Baksmali, Dedexer, AntiLVL).   Pour protéger son code contre ces outils Pour protéger son code contre ces outils : : • • Utiliser des "Class Loaders" Utiliser des "Class Loaders" • • Des chaînes de caractères cryptées Des chaînes de caractères cryptées • • Des outils d'obfuscation (ProGuard) Des outils d'obfuscation (ProGuard) • • Intégration d'un code dans l'application afin de détecte son Intégration d'un code dans l'application afin de détecte son intégrité ainsi savoir si son code a été modifié intégrité ainsi savoir si son code a été modifié en effectuant une vérification de signature en effectuant une vérification de signature Protection contre les attaques Protection contre les attaques – – Désassemblage. Désassemblage.
  32.   Avec le débogueur vous pouvez observer le comportement

    Avec le débogueur vous pouvez observer le comportement de votre programme au moment de l'exécution et déterminer de votre programme au moment de l'exécution et déterminer l'emplacement des erreurs de logique. l'emplacement des erreurs de logique.   Les applications sous le système Android n'échappent pas Les applications sous le système Android n'échappent pas aux débogages, car ce traitement n'est pas fait pour les aux débogages, car ce traitement n'est pas fait pour les attaquants, mais pour les développeurs afin de remonter des attaquants, mais pour les développeurs afin de remonter des bugs via plusieurs outils comme « DDMS » qui se trouve dans bugs via plusieurs outils comme « DDMS » qui se trouve dans le SDK Android. le SDK Android.   Afin d’éviter le débogage on met dans la valeur de l’attribut Afin d’éviter le débogage on met dans la valeur de l’attribut « « android:debuggable android:debuggable » la valeur « » la valeur « false false » » Protection contre les attaques Protection contre les attaques - - Débogage des Débogage des applications. applications.
  33. III. III. Audit d’une application Android Audit d’une application Android

    : : III. III. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2 2) ) : : 1. 1. Introduction Introduction à l’audit d’une application à l’audit d’une application 2. 2. Arborescence d’une application Android Arborescence d’une application Android 3. 3. Récupération, désassemblage et débogage d’une Récupération, désassemblage et débogage d’une application Android application Android 4. 4. Étude du code et du comportement de l’application Étude du code et du comportement de l’application Android: Android: 5. 5. Assemblage et signature de l’application Android: Assemblage et signature de l’application Android: 6. 6. Sécurisation de l’application Sécurisation de l’application Android Android
  34. L'audit de sécurité d'une application est une activité très utilisée

    L'audit de sécurité d'une application est une activité très utilisée dans le monde de sécurité et de qualité de logiciel, c'est comme le dans le monde de sécurité et de qualité de logiciel, c'est comme le conseil en sécurité. conseil en sécurité. L'audit peut être effectué dans différents buts, notamment vérifier L'audit peut être effectué dans différents buts, notamment vérifier si : si :   les contrôles en place sont opérationnels et sont suffisants, les contrôles en place sont opérationnels et sont suffisants,   les données saisies, stockées ou produites par les traitements les données saisies, stockées ou produites par les traitements sont de bonnes qualités, sont de bonnes qualités,   les traitements sont efficaces et donnent les résultats attendus, les traitements sont efficaces et donnent les résultats attendus,   l'application est correctement documentée, l'application est correctement documentée,   les procédures mises en œuvre dans le cadre de l'application sont les procédures mises en œuvre dans le cadre de l'application sont à jour et adaptées, à jour et adaptées,   l'exploitation informatique de l'application se fait dans de bonnes l'exploitation informatique de l'application se fait dans de bonnes conditions, conditions,   la fonction ou le processus couvert par l'application sont efficaces la fonction ou le processus couvert par l'application sont efficaces et productifs et productifs Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2 2) ) : : Introduction à l’audit d’une application Introduction à l’audit d’une application
  35. L'audit sécurité peut se faire de plusieurs manières, cette L'audit

    sécurité peut se faire de plusieurs manières, cette tâche est difficile à modéliser, mais on peut identifier des tâche est difficile à modéliser, mais on peut identifier des lignes principales : lignes principales :   Récupérer l'application Récupérer l'application   Désassemblage de l'application Désassemblage de l'application   Décompiler le Décompiler le bytecode bytecode (dans le cas ou c'est possible) (dans le cas ou c'est possible)   Déboguer l'application Déboguer l'application   Etudier le code Etudier le code   Sniffer les communications. Sniffer les communications. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2 2) ) : : Introduction à l’audit d’une application Introduction à l’audit d’une application
  36. l’arborescence d’un projet par défaut créer avec l’IDE Eclipse l’arborescence

    d’un projet par défaut créer avec l’IDE Eclipse Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2 2) ) : : Arborescence d’une application Android : Arborescence d’une application Android :
  37. src src : : Ce dossier contient les sources de

    votre application Ce dossier contient les sources de votre application (code JAVA) et les packages. (code JAVA) et les packages. gen gen: : Contient le code source produit par les outils de Contient le code source produit par les outils de compilation. compilation. assets assets : : Contient des données non internationalisées qui Contient des données non internationalisées qui seront utilisées dans votre application (images, vidéos, seront utilisées dans votre application (images, vidéos, licence…etc). licence…etc). Res : Res : Contient les ressources du projet (interface, image, Contient les ressources du projet (interface, image, …). …). AndroidManifest.xml AndroidManifest.xml : Définit le comportement de votre : Définit le comportement de votre application au système Android. Ce fichier définit par application au système Android. Ce fichier définit par exemple (Le nom, l’icône, la version min du SDK, les exemple (Le nom, l’icône, la version min du SDK, les activités, les services, etc…). activités, les services, etc…). Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2 2) ) : : Arborescence d’une application Android : Arborescence d’une application Android :
  38. fichiers qui se trouvent dans un package (application Android fichiers

    qui se trouvent dans un package (application Android .APK) .APK) Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2 2) ) : : Arborescence d’une application Android : Arborescence d’une application Android :
  39. AndroidManifest.xm AndroidManifest.xml l : Définit les propriétés et activités de

    : Définit les propriétés et activités de l'application (Format XML encodé pour Android) l'application (Format XML encodé pour Android) classes.dex classes.dex: Fichier au format DEX contenant le code de : Fichier au format DEX contenant le code de l'application l'application Res Res : Contient les ressources du projet (interface, image, …). : Contient les ressources du projet (interface, image, …). resources.arsc resources.arsc : contient des ressources compilés dans un format : contient des ressources compilés dans un format binaire; peut inclure des images, des chaînes ou d'autres données binaire; peut inclure des images, des chaînes ou d'autres données utilisées par l’application Android. utilisées par l’application Android. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2 2) ) : : Arborescence d’une application Android : Arborescence d’une application Android :
  40. META META- -INF INF : dossier contient les données qui

    sont utilisées pour : dossier contient les données qui sont utilisées pour assurer l'intégrité du package APK et la sécurité du système. assurer l'intégrité du package APK et la sécurité du système. Il contient trois fichiers Il contient trois fichiers : :   MANIFEST.MF: c’est le fichier Manifest, Il permet de faire de MANIFEST.MF: c’est le fichier Manifest, Il permet de faire de nombreuses choses en plus de déclarer les composants de nombreuses choses en plus de déclarer les composants de l'application, comme nommer les librairies avec lesquelles l'application, comme nommer les librairies avec lesquelles l'application a besoin d'être liée (en plus de la librairie Android) et l'application a besoin d'être liée (en plus de la librairie Android) et identifier les permissions dont l'application a besoin. identifier les permissions dont l'application a besoin.   CERT.RSA: le certificat de l’application. CERT.RSA: le certificat de l’application.   CERT.SF: c’est la liste des ressources et SHA CERT.SF: c’est la liste des ressources et SHA- -1 1 (un ensemble de (un ensemble de fonctions de hachage cryptographiques) supportés dans fonctions de hachage cryptographiques) supportés dans l’application. l’application. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2 2) ) : : Arborescence d’une application Android : Arborescence d’une application Android :
  41. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2

    2) ) : : RadioMa v RadioMa v2 2 : : Avant de passer vers l'audit, nous allons choisir une application de Google Avant de passer vers l'audit, nous allons choisir une application de Google Play (Play Store) puis récupérer son APK. Dans notre cas nous allons Play (Play Store) puis récupérer son APK. Dans notre cas nous allons prendre l'application RadioMA v prendre l'application RadioMA v2 2. .0 0 - - Maroc (développé par Maroc (développé par Ayoub Ayoub DARDORY) qui est gratuite et qui nous permet d'écouter la majorité des DARDORY) qui est gratuite et qui nous permet d'écouter la majorité des stations radios Marocaines qui diffusent en ligne. stations radios Marocaines qui diffusent en ligne.
  42. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2

    2) ) : : Récupération, désassemblage et débogage d’une application Android Récupération, désassemblage et débogage d’une application Android : : Etapes pour lister les applications Android installées Etapes pour lister les applications Android installées
  43. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2

    2) ) : : Récupération, désassemblage et débogage d’une application Android Récupération, désassemblage et débogage d’une application Android : : Commande pour récupérer l’application Android Commande pour récupérer l’application Android « « com.radioma com.radioma- -1 1.apk .apk » »
  44. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2

    2) ) : : Désassemblage et débogage de l’application Android Désassemblage et débogage de l’application Android : : Commande pour désassembler l’application Android « Commande pour désassembler l’application Android « com.radioma com.radioma- -1 1.apk .apk » »
  45. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2

    2) ) : : Désassemblage et débogage de l’application Android Désassemblage et débogage de l’application Android : : • •Res Res : contient les ressources du projet (interface, image, …). : contient les ressources du projet (interface, image, …). • •Smali Smali : contient les codes sources ayant la forme du langage Smali : contient les codes sources ayant la forme du langage Smali (signifie « assembleur » en islandais) et qui utilise la syntaxe Jasmin (signifie « assembleur » en islandais) et qui utilise la syntaxe Jasmin (Jasmin est un langage d'assemblage d'instructions de la machine (Jasmin est un langage d'assemblage d'instructions de la machine virtuelle Java, ou de façon plus concise, un assembleur de Bytecode virtuelle Java, ou de façon plus concise, un assembleur de Bytecode Java. Java. • •AndroidManifest.xml : Définit le comportement de votre application AndroidManifest.xml : Définit le comportement de votre application au système Android. au système Android.
  46. Audit d’une application Android Audit d’une application Android (RadioMAv (RadioMAv2

    2) ) : : Désassemblage et débogage de l’application Android Désassemblage et débogage de l’application Android : : Débogage de l’application Android Débogage de l’application Android Lors de l’exécution de la commande Lors de l’exécution de la commande : > adb.exe : > adb.exe logcat logcat
  47. Étude du code et du comportement de l’application Android: Étude

    du code et du comportement de l’application Android: Etude du fichier AndroidManifest.xml Etude du fichier AndroidManifest.xml : : • • android:debuggable="false" android:debuggable="false" nous fait savoir que le développeur a nous fait savoir que le développeur a annulé le débogage de l’application. annulé le débogage de l’application. • • <uses <uses- -permission permission android:name="android.permission.INTERNET" /> android:name="android.permission.INTERNET" /> Permission d’utiliser internet. Permission d’utiliser internet. Le nom du package Le nom du package : : package="com.radioma" package="com.radioma"
  48. Étude du code et du comportement de l’application Android: Étude

    du code et du comportement de l’application Android: Etude du répertoire « Etude du répertoire « res res » » : : Dans le premier « Dans le premier « com.radioma com.radioma- -1 1\ \res res\ \values values » il existe des chaines de » il existe des chaines de caractères par défaut, exemple « caractères par défaut, exemple « le fichier strings.xml le fichier strings.xml » : » : </string> </string> <string name="app_name">RadioMA</string> <string name="app_name">RadioMA</string> // le nom de // le nom de l’application l’application <string name="loading_error">Loading error</string> <string name="loading_error">Loading error</string> // Si une erreur survient // Si une erreur survient
  49. Étude du code et du comportement de l’application Android: Étude

    du code et du comportement de l’application Android: Etude du répertoire « Etude du répertoire « smali smali » » : : Exemple Exemple : « : « Station.smali Station.smali » : » : .class public .class public Lcom Lcom/ /radioma radioma/Station; /Station; // Le nom de la classe « // Le nom de la classe « Station Station » et le chemin du fichier lors de l’exécution. » et le chemin du fichier lors de l’exécution. .super .super Ljava Ljava/ /lang lang/Object; /Object; //hérite de l'objet (qui peut être l'activité, vue, etc) //hérite de l'objet (qui peut être l'activité, vue, etc) .source "Station.java" .source "Station.java" // Le nom original du fichier Java dans notre cas c’est « // Le nom original du fichier Java dans notre cas c’est « Station.java Station.java » »
  50. Étude du code et du comportement de l’application Android: Étude

    du code et du comportement de l’application Android: Etude des communications Etude des communications : : Wireshark en cours de capture de paquets et avec comme filtre « Wireshark en cours de capture de paquets et avec comme filtre « http http » »
  51. Étude du code et du comportement de l’application Android: Étude

    du code et du comportement de l’application Android: Etude des communications Etude des communications : : Analyse d’un paquet sur Wireshark Analyse d’un paquet sur Wireshark
  52. Étude du code et du comportement de l’application Android: Étude

    du code et du comportement de l’application Android: Etude des communications Etude des communications : : site radioma.ma et ces répertoires (app, update, version site radioma.ma et ces répertoires (app, update, version4 4, version , version5 5 …) …)
  53. Étude du code et du comportement de l’application Android: Étude

    du code et du comportement de l’application Android: Assemblage et signature de l’application Android Assemblage et signature de l’application Android : : Commande pour assembler notre application Android Commande pour assembler notre application Android
  54. Étude du code et du comportement de l’application Android: Étude

    du code et du comportement de l’application Android: Assemblage et signature de l’application Android Assemblage et signature de l’application Android : : installation de l’application Android / message d’erreur causé par la signature. installation de l’application Android / message d’erreur causé par la signature.
  55. Étude du code et du comportement de l’application Android: Étude

    du code et du comportement de l’application Android: Assemblage et signature de l’application Android Assemblage et signature de l’application Android : : signature et installation d’application Android. signature et installation d’application Android.
  56. Sécurisation de l’application Android « Sécurisation de l’application Android «

    RadioMa v RadioMa v2 2 : : Google Play Google Play : : Sous le système Android il est possible de vérifier si notre application a été Sous le système Android il est possible de vérifier si notre application a été installée via Google Play, ainsi de ne pas permettre l'installation que par ce installée via Google Play, ainsi de ne pas permettre l'installation que par ce dernier. dernier. if("com.google.android.feesback".equals( if("com.google.android.feesback".equals( getPackageManager().getInstallerPackageName(getPacka getPackageManager().getInstallerPackageName(getPacka geName()))) geName()))) { { // Si // Si l’application l’application est est installé installé via Google via Google Play Play return false; return false; } }
  57. Sécurisation de l’application Android « Sécurisation de l’application Android «

    RadioMa v RadioMa v2 2 : : Emulateur Emulateur : : On peut détecter si une application Android est dans un émulateur si on ajoute ce On peut détecter si une application Android est dans un émulateur si on ajoute ce code. code. String android_id = Secure.getString(getContentResolver(), String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID); Secure.ANDROID_ID); if (android_id == null){ if (android_id == null){ // // L’application L’application tourne tourne sous sous un un émulateur émulateur, , alors alors il il faut faut l’arrêter l’arrêter. . } }
  58. Sécurisation de l’application Android « Sécurisation de l’application Android «

    RadioMa v RadioMa v2 2 : : Serveur Serveur : : on peut accéder au serveur de l’application via un navigateur facilement afin de on peut accéder au serveur de l’application via un navigateur facilement afin de voir le contenu. Pour ne pas laisser le contenu accessible par tout le monde, voir le contenu. Pour ne pas laisser le contenu accessible par tout le monde, on on peut signer l’application avec la même signature du domaine ou essayer de créer peut signer l’application avec la même signature du domaine ou essayer de créer un identifiant un identifiant Oui, il est préférable d’utiliser le protocole http en employant une syntaxe basée Oui, il est préférable d’utiliser le protocole http en employant une syntaxe basée sur la notation XML, sur la notation XML, mais il est préférable d’utiliser la compression GZIP pour mais il est préférable d’utiliser la compression GZIP pour toutes les requêtes. toutes les requêtes. Si l’application utilise le composant Webkit (c’est notre cas) il est préférable de Si l’application utilise le composant Webkit (c’est notre cas) il est préférable de réduire au strict nécessaire les possibilités offertes à une application web comme réduire au strict nécessaire les possibilités offertes à une application web comme l’accès à la géolocalisation, à JavaScript etc. l’accès à la géolocalisation, à JavaScript etc.