1. Livres & vidéos
  2. Certified Ethical Hacker
  3. Hacking applications mobiles et IoT
Extrait - Certified Ethical Hacker Préparation à la certification CEH
Extraits du livre
Certified Ethical Hacker Préparation à la certification CEH Revenir à la page d'achat du livre

Hacking applications mobiles et IoT

Prérequis et objectifs

1. Prérequis

Ce chapitre permet un élargissement du périmètre offensif abordé dans les chapitres précédents. Alors que les sections sur les réseaux, les systèmes ou les applications web explorent des cibles bien établies dans l’écosystème traditionnel des tests d’intrusion, ce chapitre se concentre sur des environnements en forte expansion : les applications mobiles, principalement sous Android, et les systèmes connectés dits IoT (Internet of Things).

La compréhension des vecteurs d’attaque dans ces contextes repose sur une vision transversale des technologies. Certains outils mentionnés (Frida, Smali, apktool, objection, EdXposed) relèvent d’un niveau technique plus avancé (reverse-engineering, instrumentation dynamique). Ils ne sont pas obligatoires pour l’examen, mais constituent un atout utile à avoir dans le bagage d’un hacker éthique souhaitant mener des audits mobiles plus poussés. La maîtrise des fondements du modèle client-serveur, des échanges HTTP, des mécanismes d’authentification, ainsi qu’une bonne familiarité avec l’environnement Linux et les outils de base du pentester sont suffisants pour suivre les démonstrations et scénarios d’exploitation proposés. L’objectif...

Comprendre l’architecture des applications mobiles et IoT

L’analyse de la sécurité des applications mobiles et IoT commence par une compréhension technique de leur architecture. Ces systèmes partagent des caractéristiques communes avec les environnements informatiques habituels, tout en introduisant des spécificités matérielles et logicielles qui élargissent la surface d’attaque. Pour pouvoir repérer les failles exploitées dans ces contextes, il faut donc maîtriser les bases structurelles de leur fonctionnement.

1. Architecture d’une application Android

Une application Android repose sur un modèle modulaire articulé autour de composants fondamentaux. Ces derniers communiquent entre eux selon un cycle de vie bien défini. Les quatre composants principaux sont les activités (Activities), qui représentent les interfaces utilisateurs ; les services (Services), qui permettent d’exécuter des traitements en arrière-plan ; les récepteurs de diffusion (BroadcastReceivers), utilisés pour réagir à des événements système ou applicatifs ; et les fournisseurs de contenu (ContentProviders), qui facilitent l’échange de données structurées entre applications.

Autre point central d’une application Android, le fichier AndroidManifest.xml. Il déclare les composants de l’application, les permissions requises, les activités exportées, et les intentions (intents) qu’elle est capable de traiter. Mal configuré, ce fichier peut exposer des points d’entrée...

Analyse statique des vulnérabilités courantes

1. Identifier les secrets codés en dur dans le code

Lorsqu’une application mobile contient des clés d’API, des tokens d’authentification ou même des identifiants de base de données directement écrits dans le code source, elle devient vulnérable dès que ce code est accessible. Or, un fichier APK peut être facilement décompilé à l’aide d’outils comme jadx ou MobSF. En analysant les classes Java reconstituées, il est possible d’identifier des chaînes de caractères sensibles qui n’auraient jamais dû y figurer. Cela permet à un attaquant d’interagir avec des services tiers (API cloud, bases de données distantes, services de paiement) comme s’il était l’application elle-même, avec tous les privilèges associés.

2. Comprendre les dangers d’une logique de sécurité côté client

Une erreur fréquente dans le développement mobile consiste à implémenter des contrôles de sécurité directement dans l’application, sans vérification serveur. Par exemple, si le client décide seul qu’un utilisateur est « admin » en se basant sur une variable locale, il est très facile de modifier cette valeur lors de l’exécution....

Analyse dynamique avec proxy

1. Comprendre l’analyse dynamique dans un contexte mobile

L’analyse dynamique consiste à observer le comportement réel d’une application mobile lorsqu’elle s’exécute, en particulier ses communications avec les serveurs distants. Contrairement à l’analyse statique, qui se concentre sur le code source ou compilé, l’analyse dynamique permet de détecter des interactions réseau inattendues, de suivre les données transmises et d’identifier les failles de logique dans les échanges entre client et serveur.

Cette approche est d’autant plus pertinente dans les tests de sécurité que de nombreuses vulnérabilités ne sont visibles qu’en situation réelle : transmission d’identifiants sans chiffrement, absence de contrôle côté serveur, fuite de données sensibles dans les requêtes ou réponses HTTP, ou encore absence de jetons de session valides.

2. Interception du trafic HTTPS avec Burp Suite

Pour rappel, Burp Suite est un proxy HTTPS qui intercepte, modifie et rejoue les requêtes générées par une application. Pour qu’il puisse analyser les échanges d’une application mobile, il doit être configuré comme proxy intermédiaire sur l’appareil, qu’il s’agisse d’un smartphone réel ou d’un émulateur.

Supposons qu’une application mobile réalise une connexion vers une API à l’adresse https://api.exemple.com/login en envoyant les identifiants de l’utilisateur. En configurant Burp Suite comme proxy, il devient possible de visualiser la requête...

Reproduction de failles classiques

Ce qui est très formateur lors d’un test de sécurité d’application mobile, c’est de reproduire concrètement les failles classiques observées dans la majorité des cas. Ces failles ne résultent pas d’un bug exotique ou d’un exploit complexe, mais bien souvent d’un manque de rigueur dans l’implémentation de la sécurité à des points critiques : gestion de l’authentification, contrôle des accès, vérification côté serveur. Cette section illustre donc plusieurs de ces erreurs courantes, en expliquant comment les identifier, les reproduire, et en quoi elles constituent une surface d’attaque exploitable pour un pentester.

1. Jetons d’authentification faibles ou réutilisables (JWT, tokens)

De nombreuses applications mobiles s’appuient sur des jetons d’authentification temporaires pour identifier l’utilisateur une fois connecté. Ces jetons, souvent au format JWT (JSON Web Token), sont stockés localement sur l’appareil et transmis dans les en-têtes HTTP (Authorization: Bearer <token>) pour chaque requête. Leur sécurité dépend entièrement de deux facteurs : leur robustesse (signature, durée de validité) et le bon contrôle de leur usage côté serveur.

Un problème fréquent est la réutilisation illimitée d’un jeton : une fois intercepté ou récupéré, il permet d’accéder à l’API même après...

Analyse et compromission d’un système IoT grand public

1. Exposition fréquente des services : Telnet, FTP, HTTP non protégés

De nombreux équipements connectés exposent, dès leur mise en route, des services réseau en écoute sans aucune mesure de sécurisation. Parmi les plus fréquemment rencontrés, Telnet, FTP ou encore un serveur HTTP simplifié sont accessibles depuis le réseau local, parfois même exposés directement sur Internet via une redirection UPnP (Universal Plug and Play) automatique. Ces services sont généralement configurés sans chiffrement et utilisent des identifiants par défaut laissés actifs, comme les classiques admin/admin ou root/root, qu’un attaquant peut exploiter sans compétence particulière. Un simple scan Nmap suffit à les détecter, et une tentative de connexion manuelle permet souvent un accès total à l’équipement. Ce constat révèle une faiblesse systémique : l’absence de durcissement de la configuration réseau dès la phase de fabrication.

2. Accès à l’interface d’administration ou au shell sans authentification

Lorsqu’un service HTTP est présent, il expose le plus souvent une interface d’administration à laquelle il est possible d’accéder avec peu ou pas de contrôle. Dans les cas les plus critiques, la page de login peut être contournée par un paramètre d’URL mal filtré ou via un cookie falsifié. D’autres appareils présentent une console directe sans même exiger d’authentification, accessible soit par le réseau via Telnet, soit physiquement via un port série (UART) encore actif sur la carte mère. Cette console, une fois reliée à un adaptateur USB-série, donne souvent un accès direct au système embarqué, généralement...

Mesures et bonnes pratiques

Dans les environnements mobiles et IoT, la surface d’attaque est vaste, souvent distribuée entre plusieurs composants (app mobile, API, microcontrôleur, réseau), ce qui nécessite une approche de défense en profondeur, pensée dès la conception. Voici les bonnes pratiques essentielles à mettre en œuvre pour réduire les risques sur ces deux familles de technologies.

1. Sur les applications mobiles

Une application mobile n’est jamais isolée : elle fonctionne toujours en interaction avec un backend, des API distantes et parfois des services tiers. Cette architecture en couches nécessite une attention particulière à chaque niveau pour prévenir les abus.

La première ligne de défense repose sur l’obfuscation du code, qui constitue un durcissement complémentaire mais ne suffit pas à assurer la sécurité complète. En effet, une application Android peut être décompilée très facilement à l’aide d’outils comme JADX ou apktool. Pour éviter que les chaînes sensibles, la logique d’authentification ou les clés d’API ne soient lisibles en clair dans le code, il est indispensable d’utiliser un obfuscateur comme ProGuard ou R8, qui complexifie la lecture du bytecode et renforce la résistance à l’analyse...

Travaux pratiques

1. Analyse d’une application Android vulnérable

Objectif pédagogique

Ce travail pratique a pour but d’apprendre à identifier des vulnérabilités courantes dans une application Android, à en extraire les secrets embarqués, et à intercepter les communications réseau malgré la présence de protections telles que le SSL pinning. Il permet de mettre en œuvre les étapes classiques d’un audit mobile offensif.

Mise en place de l’environnement de test

Installer les outils requis sur votre machine

  • Android Studio (avec AVD Manager (Android Virtual Device) pour créer un émulateur Android) ;

  • Burp Suite Community (ou version Pro si disponible) ;

  • JADX (outil de décompilation graphique) ;

  • apktool (outil de reconditionnement d’APK) ;

  • Frida + Objection (outil d’instrumentation dynamique).

Ces outils doivent être disponibles en ligne de commande. Installez Frida et Objection via pip :

pip install frida-tools 
pip install objection 

Créer un émulateur Android rooté

 Dans Android Studio - AVD Manager, créez un émulateur Android x86 (API 29 ou une image userdebug/eng compatible).

  • Assurez-vous que l’émulateur fonctionne en mode root :

adb root 
adb remount 

adb root fonctionne uniquement sur des images userdebug/eng ou sur l’émulateur officiel. Sur une image user classique...

Validation des acquis : questions/réponses

Si l’état de vos connaissances sur ce chapitre vous semble suffisant, répondez aux questions ci-après.

1. Questions

1 Pourquoi le fichier AndroidManifest.xml est-il un point d’entrée critique dans l’analyse de sécurité d’une application mobile ?

2 Quelle est la principale faiblesse d’une logique de sécurité implémentée uniquement côté client dans une application mobile ?

3 Quelles informations sensibles peuvent être extraites d’un APK lors d’une analyse statique ?

4 Comment fonctionne le SSL pinning, et pourquoi faut-il parfois le contourner en test d’intrusion ?

5 Pourquoi les objets connectés exposent-ils souvent des services réseau non sécurisés (Telnet, HTTP) ?

6 En quoi l’analyse d’un firmware peut-elle révéler des vulnérabilités critiques dans un objet connecté ?

7 Qu’est-ce qu’un appel API non authentifié, et comment le tester avec Burp Suite ?

8 Quelle est la faille OWASP API la plus fréquente dans les apps mobiles et les objets connectés ?

9 Comment une WebView mal sécurisée peut-elle permettre l’exécution de code malveillant ?

10 Quelles sont les contre-mesures clés à appliquer pour sécuriser...