Android
Les fondamentaux de la sécurité des smartphones et tablettes
Chapitre 1
La sécurité sous Android
1. Introduction9
2. Petite histoire10
3. Les besoins de sécurité sur les appareils mobiles10
4. L'architecture Android12
5. Les sandboxes et les autorisations21
5.1 Les signatures d'applications22
5.2 Les autorisations des API23
5.3 La communication sécurisée inter-processus28
6. Android rooting30
7. Les packages d'application Android (APK)31
8. Les composants d'une application34
8.1 Les intentions35
8.2 Les activités36
8.3 Les vues38
8.4 Les services38
8.5 Les récepteurs de diffusion40
8.6 Les fournisseurs de contenu40
9. Comment fonctionne une application ?41
10. Les différents types d'applications44
10.1 Les applications natives44
10.2 Les applications web45
10.3 Les applications hybrides46
11. Les niveaux d'API Android46
12. Conclusion47
Chapitre 2
Préparation de l'environnement de test Android
1. Introduction49
2. Création de services virtuels Android (AVD)49
2.1 L'installation du JDK (Java Development Kit) Android50
2.2 Le SDK d'Android53
2.3 L'installation du SDK Android54
2.4 L'installation et la configuration d'un service Android virtuel62
2.5 Genymotion74
2.5.1 Installation74
2.5.2 Comment installer une application sur Genymotion86
2.5.3 Installation d'une application vulnérable sur Genymotion87
2.5.4 Les plugins de Genymotion89
2.5.5 L'architecture ARM91
2.5.6 Les Open Gapps et le Google Play Store92
2.6 Les outils du pentester95
2.6.1 Drozer95
2.6.2 ADB (Android Debug Bridge)102
2.6.3 Apktool103
2.6.4 dex2jar105
2.6.5 JD-GUI106
2.6.6 Burp Suite107
2.7 L'installation et la configuration d'applications vulnérables111
2.7.1 Première application112
2.7.2 Seconde application115
2.7.3 Troisième application117
3. Conclusion119
Chapitre 3
Les différents types d'attaques
1. Introduction121
2. Les attaques physiques122
3. Les attaques locales123
4. Les attaques à distance124
5. Les fausses applications132
6. Les logiciels malveillants134
7. Les conséquences d'une attaque réussie136
8. Les méthodologies reconnues137
9. Le top 10 des vulnérabilités Android141
10. Conclusion144
Chapitre 4
Tester des applications mobiles
1. Introduction145
2. Méthodologie146
2.1 Découverte de l'environnement146
2.2 Analyse146
2.2.1 Analyse statique147
2.2.2 Analyse dynamique147
2.3 Plan d'exécution147
2.4 Exploitation148
2.5 Remise du rapport de test148
3. Recherche de vulnérabilités et exploitation149
3.1 Drozer149
3.1.1 Analyse149
3.1.2 Rappel sur les composants Android152
3.1.3 Test sur les activités152
3.1.4 Test sur les services155
3.1.5 Test sur les récepteurs de diffusion157
3.1.6 Test sur les fournisseurs de contenus162
3.1.7 L'injection SQL166
3.1.8 Le gestionnaire de mots de passe171
3.1.9 Analyser les logs172
3.2 ADB (Android Debug Bridge)174
3.2.1 Analyse du stockage des données175
3.2.2 Élévation de privilèges177
4. Décompilation d'une application pour analyse179
5. Analyse du trafic Android183
6. Un autre outil intégré au SDK187
7. Conclusion190
Chapitre 5
Test d'applications avec Kali Linux
1. Introduction191
2. Pourquoi Kali Linux ?192
3. Préparation et installation de l'environnement de test192
3.1 Installation de Kali Linux193
3.2 Création du service virtuel Android (AVD)201
3.3 Outils du pentester Android207
3.3.1 Drozer207
3.3.2 ADB210
3.3.3 APKTool213
3.3.4 QARK214
4. Simulation de test215
4.1 Scan Android avec Nmap216
4.2 Exploitation Android avec Metasploit224
5. Qu'est-ce que le fuzzing ?235
6. Santoku-Linux241
7. Conclusion250
Chapitre 6
Tests sous l'architecture ARM
1. Introduction251
2. Le processeur ARM252
3. Notions fondamentales253
3.1 Les différents modes de fonctionnement253
3.2 Les registres254
3.3 La notion de pile258
3.4 Les registres d'états261
3.5 Les différents modes ARM263
4. Un peu d'assembleur264
4.1 Les instructions de traitement de données264
4.2 Les instructions d'accès à la mémoire267
4.3 Les instructions conditionnelles273
4.4 Les instructions de branchement ARM274
5. Préparation de l'environnement275
6. Buffer overflow279
7. Return to Libc (Ret2Libc)285
7.1 Première approche286
7.2 Les techniques plus récentes287
8. Conclusion291
Chapitre 7
Analyse forensique sous Android
1. Introduction293
2. Les méthodes d'extraction de données294
2.1 L'acquisition manuelle294
2.2 L'acquisition logique295
2.3 L'acquisition physique296
3. Le système de fichiers296
4. L'extraction des données297
4.1 Les SMS/MMS297
4.2 Le journal d'appels298
4.3 L'historique de navigation web299
4.4 Les e-mails300
5. Conclusion300
Chapitre 8
Sécurité et bonnes pratiques
1. Introduction301
2. Comment ne pas se faire pirater, alors ?302
2.1 Les bonnes pratiques, c'est logique !302
2.2 Antivirus... ou pas ? Le grand débat309
2.3 Android rooting311
2.4 Les réseaux VPN312
2.5 Firewall313
2.6 Les efforts de Google314
2.7 Les sources sûres315
2.8 Les fausses applications316
3. Notre impuissance face à certaines attaques318
4. Sécuriser son code source319
5. Pour aller plus loin325
6. Conclusion329
Index331