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