SlideShare une entreprise Scribd logo
1  sur  64
PROJET FIN DE FORMATION
 Etude des aspects de sécurité
Audit d'une application Android


       UNIVERSITE MOHAMMED V AGDAL
       FACULTE DES SCIENCES


            Encadré par:
         Pr. Ghizlane Orhanou
            Pr. Said EL HAJJI
             Réalisé par:
             Mr. Saad DARDAR
PROJET FIN DE FORMATION
   Etude des aspects de sécurité
  Audit d'une application Android

                                  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
Plan de la présentation :

  Introduction
I. Etude des aspects de sécurité du système
    d’exploitation Android :
II. Principes de développement sécurisé des
    applications Android
III. Audit d’une application Android (RadioMAv2) :
  Conclusion
Introduction

               Développement
                  sécurisé
I. Etude des aspects de sécurité du
système d’exploitation Android :

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




               Shema Architecture Android
Architecture du système d’exploitation Android
   - Le noyau Linux :




 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
logicielle.

 Gère les services du système.

 Linux est le cœur du système Android mais il n’est pas une
distribution linux.
Architecture du système d’exploitation Android -              Les
      bibliothèques (librairies) :




•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.
•SQLite. L’un des meilleures Bases de données (rapide, légère et puissante).
•FreeType : gérant les bitmap et le rendu des polices
•SurfaceFlinger. Pour l’accès au sous -système d'affichage.
•LibWebCore. un moteur de navigateur web (tourne, à la fois le navigateur
Android et une vue web intégrable).
•Skia. Moteur graphique 2D
•Bibliothèques multimédias (MPEG4, MP3, JPG …etc.)
•OpenGL ES (3D)
Architecture du système d’exploitation Android -   Le moteur
    d’exécution Android (Android Runtime)




 Un moteur d'exécution, bibliothèque d'exécution ou runtime
est un système logiciel qui permet l'exécution
de programmes dans un langage de programmation donné, dans
le cas du système Android on parle de Java.
Architecture du système d’exploitation Android -                     Le moteur
  d’exécution Android (Android Runtime)




  Schéma qui indique les étapes nécessaries à la compilatio n et à
         l’exécutio n d'un pro gramme Android standard .
Architecture du système d’exploitation Android -   Application
  et Framework pour les applications
Architecture du système d’exploitation Android -   Application
   et Framework pour les applications


 La seule couche visible et accessible par l’utilisateur
final.
 Un ensemble de programmes de base que l’on peut
trouver sur Android (SMS, calendrier, photos, web et
autres).
 Toutes ces applications sont développées à l’aide du
langage de programmation Java.
 le Framework du système Android permet aux
développeurs, en leurs fournissant divers API, de créer
des applications riches et innovantes.
ROM et accès root :
ROM et accès root :
 STOCK ROM : c’est la ROM standard (officielle), le
matériel vient avec cette version pré -installé.

 CUSTOM ROM : c’est la ROM non officielle personnalisée
qu’on peut installer sur notre matériel, il existe trois sortes
de cette ROM :

• Celles qui permettent de booster la vitesse et la stabilité
du matériel (Smartphone, Tablette,…)
• Celles qui permettent d'installer une version Android
normalement non compatible avec un matériel
• Celles qui permettent de rajouter de nombreuses
fonctionnalités.
ROM et accès root :


Rooting tout simplement c’est avoir les droits
d’administrateur et c’est à l’aide d’un petit logiciel nommé
« SU » qui nous rend super -utilisateur (Super-user).

 Elargi les capacités du matériel Android.
 Permet d'installer n'importe quelle application.
 Exécuter toutes sortes de commandes normalement
inaccessible aux utilisateurs .
ROM et accès root :


Le root est une manipulation assez dangereuse qui comporte
des risques. Presque dans tout les cas car lorsqu’on root
notre Smartphone par exemple on perd notre garantie chez
le fournisseur ou lorsqu’on installe une application il peut
avoir le privilège de ce mode (root) et ainsi avoir la main sur
des données personnelles ou fichiers du système.
Modèle de sécurité :
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
formalisme permettant de représenter, de façon claire
et non-ambiguë, la politique de sécurité.

 On modélise :
• Pour mieux comprendre le système qu’on développe.
• Pour visualiser ses propriétés.
• Pour spécifier sa structure ou son comportement.
• Pour documenter et guider sa construction, etc .
Modèle de sécurité - Définition d’un modèle de sécurité


Les modèles de sécurité peuvent être classés en deux
grandes familles :

• Des modèles généraux, qui sont plutôt des méthodes de
description formelle, pouvant s’appliquer à toute sorte
de politiques.

• Des modèles spécifiques, développés pour représenter
une politique d’autorisation particulière.
Modèle de sécurité -   Signature numérique



 Quand le développeur veut publier une
application sur Google Play, il doit payer pour
acquérir un certificat et signé ainsi l’application
pour qu’elle soit reconnue par Google. Cette
pratique existe sur la plupart des systèmes
(Symbian Signed, IOS de Apple,…).

 Les applications modifiées par un virus ou par un
pirate invalide automatiquement la signature
numérique, cependant il existe des options sur le
système Android qui permet d’installer ces
applications non signées.
Modèle de sécurité - Isolation

 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
consistent à l'isolation des applications.

 A l'installation d'une application on lui attribut un compte
Unix (uid).

 Si des applications sont signées par le même certificat, elles
peuvent alors partager le même utilisateur.

 Lors de l'installation de l'application on lui attribut un
répertoire      privé,     chemin       par     défaut      :
/data/data/app_package_name , ce répertoire ou seulement les
fichiers de ce dernier, peuvent être partagés entre des
applications différentes en modifiant les droits d'accès du
système.
Modèle de sécurité - Isolation



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


 La cryptographie ou chiffrement des données c’est un ensemble
de techniques permettant de chiffrer des données, c'est -à-dire
permettant de les rendre inintelligibles sans une action
spécifique.

Le système Android comme tous les systèmes propose des API
pour cela comme « javax.crypto », mais ils doivent être bien
utilisées si non l’utilisation de ces derniers n’aura pas d’effet .
Protection des données - Cryptage (chiffrement)

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
cas :

 Lors de son installation on génère un fichier chiffré avec
l’application plus ses données.

 Lorsque le système veut accéder à l’application il doit monter un
disque virtuel par application afin de déchiffrer ses données.

Malgré ce système de protection il est possible de le
surpasser et déchiffrer ainsi les données.
Protection des données - Sécurité des communications

 Afin de protéger les applications qui utilisent des
communications réseaux sous le système Android, des API sont
conçues. Ces API exploitent les technologies TLS et SSL.
L’utilisation de ces derniers permet :
• L'authentification mutuelle du serveur et du client.
• Le chiffrement et la vérification de l'intégrité des connexions.

 Pour les entreprises et afin de protéger leur applications, ils
utilisent des connexions VPN (réseau privé virtuel) qui repose sur
un protocole, appelé protocole de tunnelisation (tunneling) :
• Un protocole permettant aux données passant d'une extrémité
du VPN à l'autre.
• D'être sécurisées par des algorithmes de cryptographie.
Android, IOS, Windows pho ne 7.

                Android                                         IOS ‘Apple’                               Window s mobile 7
A l ' i n s t a l l a t i on d ' u n e             To u r n e s o u s u n s e u l                   Utilise des chambres.
a p p l i c a t i o n o n l u i a t t r i b ut     u t i l i s a t e ur « m o b i l e » .           ( Tr u s t e d C o m p u t i n g B a s e :
un compte Unix (UID).                                                                               t o u s l e s p r i v i l è ge s . . .)
S i d e s a p p l i c at i on s s o n t
signées par le même
certificat, elles peuvent
alors partager le même
u t i l i s a t e ur.
P o u r c h a q u e a p p l i c a t i on i l       P o u r c h a q u e a p p l i c a t i on i l     P o u r c h a q u e a p p l i c a t i on i l
e x i s t e u n r é p e r t oi r e p r i v é .     e x i s t e u n r é p e r t oi r e p r i v é .   e x i s t e u n r é p e r t oi r e p r i v é .

C e r é p e r t oi r e o u s e u l e m e nt        L e s c o m m u n i c a t i ons e n t r e        Wi n d ow s P h o n e n e p e r m e t
l e s f i c h i e r s d e c e d e r n i e r,       a p p l i c a t i o ns s e f o n t à             p a s l e p a r t a ge d e s f i c h i e r s
p e u v e nt ê t r e p a r t a g é s e n t r e     travers une copie des                            d ' u n e a p p l i c a t i on
d e s a p p l i c a t i ons                        f i c hi e r s d ' u n e a p p l i c a t i o n à
d i f f ér e nt e s e n m o d i f i an t l e s     une autre.
d r o i t s d ' a c c è s d u s ys t è m e .

L e s ys t è m e An d r o i d c o m m e P o u r l e c h i f f r e m e nt , u n                      P o u r l e c h i f f r e m e nt , o n a
t o u s l e s s ys t è m e s p r o p o s e c o m p o s a nt é l e c t r oni qu e                    accès à toute une couche
d e s AP I p o u r c e l a                 e s t i n c l us d a n s l e s                           de sécurité qui est très
                                           t e r m i na u x .                                       simple à utiliser et qui
                                                                                                    i n c l ut l e s a l g o r i t hm e s l e s
                                                                                                    p l u s c l a s s i q ue s .
II. Principes de développement sécurisé
des applications Android
1. Validation des entrées
2. Les situations de concurrence (race condition)
3. Les fichiers
4. Les Permissions
5. Protection contre les attaques
Validation des entrées :

Les données venant vers une application soit directement
entrées par l’utilisateur ou indirectement via une autre
application ou par réseau ne sont pas tout le temps des
données fiables
Ce problème (validation des entrées) existe aussi sous
Android et peut causer plusieurs attaques, les plus connues
sont :

 Débordement de tampon (Buffer Overflow en anglais).

 SQL injection.

 Ingénierie sociale (social engineering en anglais).
Les situations de concurrence (race condition):


 Le principe général :
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
par un autre processus puis se l'approprie et l'emploie à sa
guise.

 Le problème :
Survient lorsqu'un autre processus profite du laps de temps
s'écoulant entre la vérification et l'accès effectif pour
s'attribuer la même ressource.
Les situations de concurrence (race condition):

 Les conséquences :
- On se retrouve dans des situations de blocages définitifs des deux
processus.
- Dans les cas plus pratiques, ce comportement mène à des
dysfonctionnements parfois graves de l'application.
- Des véritables failles de sécurité quand un des processus profite
indûment des privilèges de l'autre.

 Le système Android nous permet de parvenir un service d'une
autre application via un thread différent ce qui permet l'existence
d'une situation de concurrence cependant d'autres systèmes, IOS
ou Windows phone n'ont pas le même problème, car il est
impossible d'avoir un traitement en tâche de fond.
Les fichiers:

 Chaque application possède son propre répertoire avec ses
propres fichiers.

 Il est possible qu'une application partage ces fichiers, ça dépend
des permissions.

 La liste des différentes permissions pour la création d'un fichier
dans la mémoire interne :

MODE_PRIVATE crée un fichier (ou remplace l'existant), il ne sera
disponible que pour notre application .
• MODE_APPEND crée un fichier
• MODE_WORLD_READABLE accès en lecture par les autres applications
• MODE_WORLD_WRITEABLE accès en écriture par les autres
applications
• MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE accès
en lecture et écriture par tous.
Les Permissions - Les permissions des applications


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


Ces permissions dans Android peuvent être
regroupées en quatre catégories :

• Normale
• Dangereux
• Signature
• SignatureOrSystem
Les Permissions - Les permissions des composants


Une application sous Android est un ensemble de
composants rassemblés grâce à un fichier de configuration,
c’est le fichier AndroidManifest.
Ces principaux concepts sont :

 Activité :

Les vues :

Les contrôles : (boutons, champs de saisie, etc.)

Le fichier de configuration (sous format XML) :
• le point d’entrée de l’application (quel code doit être
exécuté au démarrage de l’application) ;
• quels composants constituent ce programme ;
• les permissions nécessaires à l’exécution du programme.
Protection contre les attaques – Désassemblage.
 Le désassemblage est l'action inverse de l'assemblage.
Il existe des outils qui ont la possibilité de surpasser la
protection et les verrous classiques, d'extraire le code de
l'application et même réassembler le code (exemple d'outils :
Smali, Baksmali, Dedexer, AntiLVL).

 Pour protéger son code contre ces outils :

• Utiliser des "Class Loaders"
• Des chaînes de caractères cryptées
• Des outils d'obfuscation (ProGuard)
• Intégration d'un code dans l'application afin de détecte son
  intégrité ainsi savoir si son code a été modifié
  en effectuant une vérification de signature
Protection contre les attaques - Débogage des
    applications.
 Avec le débogueur vous pouvez observer le comportement
de votre programme au moment de l'exécution et déterminer
l'emplacement des erreurs de logique.

 Les applications sous le système Android n'échappent pas
aux débogages, car ce traitement n'est pas fait pour les
attaquants, mais pour les développeurs afin de remonter des
bugs via plusieurs outils comme « DDMS » qui se trouve dans
le SDK Android.

 Afin d’éviter le débogage on met dans la valeur de l’attribut
« android:debuggable » la valeur « false »
III. Audit d’une application Android (RadioMAv2) :

1. Introduction à l’audit d’une application
2. Arborescence d’une application Android
3. Récupération, désassemblage et débogage d’une
   application Android
4. Étude du code et du comportement de l’application
   Android:
5. Assemblage et signature de l’application Android:
6. Sécurisation de l’application Android
Audit d’une application Android (RadioMAv2) :
  Introduction à l’audit d’une application
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
conseil en sécurité.
L'audit peut être effectué dans différents buts, notamment vérifier
si :
 les contrôles en place sont opérationnels et sont suffisants,
 les données saisies, stockées ou produites par les traitements
sont de bonnes qualités,
 les traitements sont efficaces et donnent les résultats attendus,
 l'application est correctement documentée,
 les procédures mises en œuvre dans le cadre de l'application sont
à jour et adaptées,
 l'exploitation informatique de l'application se fait dans de bonnes
conditions,
 la fonction ou le processus couvert par l'application sont efficaces
et productifs
Audit d’une application Android (RadioMAv2) :
  Introduction à l’audit d’une application


L'audit sécurité peut se faire de plusieurs manières, cette
tâche est difficile à modéliser, mais on peut identifier des
lignes principales :

 Récupérer l'application
 Désassemblage de l'application
 Décompiler le bytecode (dans le cas ou c'est possible)
 Déboguer l'application
 Etudier le code
 Sniffer les communications.
Audit d’une application Android (RadioMAv2) :
Arborescence d’une application Android :




 l’arborescence d’un projet par défaut créer avec l’IDE Eclipse
Audit d’une application Android (RadioMAv2) :
Arborescence d’une application Android :


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




 fichiers qui se trouvent dans un package (application Android
 . APK)
Audit d’une application Android (RadioMAv2) :
  Arborescence d’une application Android :



AndroidManifest.xml : Définit les propriétés        et   activités   de
l'application (Format XML encodé pour Android)

classes.dex: Fichier    au   format    DEX   contenant   le   code   de
l'application

Res : Contient les ressources du projet (interface, image, …).

resources.arsc : contient des ressources compilés dans un format
binaire; peut inclure des images, des chaînes ou d'autres données
utilisées par l’application Android.
Audit d’une application Android (RadioMAv2) :
  Arborescence d’une application Android :
META-INF : dossier contient les données qui sont utilisées pour
assurer l'intégrité du package APK et la sécurité du système.
Il contient trois fichiers :

 MANIFEST.MF: c’est le fichier Manifest, Il permet de faire de
nombreuses choses en plus de déclarer les composants de
l'application, comme nommer les librairies avec lesquelles
l'application a besoin d'être liée (en plus de la librairie Android) et
identifier les permissions dont l'application a besoin.

 CERT.RSA: le certificat de l’application.

 CERT.SF: c’est la liste des ressources et SHA -1 (un ensemble de
fonctions    de   hachage     cryptographiques)    supportés  dans
l’application.
Audit d’une application Android (RadioMAv2) :
RadioMa v2 :


 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
 prendre l'application RadioMA v2.0 - Maroc (développé par Ayoub
 DARDORY) qui est gratuite et qui nous permet d'écouter la majorité des
 stations radios Marocaines qui diffusent en ligne.
Audit d’une application Android (RadioMAv2) :
Récupération, désassemblage et débogage d’une application Android :




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




             Commande pour récupérer l’application Android
             « com.radioma-1.apk »
Audit d’une application Android (RadioMAv2) :
Désassemblage et débogage de l’application Android :




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


•Res : contient les ressources du projet (interface, image, …).

•Smali : contient les codes sources ayant la forme du langage Smali
(signifie « assembleur » en islandais) et qui utilise la syntaxe Jasmin
(Jasmin est un langage d'assemblage d'instructions de la machine
virtuelle Java, ou de façon plus concise, un assembleur de Bytecode
Java.

•AndroidManifest.xml : Définit le comportement de votre application
au système Android.
Audit d’une application Android (RadioMAv2) :
Désassemblage et débogage de l’application Android :
    Débogage de l’application Android




    Lors de l’exécution de la commande : > adb.exe logcat
Étude du code et du comportement de l’application Android:
Etude du fichier AndroidManifest.xml :




 • android:debuggable="false" nous fait savoir que le développeur a
 annulé le débogage de l’application.

 • <uses-permission
 android:name="android.permission.INTERNET" />
 Permission d’utiliser internet.

 Le nom du package : package="com.radioma"
Étude du code et du comportement de l’application Android:
Etude du répertoire « res » :




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


  Exemple : « Station.smali » :

  .class public Lcom/radioma/Station;
  // Le nom de la classe « Station » et le chemin du fichier lors de l’exécution.

  .super Ljava/lang/Object;
  //hérite de l'objet (qui peut être l'activité, vue, etc)

  .source "Station.java"
  // Le nom original du fichier Java dans notre cas c’est « Station.java »
Étude du code et du comportement de l’application Android:
Etude des communications :




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




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




site radioma.ma et ces répertoires (app, update, version4, version5 …)
Étude du code et du comportement de l’application Android:
Assemblage et signature de l’application Android :




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




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




     signature et installation d’application Android.
Sécurisation de l’application Android « RadioMa v2 :
 Google Play :

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
dernier.

if("com.google.android.feesback".equals(
      getPackageManager().getInstallerPackageName(getPacka
geName())))
      {
            // Si l’application est installé via Google
Play
            return false;
      }
Sécurisation de l’application Android « RadioMa v2 :
 Emulateur :




On peut détecter si une application Android est dans un émulateur si on ajoute ce
code.

String android_id = Secure.getString(getContentResolver(),
Secure.ANDROID_ID);
if (android_id == null){
      // L’application tourne sous un émulateur, alors il faut l’arrêter.
}
Sécurisation de l’application Android « RadioMa v2 :
 Serveur :


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, on
peut signer l’application avec la même signature du domaine ou essayer de créer
un identifiant

Oui, il est préférable d’utiliser le protocole http en employant une syntaxe basée
sur la notation XML, mais il est préférable d’utiliser la compression GZIP pour
toutes les requêtes.

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
l’accès à la géolocalisation, à JavaScript etc.
Conclusion
Merci !

Contenu connexe

Tendances

Rapport nagios miniprojet
Rapport nagios miniprojetRapport nagios miniprojet
Rapport nagios miniprojetAyoub Rouzi
 
Rapport-de-perfectionnement-Jasser-Degani.pdf
Rapport-de-perfectionnement-Jasser-Degani.pdfRapport-de-perfectionnement-Jasser-Degani.pdf
Rapport-de-perfectionnement-Jasser-Degani.pdfAlaChihaoui1
 
Etude et mise en place d’une solution open source de gestion de la sécurité d...
Etude et mise en place d’une solution open source de gestion de la sécurité d...Etude et mise en place d’une solution open source de gestion de la sécurité d...
Etude et mise en place d’une solution open source de gestion de la sécurité d...Mohammed LAAZIZLI
 
Rapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiRapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiDonia Hammami
 
Conception et réalisation d’une application Mobile banking
Conception et réalisation d’une application  Mobile banking  Conception et réalisation d’une application  Mobile banking
Conception et réalisation d’une application Mobile banking Khaled Fayala
 
Rapport Projet de fin d'etude sur le parc informatique
Rapport Projet  de fin d'etude sur le parc informatiqueRapport Projet  de fin d'etude sur le parc informatique
Rapport Projet de fin d'etude sur le parc informatiqueHicham Ben
 
Mise En Place d'une Solution de Supervision Réseau
Mise En Place d'une Solution de Supervision Réseau Mise En Place d'une Solution de Supervision Réseau
Mise En Place d'une Solution de Supervision Réseau Yaya N'Tyeni Sanogo
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITLina Meddeb
 
IDS,SNORT ET SÉCURITÉ RESEAU
IDS,SNORT ET SÉCURITÉ RESEAUIDS,SNORT ET SÉCURITÉ RESEAU
IDS,SNORT ET SÉCURITÉ RESEAUCHAOUACHI marwen
 
Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats Ayed CHOKRI
 
présentation pfe projet fin d'étude développement et conception d'une applica...
présentation pfe projet fin d'étude développement et conception d'une applica...présentation pfe projet fin d'étude développement et conception d'une applica...
présentation pfe projet fin d'étude développement et conception d'une applica...Raoua Bennasr
 
Rapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc InformatiqueRapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc InformatiqueEric Maxime
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Ahmed Makni
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile Raoua Bennasr
 
La reconnaissance gestuelle
La reconnaissance gestuelleLa reconnaissance gestuelle
La reconnaissance gestuellebeblop
 
Presentation pfe gestion parc informatique et help desk
Presentation pfe gestion parc informatique et help deskPresentation pfe gestion parc informatique et help desk
Presentation pfe gestion parc informatique et help deskRaef Ghribi
 
Rapport PFE : Cloud Insights
Rapport PFE : Cloud InsightsRapport PFE : Cloud Insights
Rapport PFE : Cloud Insightsahmed oumezzine
 
Soutenance de Mon PFE de Stage (DUT)
Soutenance de Mon PFE de Stage (DUT) Soutenance de Mon PFE de Stage (DUT)
Soutenance de Mon PFE de Stage (DUT) Mohammed JAITI
 

Tendances (20)

Rapport nagios miniprojet
Rapport nagios miniprojetRapport nagios miniprojet
Rapport nagios miniprojet
 
Rapport-de-perfectionnement-Jasser-Degani.pdf
Rapport-de-perfectionnement-Jasser-Degani.pdfRapport-de-perfectionnement-Jasser-Degani.pdf
Rapport-de-perfectionnement-Jasser-Degani.pdf
 
Etude et mise en place d’une solution open source de gestion de la sécurité d...
Etude et mise en place d’une solution open source de gestion de la sécurité d...Etude et mise en place d’une solution open source de gestion de la sécurité d...
Etude et mise en place d’une solution open source de gestion de la sécurité d...
 
Rapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiRapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammami
 
Conception et réalisation d’une application Mobile banking
Conception et réalisation d’une application  Mobile banking  Conception et réalisation d’une application  Mobile banking
Conception et réalisation d’une application Mobile banking
 
Rapport Projet de fin d'etude sur le parc informatique
Rapport Projet  de fin d'etude sur le parc informatiqueRapport Projet  de fin d'etude sur le parc informatique
Rapport Projet de fin d'etude sur le parc informatique
 
Mise En Place d'une Solution de Supervision Réseau
Mise En Place d'une Solution de Supervision Réseau Mise En Place d'une Solution de Supervision Réseau
Mise En Place d'une Solution de Supervision Réseau
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
 
IDS,SNORT ET SÉCURITÉ RESEAU
IDS,SNORT ET SÉCURITÉ RESEAUIDS,SNORT ET SÉCURITÉ RESEAU
IDS,SNORT ET SÉCURITÉ RESEAU
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats
 
présentation pfe projet fin d'étude développement et conception d'une applica...
présentation pfe projet fin d'étude développement et conception d'une applica...présentation pfe projet fin d'étude développement et conception d'une applica...
présentation pfe projet fin d'étude développement et conception d'une applica...
 
Rapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc InformatiqueRapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc Informatique
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...
 
Rapport pfev7
Rapport pfev7Rapport pfev7
Rapport pfev7
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
 
La reconnaissance gestuelle
La reconnaissance gestuelleLa reconnaissance gestuelle
La reconnaissance gestuelle
 
Presentation pfe gestion parc informatique et help desk
Presentation pfe gestion parc informatique et help deskPresentation pfe gestion parc informatique et help desk
Presentation pfe gestion parc informatique et help desk
 
Rapport PFE : Cloud Insights
Rapport PFE : Cloud InsightsRapport PFE : Cloud Insights
Rapport PFE : Cloud Insights
 
Soutenance de Mon PFE de Stage (DUT)
Soutenance de Mon PFE de Stage (DUT) Soutenance de Mon PFE de Stage (DUT)
Soutenance de Mon PFE de Stage (DUT)
 

En vedette

Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebHarrathi Mohamed
 
présentation soutenance PFE.ppt
présentation soutenance PFE.pptprésentation soutenance PFE.ppt
présentation soutenance PFE.pptMohamed Ben Bouzid
 
Kit pour protéger ses données personnelles en bibliothèque
Kit pour protéger ses données personnelles en bibliothèqueKit pour protéger ses données personnelles en bibliothèque
Kit pour protéger ses données personnelles en bibliothèqueThomas Fourmeux
 
Android Studio, premier contact
Android Studio, premier contactAndroid Studio, premier contact
Android Studio, premier contactJasmine Conseil
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaNazih Heni
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Riadh K.
 
360View sécurité Business Objects
360View sécurité Business Objects360View sécurité Business Objects
360View sécurité Business ObjectsSebastien Goiffon
 
Angularjs Anti-patterns
Angularjs Anti-patternsAngularjs Anti-patterns
Angularjs Anti-patternsSteven Lambert
 
JFTL2015 - Comment tester les performances ressenties par l’utilisateur d’une...
JFTL2015 - Comment tester les performances ressenties par l’utilisateur d’une...JFTL2015 - Comment tester les performances ressenties par l’utilisateur d’une...
JFTL2015 - Comment tester les performances ressenties par l’utilisateur d’une...Cedric GAUTIER
 
Android pour les debutants
Android pour les debutantsAndroid pour les debutants
Android pour les debutantsAmira Hakim
 
Pictures of the Future Siemens Printemps 2012
Pictures of the Future Siemens Printemps 2012Pictures of the Future Siemens Printemps 2012
Pictures of the Future Siemens Printemps 2012SiemensFrance
 
Livre LabVIEW 2015 : Programme et Applications
Livre LabVIEW 2015 : Programme et ApplicationsLivre LabVIEW 2015 : Programme et Applications
Livre LabVIEW 2015 : Programme et ApplicationsLuc Desruelle
 
Livre LabVIEW : Programmation et applications
Livre LabVIEW : Programmation et applicationsLivre LabVIEW : Programmation et applications
Livre LabVIEW : Programmation et applicationsLuc Desruelle
 
Getting started with LabVIEW
Getting started with LabVIEWGetting started with LabVIEW
Getting started with LabVIEWYomna Eid
 
Wincc plant-intelligence
Wincc plant-intelligenceWincc plant-intelligence
Wincc plant-intelligenceAbdoul Karim
 
Certificate of completion
Certificate of completion Certificate of completion
Certificate of completion Bilal Jamjama
 

En vedette (20)

Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site Web
 
présentation soutenance PFE.ppt
présentation soutenance PFE.pptprésentation soutenance PFE.ppt
présentation soutenance PFE.ppt
 
Kit pour protéger ses données personnelles en bibliothèque
Kit pour protéger ses données personnelles en bibliothèqueKit pour protéger ses données personnelles en bibliothèque
Kit pour protéger ses données personnelles en bibliothèque
 
Android Studio, premier contact
Android Studio, premier contactAndroid Studio, premier contact
Android Studio, premier contact
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédia
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Smart Taxi (Tunisie)
Smart Taxi (Tunisie)Smart Taxi (Tunisie)
Smart Taxi (Tunisie)
 
Ndk 2013 03-01-paug
Ndk 2013 03-01-paugNdk 2013 03-01-paug
Ndk 2013 03-01-paug
 
360View sécurité Business Objects
360View sécurité Business Objects360View sécurité Business Objects
360View sécurité Business Objects
 
Smi cop8[1]
Smi cop8[1]Smi cop8[1]
Smi cop8[1]
 
Angularjs Anti-patterns
Angularjs Anti-patternsAngularjs Anti-patterns
Angularjs Anti-patterns
 
JFTL2015 - Comment tester les performances ressenties par l’utilisateur d’une...
JFTL2015 - Comment tester les performances ressenties par l’utilisateur d’une...JFTL2015 - Comment tester les performances ressenties par l’utilisateur d’une...
JFTL2015 - Comment tester les performances ressenties par l’utilisateur d’une...
 
Android pour les debutants
Android pour les debutantsAndroid pour les debutants
Android pour les debutants
 
Cours 1 Android
Cours 1 AndroidCours 1 Android
Cours 1 Android
 
Pictures of the Future Siemens Printemps 2012
Pictures of the Future Siemens Printemps 2012Pictures of the Future Siemens Printemps 2012
Pictures of the Future Siemens Printemps 2012
 
Livre LabVIEW 2015 : Programme et Applications
Livre LabVIEW 2015 : Programme et ApplicationsLivre LabVIEW 2015 : Programme et Applications
Livre LabVIEW 2015 : Programme et Applications
 
Livre LabVIEW : Programmation et applications
Livre LabVIEW : Programmation et applicationsLivre LabVIEW : Programmation et applications
Livre LabVIEW : Programmation et applications
 
Getting started with LabVIEW
Getting started with LabVIEWGetting started with LabVIEW
Getting started with LabVIEW
 
Wincc plant-intelligence
Wincc plant-intelligenceWincc plant-intelligence
Wincc plant-intelligence
 
Certificate of completion
Certificate of completion Certificate of completion
Certificate of completion
 

Similaire à Etude des aspects de sécurité Android & Audit d'une application Android

Sécurité android par Philippe Prados 25/07/2012
Sécurité android par Philippe Prados 25/07/2012Sécurité android par Philippe Prados 25/07/2012
Sécurité android par Philippe Prados 25/07/2012Paris Android User Group
 
Sécurité Android, comment l'exploiter
Sécurité Android, comment l'exploiterSécurité Android, comment l'exploiter
Sécurité Android, comment l'exploiterOCTO Technology
 
OCTO - Sécurité android
OCTO - Sécurité androidOCTO - Sécurité android
OCTO - Sécurité androidOCTO Technology
 
Reverse-Engineering Pour le Fun et le Profit
Reverse-Engineering Pour le Fun et le ProfitReverse-Engineering Pour le Fun et le Profit
Reverse-Engineering Pour le Fun et le ProfitSoufiane Tahiri
 
Le modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsLe modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsMicrosoft
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdfRihabBENLAMINE
 
chapitre-1-introduction-plateforme-android (2).pdf
chapitre-1-introduction-plateforme-android (2).pdfchapitre-1-introduction-plateforme-android (2).pdf
chapitre-1-introduction-plateforme-android (2).pdfolfaharrabi2
 
Matinée6 solutions professionnelles de sécurité KES
Matinée6   solutions professionnelles de sécurité KESMatinée6   solutions professionnelles de sécurité KES
Matinée6 solutions professionnelles de sécurité KESALTITUDE CONCEPT SPRL
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)TECOS
 
Windows Phone 8 et la sécurité
Windows Phone 8 et la sécuritéWindows Phone 8 et la sécurité
Windows Phone 8 et la sécuritéMicrosoft
 
Introduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfIntroduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfmed_univ78
 
Chapitre 1-introduction-plateforme-android
Chapitre 1-introduction-plateforme-androidChapitre 1-introduction-plateforme-android
Chapitre 1-introduction-plateforme-androidSalah Gharbi
 
unité 2.pptx
unité 2.pptxunité 2.pptx
unité 2.pptxBahaty1
 
Présentation SOPHOS EVENEMENT Le Datacenter "Next-Generation" - NUTANIX - ACR...
Présentation SOPHOS EVENEMENT Le Datacenter "Next-Generation" - NUTANIX - ACR...Présentation SOPHOS EVENEMENT Le Datacenter "Next-Generation" - NUTANIX - ACR...
Présentation SOPHOS EVENEMENT Le Datacenter "Next-Generation" - NUTANIX - ACR...Acropolis Telecom
 

Similaire à Etude des aspects de sécurité Android & Audit d'une application Android (20)

Sécurité android par Philippe Prados 25/07/2012
Sécurité android par Philippe Prados 25/07/2012Sécurité android par Philippe Prados 25/07/2012
Sécurité android par Philippe Prados 25/07/2012
 
Chapitre 4 sem
Chapitre 4 semChapitre 4 sem
Chapitre 4 sem
 
Sécurité Android, comment l'exploiter
Sécurité Android, comment l'exploiterSécurité Android, comment l'exploiter
Sécurité Android, comment l'exploiter
 
OCTO - Sécurité android
OCTO - Sécurité androidOCTO - Sécurité android
OCTO - Sécurité android
 
Architecture android
Architecture androidArchitecture android
Architecture android
 
Baudoin karle-ids-ips
Baudoin karle-ids-ipsBaudoin karle-ids-ips
Baudoin karle-ids-ips
 
Reverse-Engineering Pour le Fun et le Profit
Reverse-Engineering Pour le Fun et le ProfitReverse-Engineering Pour le Fun et le Profit
Reverse-Engineering Pour le Fun et le Profit
 
Le modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsLe modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows Apps
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdf
 
chapitre-1-introduction-plateforme-android (2).pdf
chapitre-1-introduction-plateforme-android (2).pdfchapitre-1-introduction-plateforme-android (2).pdf
chapitre-1-introduction-plateforme-android (2).pdf
 
Développement sécurisé
Développement sécuriséDéveloppement sécurisé
Développement sécurisé
 
Android introvf
Android introvfAndroid introvf
Android introvf
 
Matinée6 solutions professionnelles de sécurité KES
Matinée6   solutions professionnelles de sécurité KESMatinée6   solutions professionnelles de sécurité KES
Matinée6 solutions professionnelles de sécurité KES
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
 
Windows Phone 8 et la sécurité
Windows Phone 8 et la sécuritéWindows Phone 8 et la sécurité
Windows Phone 8 et la sécurité
 
Windows Phone 8 et la sécurité
Windows Phone 8 et la sécuritéWindows Phone 8 et la sécurité
Windows Phone 8 et la sécurité
 
Introduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfIntroduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdf
 
Chapitre 1-introduction-plateforme-android
Chapitre 1-introduction-plateforme-androidChapitre 1-introduction-plateforme-android
Chapitre 1-introduction-plateforme-android
 
unité 2.pptx
unité 2.pptxunité 2.pptx
unité 2.pptx
 
Présentation SOPHOS EVENEMENT Le Datacenter "Next-Generation" - NUTANIX - ACR...
Présentation SOPHOS EVENEMENT Le Datacenter "Next-Generation" - NUTANIX - ACR...Présentation SOPHOS EVENEMENT Le Datacenter "Next-Generation" - NUTANIX - ACR...
Présentation SOPHOS EVENEMENT Le Datacenter "Next-Generation" - NUTANIX - ACR...
 

Etude des aspects de sécurité Android & Audit d'une application Android

  • 1. PROJET FIN DE FORMATION Etude des aspects de sécurité Audit d'une application Android UNIVERSITE MOHAMMED V AGDAL FACULTE DES SCIENCES Encadré par: Pr. Ghizlane Orhanou Pr. Said EL HAJJI Réalisé par: Mr. Saad DARDAR
  • 2. PROJET FIN DE FORMATION Etude des aspects de sécurité Audit d'une application Android 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
  • 3. Plan de la présentation : Introduction I. Etude des aspects de sécurité du système d’exploitation Android : II. Principes de développement sécurisé des applications Android III. Audit d’une application Android (RadioMAv2) : Conclusion
  • 4. Introduction Développement sécurisé
  • 5. I. Etude des aspects de sécurité du système d’exploitation Android : 1. Architecture d’Android 2. ROM et accès root 3. Modèle de sécurité 4. Protection des données 5. Android, IOS, Windows phone 7.
  • 6. Architecture du système d’exploitation Android : Shema Architecture Android
  • 7. Architecture du système d’exploitation Android - Le noyau Linux :  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 logicielle.  Gère les services du système.  Linux est le cœur du système Android mais il n’est pas une distribution linux.
  • 8. Architecture du système d’exploitation Android - Les bibliothèques (librairies) : •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. •SQLite. L’un des meilleures Bases de données (rapide, légère et puissante). •FreeType : gérant les bitmap et le rendu des polices •SurfaceFlinger. Pour l’accès au sous -système d'affichage. •LibWebCore. un moteur de navigateur web (tourne, à la fois le navigateur Android et une vue web intégrable). •Skia. Moteur graphique 2D •Bibliothèques multimédias (MPEG4, MP3, JPG …etc.) •OpenGL ES (3D)
  • 9. Architecture du système d’exploitation Android - Le moteur d’exécution Android (Android Runtime)  Un moteur d'exécution, bibliothèque d'exécution ou runtime est un système logiciel qui permet l'exécution de programmes dans un langage de programmation donné, dans le cas du système Android on parle de Java.
  • 10. Architecture du système d’exploitation Android - Le moteur d’exécution Android (Android Runtime) Schéma qui indique les étapes nécessaries à la compilatio n et à l’exécutio n d'un pro gramme Android standard .
  • 11. Architecture du système d’exploitation Android - Application et Framework pour les applications
  • 12. Architecture du système d’exploitation Android - Application et Framework pour les applications  La seule couche visible et accessible par l’utilisateur final.  Un ensemble de programmes de base que l’on peut trouver sur Android (SMS, calendrier, photos, web et autres).  Toutes ces applications sont développées à l’aide du langage de programmation Java.  le Framework du système Android permet aux développeurs, en leurs fournissant divers API, de créer des applications riches et innovantes.
  • 13. ROM et accès root :
  • 14. ROM et accès root :  STOCK ROM : c’est la ROM standard (officielle), le matériel vient avec cette version pré -installé.  CUSTOM ROM : c’est la ROM non officielle personnalisée qu’on peut installer sur notre matériel, il existe trois sortes de cette ROM : • Celles qui permettent de booster la vitesse et la stabilité du matériel (Smartphone, Tablette,…) • Celles qui permettent d'installer une version Android normalement non compatible avec un matériel • Celles qui permettent de rajouter de nombreuses fonctionnalités.
  • 15. ROM et accès root : Rooting tout simplement c’est avoir les droits d’administrateur et c’est à l’aide d’un petit logiciel nommé « SU » qui nous rend super -utilisateur (Super-user).  Elargi les capacités du matériel Android.  Permet d'installer n'importe quelle application.  Exécuter toutes sortes de commandes normalement inaccessible aux utilisateurs .
  • 16. ROM et accès root : Le root est une manipulation assez dangereuse qui comporte des risques. Presque dans tout les cas car lorsqu’on root notre Smartphone par exemple on perd notre garantie chez le fournisseur ou lorsqu’on installe une application il peut avoir le privilège de ce mode (root) et ainsi avoir la main sur des données personnelles ou fichiers du système.
  • 18. 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 formalisme permettant de représenter, de façon claire et non-ambiguë, la politique de sécurité.  On modélise : • Pour mieux comprendre le système qu’on développe. • Pour visualiser ses propriétés. • Pour spécifier sa structure ou son comportement. • Pour documenter et guider sa construction, etc .
  • 19. Modèle de sécurité - Définition d’un modèle de sécurité Les modèles de sécurité peuvent être classés en deux grandes familles : • Des modèles généraux, qui sont plutôt des méthodes de description formelle, pouvant s’appliquer à toute sorte de politiques. • Des modèles spécifiques, développés pour représenter une politique d’autorisation particulière.
  • 20. Modèle de sécurité - Signature numérique  Quand le développeur veut publier une application sur Google Play, il doit payer pour acquérir un certificat et signé ainsi l’application pour qu’elle soit reconnue par Google. Cette pratique existe sur la plupart des systèmes (Symbian Signed, IOS de Apple,…).  Les applications modifiées par un virus ou par un pirate invalide automatiquement la signature numérique, cependant il existe des options sur le système Android qui permet d’installer ces applications non signées.
  • 21. Modèle de sécurité - Isolation  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 consistent à l'isolation des applications.  A l'installation d'une application on lui attribut un compte Unix (uid).  Si des applications sont signées par le même certificat, elles peuvent alors partager le même utilisateur.  Lors de l'installation de l'application on lui attribut un répertoire privé, chemin par défaut : /data/data/app_package_name , ce répertoire ou seulement les fichiers de ce dernier, peuvent être partagés entre des applications différentes en modifiant les droits d'accès du système.
  • 22. Modèle de sécurité - Isolation Les applications Android n'utilise pas directement le matériel (hardware) car elles n'ont pas l'accès aux périphériques (/dev/*) ce n'est pas le même cas du système Linux, c’est pourquoi elles utilisent un processus le 'system_app' qui permet de contrôler les privilèges avant de passer à l'exécution
  • 23. Protection des données - Cryptage (chiffrement) La cryptographie ou chiffrement des données c’est un ensemble de techniques permettant de chiffrer des données, c'est -à-dire permettant de les rendre inintelligibles sans une action spécifique. Le système Android comme tous les systèmes propose des API pour cela comme « javax.crypto », mais ils doivent être bien utilisées si non l’utilisation de ces derniers n’aura pas d’effet .
  • 24. Protection des données - Cryptage (chiffrement) 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 cas :  Lors de son installation on génère un fichier chiffré avec l’application plus ses données.  Lorsque le système veut accéder à l’application il doit monter un disque virtuel par application afin de déchiffrer ses données. Malgré ce système de protection il est possible de le surpasser et déchiffrer ainsi les données.
  • 25. Protection des données - Sécurité des communications  Afin de protéger les applications qui utilisent des communications réseaux sous le système Android, des API sont conçues. Ces API exploitent les technologies TLS et SSL. L’utilisation de ces derniers permet : • L'authentification mutuelle du serveur et du client. • Le chiffrement et la vérification de l'intégrité des connexions.  Pour les entreprises et afin de protéger leur applications, ils utilisent des connexions VPN (réseau privé virtuel) qui repose sur un protocole, appelé protocole de tunnelisation (tunneling) : • Un protocole permettant aux données passant d'une extrémité du VPN à l'autre. • D'être sécurisées par des algorithmes de cryptographie.
  • 26. Android, IOS, Windows pho ne 7. Android IOS ‘Apple’ Window s mobile 7 A l ' i n s t a l l a t i on d ' u n e To u r n e s o u s u n s e u l Utilise des chambres. a p p l i c a t i o n o n l u i a t t r i b ut u t i l i s a t e ur « m o b i l e » . ( Tr u s t e d C o m p u t i n g B a s e : un compte Unix (UID). t o u s l e s p r i v i l è ge s . . .) S i d e s a p p l i c at i on s s o n t signées par le même certificat, elles peuvent alors partager le même u t i l i s a t e ur. P o u r c h a q u e a p p l i c a t i on i l P o u r c h a q u e a p p l i c a t i on i l P o u r c h a q u e a p p l i c a t i on i l e x i s t e u n r é p e r t oi r e p r i v é . e x i s t e u n r é p e r t oi r e p r i v é . e x i s t e u n r é p e r t oi r e p r i v é . C e r é p e r t oi r e o u s e u l e m e nt L e s c o m m u n i c a t i ons e n t r e Wi n d ow s P h o n e n e p e r m e t l e s f i c h i e r s d e c e d e r n i e r, a p p l i c a t i o ns s e f o n t à p a s l e p a r t a ge d e s f i c h i e r s p e u v e nt ê t r e p a r t a g é s e n t r e travers une copie des d ' u n e a p p l i c a t i on d e s a p p l i c a t i ons f i c hi e r s d ' u n e a p p l i c a t i o n à d i f f ér e nt e s e n m o d i f i an t l e s une autre. d r o i t s d ' a c c è s d u s ys t è m e . L e s ys t è m e An d r o i d c o m m e P o u r l e c h i f f r e m e nt , u n P o u r l e c h i f f r e m e nt , o n a t o u s l e s s ys t è m e s p r o p o s e c o m p o s a nt é l e c t r oni qu e accès à toute une couche d e s AP I p o u r c e l a e s t i n c l us d a n s l e s de sécurité qui est très t e r m i na u x . simple à utiliser et qui i n c l ut l e s a l g o r i t hm e s l e s p l u s c l a s s i q ue s .
  • 27. II. Principes de développement sécurisé des applications Android 1. Validation des entrées 2. Les situations de concurrence (race condition) 3. Les fichiers 4. Les Permissions 5. Protection contre les attaques
  • 28. Validation des entrées : Les données venant vers une application soit directement entrées par l’utilisateur ou indirectement via une autre application ou par réseau ne sont pas tout le temps des données fiables Ce problème (validation des entrées) existe aussi sous Android et peut causer plusieurs attaques, les plus connues sont :  Débordement de tampon (Buffer Overflow en anglais).  SQL injection.  Ingénierie sociale (social engineering en anglais).
  • 29. Les situations de concurrence (race condition):  Le principe général : 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 par un autre processus puis se l'approprie et l'emploie à sa guise.  Le problème : Survient lorsqu'un autre processus profite du laps de temps s'écoulant entre la vérification et l'accès effectif pour s'attribuer la même ressource.
  • 30. Les situations de concurrence (race condition):  Les conséquences : - On se retrouve dans des situations de blocages définitifs des deux processus. - Dans les cas plus pratiques, ce comportement mène à des dysfonctionnements parfois graves de l'application. - Des véritables failles de sécurité quand un des processus profite indûment des privilèges de l'autre.  Le système Android nous permet de parvenir un service d'une autre application via un thread différent ce qui permet l'existence d'une situation de concurrence cependant d'autres systèmes, IOS ou Windows phone n'ont pas le même problème, car il est impossible d'avoir un traitement en tâche de fond.
  • 31. Les fichiers:  Chaque application possède son propre répertoire avec ses propres fichiers.  Il est possible qu'une application partage ces fichiers, ça dépend des permissions.  La liste des différentes permissions pour la création d'un fichier dans la mémoire interne : MODE_PRIVATE crée un fichier (ou remplace l'existant), il ne sera disponible que pour notre application . • MODE_APPEND crée un fichier • MODE_WORLD_READABLE accès en lecture par les autres applications • MODE_WORLD_WRITEABLE accès en écriture par les autres applications • MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE accès en lecture et écriture par tous.
  • 32. Les Permissions - Les permissions des applications Quand on veut installer une application, cette dernière demande à l’utilisateur des permissions. Ces permissions qui sont demandées doivent être inscrites dans un fichier ‘AndroidManifest.xml’. Exemple:
  • 33. Les Permissions - Les permissions des applications Ces permissions dans Android peuvent être regroupées en quatre catégories : • Normale • Dangereux • Signature • SignatureOrSystem
  • 34. Les Permissions - Les permissions des composants Une application sous Android est un ensemble de composants rassemblés grâce à un fichier de configuration, c’est le fichier AndroidManifest. Ces principaux concepts sont :  Activité : Les vues : Les contrôles : (boutons, champs de saisie, etc.) Le fichier de configuration (sous format XML) : • le point d’entrée de l’application (quel code doit être exécuté au démarrage de l’application) ; • quels composants constituent ce programme ; • les permissions nécessaires à l’exécution du programme.
  • 35. Protection contre les attaques – Désassemblage.  Le désassemblage est l'action inverse de l'assemblage. Il existe des outils qui ont la possibilité de surpasser la protection et les verrous classiques, d'extraire le code de l'application et même réassembler le code (exemple d'outils : Smali, Baksmali, Dedexer, AntiLVL).  Pour protéger son code contre ces outils : • Utiliser des "Class Loaders" • Des chaînes de caractères cryptées • Des outils d'obfuscation (ProGuard) • Intégration d'un code dans l'application afin de détecte son intégrité ainsi savoir si son code a été modifié en effectuant une vérification de signature
  • 36. Protection contre les attaques - Débogage des applications.  Avec le débogueur vous pouvez observer le comportement de votre programme au moment de l'exécution et déterminer l'emplacement des erreurs de logique.  Les applications sous le système Android n'échappent pas aux débogages, car ce traitement n'est pas fait pour les attaquants, mais pour les développeurs afin de remonter des bugs via plusieurs outils comme « DDMS » qui se trouve dans le SDK Android.  Afin d’éviter le débogage on met dans la valeur de l’attribut « android:debuggable » la valeur « false »
  • 37. III. Audit d’une application Android (RadioMAv2) : 1. Introduction à l’audit d’une application 2. Arborescence d’une application Android 3. Récupération, désassemblage et débogage d’une application Android 4. Étude du code et du comportement de l’application Android: 5. Assemblage et signature de l’application Android: 6. Sécurisation de l’application Android
  • 38. Audit d’une application Android (RadioMAv2) : Introduction à l’audit d’une application 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 conseil en sécurité. L'audit peut être effectué dans différents buts, notamment vérifier si :  les contrôles en place sont opérationnels et sont suffisants,  les données saisies, stockées ou produites par les traitements sont de bonnes qualités,  les traitements sont efficaces et donnent les résultats attendus,  l'application est correctement documentée,  les procédures mises en œuvre dans le cadre de l'application sont à jour et adaptées,  l'exploitation informatique de l'application se fait dans de bonnes conditions,  la fonction ou le processus couvert par l'application sont efficaces et productifs
  • 39. Audit d’une application Android (RadioMAv2) : Introduction à l’audit d’une application L'audit sécurité peut se faire de plusieurs manières, cette tâche est difficile à modéliser, mais on peut identifier des lignes principales :  Récupérer l'application  Désassemblage de l'application  Décompiler le bytecode (dans le cas ou c'est possible)  Déboguer l'application  Etudier le code  Sniffer les communications.
  • 40. Audit d’une application Android (RadioMAv2) : Arborescence d’une application Android : l’arborescence d’un projet par défaut créer avec l’IDE Eclipse
  • 41. Audit d’une application Android (RadioMAv2) : Arborescence d’une application Android : src : Ce dossier contient les sources de votre application (code JAVA) et les packages. gen: Contient le code source produit par les outils de compilation. assets : Contient des données non internationalisées qui seront utilisées dans votre application (images, vidéos, licence…etc). Res : Contient les ressources du projet (interface, image, …). AndroidManifest.xml : Définit le comportement de votre application au système Android. Ce fichier définit par exemple (Le nom, l’icône, la version min du SDK, les activités, les services, etc…).
  • 42. Audit d’une application Android (RadioMAv2) : Arborescence d’une application Android : fichiers qui se trouvent dans un package (application Android . APK)
  • 43. Audit d’une application Android (RadioMAv2) : Arborescence d’une application Android : AndroidManifest.xml : Définit les propriétés et activités de l'application (Format XML encodé pour Android) classes.dex: Fichier au format DEX contenant le code de l'application Res : Contient les ressources du projet (interface, image, …). resources.arsc : contient des ressources compilés dans un format binaire; peut inclure des images, des chaînes ou d'autres données utilisées par l’application Android.
  • 44. Audit d’une application Android (RadioMAv2) : Arborescence d’une application Android : META-INF : dossier contient les données qui sont utilisées pour assurer l'intégrité du package APK et la sécurité du système. Il contient trois fichiers :  MANIFEST.MF: c’est le fichier Manifest, Il permet de faire de nombreuses choses en plus de déclarer les composants de l'application, comme nommer les librairies avec lesquelles l'application a besoin d'être liée (en plus de la librairie Android) et identifier les permissions dont l'application a besoin.  CERT.RSA: le certificat de l’application.  CERT.SF: c’est la liste des ressources et SHA -1 (un ensemble de fonctions de hachage cryptographiques) supportés dans l’application.
  • 45. Audit d’une application Android (RadioMAv2) : RadioMa v2 : 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 prendre l'application RadioMA v2.0 - Maroc (développé par Ayoub DARDORY) qui est gratuite et qui nous permet d'écouter la majorité des stations radios Marocaines qui diffusent en ligne.
  • 46. Audit d’une application Android (RadioMAv2) : Récupération, désassemblage et débogage d’une application Android : Etapes pour lister les applications Android installées
  • 47. Audit d’une application Android (RadioMAv2) : Récupération, désassemblage et débogage d’une application Android : Commande pour récupérer l’application Android « com.radioma-1.apk »
  • 48. Audit d’une application Android (RadioMAv2) : Désassemblage et débogage de l’application Android : Commande pour désassembler l’application Android « com.radioma-1.apk »
  • 49. Audit d’une application Android (RadioMAv2) : Désassemblage et débogage de l’application Android : •Res : contient les ressources du projet (interface, image, …). •Smali : contient les codes sources ayant la forme du langage Smali (signifie « assembleur » en islandais) et qui utilise la syntaxe Jasmin (Jasmin est un langage d'assemblage d'instructions de la machine virtuelle Java, ou de façon plus concise, un assembleur de Bytecode Java. •AndroidManifest.xml : Définit le comportement de votre application au système Android.
  • 50. Audit d’une application Android (RadioMAv2) : Désassemblage et débogage de l’application Android : Débogage de l’application Android Lors de l’exécution de la commande : > adb.exe logcat
  • 51. Étude du code et du comportement de l’application Android: Etude du fichier AndroidManifest.xml : • android:debuggable="false" nous fait savoir que le développeur a annulé le débogage de l’application. • <uses-permission android:name="android.permission.INTERNET" /> Permission d’utiliser internet. Le nom du package : package="com.radioma"
  • 52. Étude du code et du comportement de l’application Android: Etude du répertoire « res » : Dans le premier « com.radioma-1resvalues » il existe des chaines de caractères par défaut, exemple « le fichier strings.xml » : </string> <string name="app_name">RadioMA</string> // le nom de l’application <string name="loading_error">Loading error</string> // Si une erreur survient
  • 53. Étude du code et du comportement de l’application Android: Etude du répertoire « smali » : Exemple : « Station.smali » : .class public Lcom/radioma/Station; // Le nom de la classe « Station » et le chemin du fichier lors de l’exécution. .super Ljava/lang/Object; //hérite de l'objet (qui peut être l'activité, vue, etc) .source "Station.java" // Le nom original du fichier Java dans notre cas c’est « Station.java »
  • 54. Étude du code et du comportement de l’application Android: Etude des communications : Wireshark en cours de capture de paquets et avec comme filtre « http »
  • 55. Étude du code et du comportement de l’application Android: Etude des communications : Analyse d’un paquet sur Wireshark
  • 56. Étude du code et du comportement de l’application Android: Etude des communications : site radioma.ma et ces répertoires (app, update, version4, version5 …)
  • 57. Étude du code et du comportement de l’application Android: Assemblage et signature de l’application Android : Commande pour assembler notre application Android
  • 58. Étude du code et du comportement de l’application Android: Assemblage et signature de l’application Android : installation de l’application Android / message d’erreur causé par la signature.
  • 59. Étude du code et du comportement de l’application Android: Assemblage et signature de l’application Android : signature et installation d’application Android.
  • 60. Sécurisation de l’application Android « RadioMa v2 : Google Play : 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 dernier. if("com.google.android.feesback".equals( getPackageManager().getInstallerPackageName(getPacka geName()))) { // Si l’application est installé via Google Play return false; }
  • 61. Sécurisation de l’application Android « RadioMa v2 : Emulateur : On peut détecter si une application Android est dans un émulateur si on ajoute ce code. String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID); if (android_id == null){ // L’application tourne sous un émulateur, alors il faut l’arrêter. }
  • 62. Sécurisation de l’application Android « RadioMa v2 : Serveur : 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, on peut signer l’application avec la même signature du domaine ou essayer de créer un identifiant Oui, il est préférable d’utiliser le protocole http en employant une syntaxe basée sur la notation XML, mais il est préférable d’utiliser la compression GZIP pour toutes les requêtes. 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 l’accès à la géolocalisation, à JavaScript etc.