0% ont trouvé ce document utile (0 vote)
13 vues105 pages

Guide de Sécurité des Applications Mobiles

Le guide de codage pour développeurs mobiles aborde la sécurité des applications, y compris des techniques de stockage de données, de cryptographie, d'authentification et de gestion de session. Il présente également des méthodes d'analyse statique et dynamique pour identifier les vulnérabilités, ainsi que des recommandations pour assurer la sécurité des communications réseau. Enfin, il souligne l'importance de la qualité du code et des paramètres de construction pour le développement d'applications mobiles sécurisées.

Transféré par

Mahdi Khaldi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
13 vues105 pages

Guide de Sécurité des Applications Mobiles

Le guide de codage pour développeurs mobiles aborde la sécurité des applications, y compris des techniques de stockage de données, de cryptographie, d'authentification et de gestion de session. Il présente également des méthodes d'analyse statique et dynamique pour identifier les vulnérabilités, ainsi que des recommandations pour assurer la sécurité des communications réseau. Enfin, il souligne l'importance de la qualité du code et des paramètres de construction pour le développement d'applications mobiles sécurisées.

Transféré par

Mahdi Khaldi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

M OBILE

DEVELOPER
CODING GUIDE

Session : 02/2025
S O MMAIRE
• Intro to Mobile App Security
• Data Storage & Privacy Techniques
• Cryptography
• Authentication & Session Management
• Secure Network Communications
• Platform Features & Interaction
• Code Quality & Build Settings
• Defense-in-Depth
INTRO TO
M OBILE
APP
SECURITY
I NTRO TO MOBI LE APP SECU RI TY

Les applications mobiles sont utilisées à des fins


commerciales, dans les domaines de la santé, de la
banque, etc.

Les pentesters et développeurs peuvent trouver et


corriger les vulnérabilités, pour réduire les risques liés à
la confidentialité, l'intégrité et la disponibilité.
I NTRO TO MOBI LE APP SECU RI TY

Android & Apple = 99%


du marché
INTRO TO MOBILE APP SECURIT Y
I NTRO TO MOBI LE APP SECU RI TY

- iOS créé par Apple en 2007 - Créé et détenu par Google


- Kernel basé sur BSD (Unix-like) - Lancé en 2008
- Langages : C,C++, Swift - Kernel basé sur Linux
- Compatible uniquement avec - Langages : C,C++, Java et d’autres
iPhone et iPad - Compatible avec tout smartphone
- Application Dev : langage Swift - Application Dev : Java & Kotlin
I NTRO TO MOBI LE APP SECU RI TY

Android CPU : ARM (Advanced Risc Machine)


I NTRO TO MOBI LE APP SECU RI TY
Applications : Correspond à l’installation et l'exécution des
applications individuelles. Pour le courrier électronique, la
messagerie SMS, les calendriers, la navigation sur internet, les
contacts, etc.

Application Framework : Expose les API du système pour les


fonctionnalités communes que de nombreuses applications utilisent
régulièrement : éléments visuels, partage des données, fonction
téléphone et GPS.

Librairies : Contient des bibliothèques C et C++ qui gèrent des


processus tels que les graphiques, le dessin, le chiffrement réseau, la
multimédia, rendu d'images. La plateforme comprend plusieurs
bibliothèques telles que SSL, libc, Graphics, SQLite, Webkit, Media,
Surface Manager, OpenGL et d'autres.

Android Runtime: Le moteur d'exécution Android se compose de


bibliothèques de base et du moteur virtuel Dalvik. C’est le moteur
qui pilote les applications et les bibliothèques. Dalvik (DVM),
comme la machine virtuelle Java, est une machine virtuelle (JVM)
basée sur les registres.

Linux Kernel : C’est le noyau qui relie toutes les couches


supérieures. Elle gère également la mémoire, les processus et la
gestion de l'énergie, tout le fonctionnement de l'appareil, tels que
les pilotes d'affichage, de caméra, de Bluetooth, d'audio, de mémoire,
etc.
I NTRO TO MOBI LE APP SECU RI TY
Android Package Kit META-INF : Contient des informations de vérification générées lors
de la signature de l'application.

Assets : Contient les ressources que les développeurs intègrent à


l'application et qui peuvent être récupérées par l'AssetManager.
Cela peut-être : des images, des vidéos, des documents, des bases
de données, etc.

lib : Contient des bibliothèques natives avec du code compilé, pour


différentes architectures d'appareils.

res : Contient des ressources d'application prédéfinies, comme des


fichiers XML qui définissent une liste de couleurs, la disposition de
l'interface utilisateur etc.

[Link] : Un fichier manifeste qui décrit le nom du


package de l'application, les activités, les ressources, la version, etc.

[Link] : Contient toutes les classes Java dans un format de


fichier dex (Dalvik Executable), à exécuter par le moteur
d'exécution Android.

[Link] : Contient les ressources précompilées. Il contient


des informations qui vont lier le code aux ressources.
INTRO TO MO BILE APP S ECURIT Y
Répertoires importants

/data/data: /data/user/0:
/data/app: Contient
Contient toutes les Contient les données
les APK installées par
applications installées que seul l’application
l’utilisateur
par l’utilisateur peut accéder
INTRO TO MO BILE APP S ECURIT Y
Répertoires importants

/system/app:
/system/bin: /data/local/tmp:
Contient les
Contient les fichiers Répertoire ouvert en
applications pré-
binaires. écriture à tous
installées
INTRO TO MO BILE APP S ECURIT Y
Répertoires importants

/data/misc/user/0/c
/data/misc/wifi:
/data/system: acerts-added:
Contient les fichiers
Contient les fichiers Contient les
de configurations wi-
de configurations certificats ajoutés par
fi
l’utilisateur
INTRO TO MO BILE APP S ECURIT Y
Répertoires importants

/etc/security/cacerts/: /sdcard: Contient un


Magasin de certificats lien symbolique vers
système. Interdit aux DCIM, Downloads,
utilisateurs non-root. Music, Pictures, etc.
INTRO TO
MOBILE
APP
SECURIT Y
Android Pentesting
I NTRO TO MOBI LE APP SECU RI TY
Pentest
I NTRO TO MOBI LE APP SECU RI TY
Pentest
I NTRO TO MOBI LE APP SECU RI TY

Android Pentesting

Consiste à trouver des failles dans les applications, à


l'aide d'une variété de techniques et d'outils,
similaire à un pentest classique.

Méthodes

Static analysis: Tester le code de l’app sans


l’exécuter.

Dynamic analysis: Tester le code de l’app en


l’exécutant dynamiquement

Vulnérabilités

Les mêmes failles de sécurité que lors d’un pentest


classique : SQL injection, XSS, RCE etc ..
I NTRO TO MOBI LE APP SECU RI TY

TOP 10
I NTRO TO MOBI LE APP SECU RI TY
I NTRO TO MOBI LE APP SECU RI TY
Static Analysis
I NTRO TO MOBI LE APP SECU RI TY
Static Analysis : Tools

Dex2jar : Convertit les fichiers .dex en fichiers .class,


compressés dans un fichier jar.

JD-GUI : Un utilitaire graphique autonome qui affiche


les sources Java à partir de fichiers CLASS.

JADX : Outils en ligne de commande et d'interface


graphique pour produire du code source Java à partir
de fichiers Android Dex et APK.

APKTOOL : Outil de rétro-ingénierie pour les applications


Android.
I NTRO TO MOBI LE APP SECU RI TY
Static Analysis : apktool

Objectif : Trouver des informations intéressantes


Trouver des mots de passe, des clés api d'URL, des tokens et tout ce qui est ne
devrait pas s’y trouver de confidentiel.
I NTRO TO MOBI LE APP SECU RI TY
Burp Suite : Un ensemble d'outils utilisés pour les tests de
pénétration des applications web, fonctionne avec un proxy
pour intercepter les requêtes.

Frida : Une boîte à outils d'instrumentation dynamique pour


les dév eloppeurs, les ingénieurs inverses et les chercheurs en
sécurité.

Objection : Une boîte à outils d'exploration mobile en cours


d'exécution, alimentée par Frida, conçue pour aider à
évaluer le niveau de sécurité des applications mobiles, sans
nécessiter de jailbreak.

Ghidra : Suite d'outils de rétro-ingénierie logicielle (SRE)


développée par la NSA.

MobSF : Mobile Security Framework (MobSF) est un outil


automatisé et tout-en-un de test d'applications mobiles,
d'analyse de logiciels malveillants et d'évaluation de la
sécurité, capable d'effectuer des analyses statiques et
dynamiques.
I NTRO TO MOBI LE APP SECU RI TY
Dynamic Analysis

ADB :

Android Debug Bridge est un utilitaire en ligne


de commande qui permet de se connecter à
un appareil et d'effectuer plusieurs actions
comme l'installation et lancement
d'applications.
I NTRO TO MOBI LE APP SECU RI TY
Dynamic Analysis
I NTRO TO MOBI LE APP SECU RI TY
Dynamic Analysis

Emulateurs Android :

Pour le pentest d’applications


Android, nous avons besoin d'un
appareil Android ou émulé.
Il existe plusieurs émulateurs :
- Android Studio
- Genymotion
- Bluestack
- NoxPlayer
I NTRO TO MOBI LE APP SECU RI TY
Dynamic Analysis
I NTRO TO MOBI LE APP SECU RI TY
Dynamic Analysis
I NTRO TO MOBI LE APP SECU RI TY
Dynamic Analysis
I NTRO TO MOBI LE APP SECU RI TY
Dynamic Analysis
I NTRO TO MOBI LE APP SECU RI TY
Dynamic Analysis
I NTRO TO MOBI LE APP SECU RI TY
Dynamic Analysis
I NTRO TO MOBI LE APP SECU RI TY

Mobile Security Framework :

C’est un framework open-source conçu pour effectuer


une analyse de sécurité des applications mobiles. Il
prend en charge les plateformes Android et iOS.
C’est un outil puissant qui permet aussi le reverse-
engineering.
I NTRO TO MOBI LE APP SECU RI TY
Static Analysis

[Link]

[Link]
I NTRO TO MOBI LE APP SECU RI TY
I NTRO TO MOBI LE APP SECU RI TY
Static Analysis

Source code
I NTRO TO MOBI LE APP SECU RI TY
Static Analysis

Java source décompilée


I NTRO TO MOBI LE APP SECU RI TY
Dynamic Analysis

MobSF :
Extraire les données de l'application
(URLs, logs, presse-papiers).

Capturer le trafic HTTPS

Utiliser Frida pour bypass (SSL pinning,


root detection, debbuger detection)
I NTRO TO MOBI LE APP SECU RI TY
I NTRO TO MOBI LE APP SECU RI TY
I NTRO TO MOBI LE APP SECU RI TY
I NTRO TO MOBI LE APP SECU RI TY
I NTRO TO MOBI LE APP SECU RI TY

Supply Chain Attack


I NTRO TO MOBI LE APP SECU RI TY
DATA
STORAGE
AND PRIVACY
TECHNIQUES
DATA S TORAG E AND P RI VAC Y TE C HNI Q U E S

La protection des données sensibles et la


vie privée sont des éléments essentiels
pour le développement d'applications
mobiles sécurisées.

Les données sensibles, telles que les


informations utilisateur, les identifiants, et
les données personnelles, doivent être
protégées contre les accès non autorisés
et les violations de confidentialité.
DATA S TORAG E AND P RI VAC Y TE C HNI Q U E S
Unsecure Data Storage : Risques
DATA S TORAG E AND P RI VAC Y TE C HNI Q U E S

Données stockées dans : PreferenceManager et DefaultSharePreferences.


Par défaut : stocké dans un fichier XML
DATA S TORAG E AND P RI VAC Y TE C HNI Q U E S

Test username & password


DATA S TORAG E AND P RI VAC Y TE C HNI Q U E S

Username & password dans le


fichier XML stocké par défaut
DATA S TORAG E AND P RI VAC Y TE C HNI Q U E S
Remédiation
DATA S TORAG E AND P RI VAC Y TE C HNI Q U E S
Remédiation
CRYPTOGRAPHY
CRY PTOGRAPHY

Broken cryptography :

Ensemble des failles de sécurité


liées à une mauvaise utilisation ou
une implémentation incorrecte des
algorithmes de cryptographie dans
les applications mobiles.
CRY PTOGRAPHY

Test de mot de passe :


MD5 Hash
CRY PTOGRAPHY
CRY PTOGRAPHY
AUTHENTICATION
& SESSION
MANAGEMENT
AU THE NTI C ATI ON & S E S S I ON MAN AG E ME NT

L'authentification et la gestion des


sessions sont essentielles, pour
garantir la sécurité des utilisateurs
dans les applications mobiles.

Une mise en œuvre incorrecte


peut exposer les données sensibles
et permettre des attaques telles
que l'usurpation de session, l'accès
non autorisé ou des attaques de
type Man-in-the-Middle.
AU THE NTI C ATI ON & S E S S I ON MAN AG E ME NT

Token stocké en clair


dans SharedPreferences
AU THE NTI C ATI ON & S E S S I ON MAN AG E ME NT
SEC U R E NET WOR K
C OM M U NIC ATIONS
SECU RE NETWORK COMMU NCATI ONS

Description :

Il s’agit de l'échange de données


entre une application mobile et
des serveurs ou des services tiers
tout en garantissant confidentialité,
intégrité et authenticité. Elle
protège les données en transit
contre les attaques telles que le
Man-in-the-Middle (MITM).
SECU RE NETWORK COMMU NCATI ONS
[Link]

Empêche le
traffic en clair
SECU RE NETWORK COMMU NCATI ONS
SSL Pinning

SSL Pinning correspond à l’association


d'un hôte à son certificat ou à sa clé
publique. C’est une configuration pour
que l’application rejette tous les
certificats ou clés publiques à
l'exception d'un ou de quelques
certificats ou clés publiques prédéfinis.

Pourquoi SSL Pinning ?


Le fait de restreindre les certificats de
confiance, empêche les attaquants
d’intercepter les requêtes, et
d'analyser les fonctionnalités de
l'application.
SECU RE NETWORK COMMU NCATI ONS

No SSL Pinning
SECU RE NETWORK COMMU NCATI ONS

Insecure

Vulnérable au Man in The Middle


SECU RE NETWORK COMMU NCATI ONS

SSL Pinning
SECU RE NETWORK COMMU NCATI ONS

Secure

Certificate Pinning
SECU RE NETWORK COMMU NCATI ONS

MoBSF Analyse Statique :


Code source Java SSL Pinning
SECU RE NETWORK COMMU NCATI ONS

APK-MITM
PLATFORM
FEATURES &
INTERACTION
PLATFORM FEATU RES & I NTERACTI ON

Il s’agit de l’utilisation des


fonctionnalités natives de la
plateforme, les autorisations, le
stockage, et la communication entre
les applications.
PLATFORM FEATU RES & I NTERACTI ON

Demande de permission
excessive au démarrage de
l’application

Insecure

Autorisation accordée sans


demande et vérification
PLATFORM FEATU RES & I NTERACTI ON

L'application demande les


permissions uniquement au
Secure moment où elles sont
nécessaires et fournit un
contexte à l'utilisateur
PLATFORM FEATU RES & I NTERACTI ON

Insecure

Unsecure Webview :
Activation de
Javascript et aucun
contrôle, peut mener
à des failles XSS et
injection
PLATFORM FEATU RES & I NTERACTI ON
Secure
CODE
QUALIT Y &
BUILD
SETTINGS
CODE QU ALI TY & BU I LD SETTI NGS

Les développeurs doivent


s’efforcer de concevoir un
code source, écrit et
maintenu conformément
aux meilleures pratiques en
termes de sécurité et de
lisibilité.
CODE QU ALI TY & BU I LD SETTI NGS

The app requires an up-to-date platform version :


Cibler une version minimum pour Android SDK :
Version 29 pour assurer des mises à jour de
sécurité
CODE QU ALI TY & BU I LD SETTI NGS

The app has a mechanism for enforcing


app updates :

Force l’utilisateur à mettre à jour


CODE QU ALI TY & BU I LD SETTI NGS

The app only uses software components


without known vulnerabilities :
Check dependencies
CODE QU ALI TY & BU I LD SETTI NGS

The app validates and sanitizes all


untrusted inputs :

L’application doit valider et nettoyer toutes


les entrées provenant de sources non fiables
pour prévenir les attaques comme l’injection
SQL ou les dépassements de tampon.
DEFENSE
IN DEPTH
DEFENSE I N DEPTH

Défense en profondeur:

Trouve ses origines dans


les stratégies militaires
anciennes. Il s’agissait
initialement d’une
approche tactique
utilisée pour protéger
des positions fortifiées
contre des envahisseurs,
en multipliant les
couches de défenses
physiques.
DEFENSE I N DEPTH
DEFENSE I N DEPTH

Root Detection:

Permet de déterminer si un
appareil mobile a été rooté.
Root est considéré comme un
privilege escalation.
DEFENSE I N DEPTH

Blocage de
l’application lors du
Root Detection
DEFENSE I N DEPTH

Anti-Tampering :

- Protéger l’app contre les


modifications non
autorisées
- Protéger contre la
redistribution de
l’application altérée
- Protège l’intégrité de l’app
DEFENSE I N DEPTH

Anti-Static Analysis :

- Obfuscation du code
Anti-Static Analysis - Rendre difficile la
décompilation et lecture du
code
DEFENSE I N DEPTH

Anti-Dynamic Analysis :

Anti-Dynamic Analysis - Empêcher l’injection de


code
- Rendre difficile la
manipulation
DEFENSE I N DEPTH

- Root Detection
- Implement RootBeer
- Magisk Detection
- Frida Detection
- Emulator Detection
- Check Developper Mode
- Check Debugging Options
DEFENSE I N DEPTH
Root Detection Code Exemple

Check et détection de
binaires connus pour
passer Root « su »
DEFENSE I N DEPTH
Magisk Detection Code Exemple

Check et détection de
répertoires créés par
Magisk
DEFENSE I N DEPTH
Root Detection with 8 Ball Pool

Test du Root Detection


et Analyse Code Source
avec MoBSF
DEFENSE I N DEPTH

Frida Detection Code Exemple

Check et détection de
thread et processus
utilisés par Frida
DEFENSE I N DEPTH

Un outil d’instrumentation
dynamique pour injecter du
code dans les applications
DEFENSE I N DEPTH

Exemple d’utilisation pour


injection
DEFENSE I N DEPTH

Emulator Detection Code Exemple

Check et détection de
d’émulateurs
DEFENSE I N DEPTH

Developper Mode Detection Code Exemple


DEFENSE I N DEPTH

Debugging Mode Detection Code Exemple


DEFENSE I N DEPTH

Android APIs Security :


- Check Integrity App
- Check Malware
- Check Permissions
- Check Présence Play Store
- Check Device
DEFENSE I N DEPTH

Vous aimerez peut-être aussi