Pentest : Comment réaliser des tests d’intrusion sur une application mobile Android ?

Dans son Panorama de la menace informatique, l’Agence nationale de la sécurité des systèmes d’information (ANSSI) fait état de 1 082 cyberattaques en 2021 contre 786 en 2020, soit une augmentation de 37%.

CBTW
L’Actualité Tech — Blog CBTW
6 min readSep 8, 2022

--

En moyenne, cela représente 3 attaques par jour. Et les entreprises ne sont bien évidemment pas épargnées.

Tests d’intrusion sur une application mobile Android
Hacking — par FLY:D sur Unsplash

En tant que développeur, il est donc indispensable d’être sensibilisé à ces risques d’intrusion afin d’éviter de générer des failles lors du développement de produits.

Et si on a tendance à penser qu’une application mobile est moins vulnérable qu’une page web, car le code source n’est pas accessible via un clic droit. Il faut noter qu’une fois le fichier apk (Android) ou ipa (iOS) récupéré puis décompilé, il est possible d’accéder au code et de retrouver des fonctionnalités en recherchant un simple mot-clé.

C’est ainsi qu’une équipe composée de développeurs web et mobile déjà sensibilisés aux enjeux de cybersécurité s’est constituée pour explorer le sujet. Leur objectif : comprendre les failles les plus courantes des applications Android.

Cet article résume leurs recherches afin de mieux identifier les causes des vulnérabilités, leurs effets potentiels et les corrections possibles sur une application mobile Android.

Qu’est-ce qu’un pentest ?

Le mot pentest est également connu sous le nom de test d’intrusion ou encore de test de pénétration.

Il s’agit d’une méthode qui consiste à identifier les failles d’un système d’information dans le but de les corriger et ainsi se prémunir de toute attaque malveillante.

Par exemple, il est possible de tester :

  • Un serveur web,
  • Un bâtiment,
  • Un réseau complet,
  • Une application.

Dans le cadre de leurs explorations, l’équipe a eu l’occasion de réaliser des pentests sur des applications mobiles Android.

Comment réaliser des tests d’intrusion ?

Cadre légal du pentest

Avant de passer à la pratique, il est important de prendre conscience que tout test de pénétration sur un système informatique quelconque est strictement illégal sans un consentement explicite et préalable de son propriétaire.

À titre informatif, voici ce que prévoit la loi à ce sujet :

“ Le fait d’accéder ou de se maintenir, frauduleusement, dans tout ou partie d’un système de traitement automatisé de données est puni de deux ans d’emprisonnement et de 30000 euros d’amende.
Lorsqu’il en est résulte soit la suppression ou la modification de données contenues dans le système, soit une altération du fonctionnement de ce système, la peine est de trois ans d’emprisonnement et de 45000 euros d’amende.”
Article du 323–1 du Code pénal.

Android InsecureShop pour réaliser des tests
C’est pour cette raison que lors de cet atelier, il a été choisi de réaliser les tests sur l’application Android InsecureShop créée spécifiquement pour cet effet.

Cette application remplie de failles de sécurité, est fournie avec une documentation sous forme de challenges : https://docs.insecureshopapp.com/.

Pour se mettre en conditions réelles (sans code source), il convient de récupérer le projet en local sous la forme d’un fichier .apk.

On peut ensuite commencer à décompiler le code grâce à l’outil en CLI “dex2jar” :

La commande ci-dessus donne un fichier .jar qui est une archive java (Java ARchive). Il est alors possible de l’ouvrir avec l’outil “jadx” pour inspecter le code, plus complexe à lire que le code source.

Exemples de failles courantes sur Android

MITM

L’équipe a eu l’occasion de réaliser une attaque MITM (Man-In-The-Middle Attack) consistant à intercepter une communication entre deux parties.

Concrètement, qu’est-ce qu’une attaque MITM ?
Prenons le cas d’un utilisateur mobile consultant son site internet favori.
Lors de la connexion au site web, une communication est établie entre son téléphone et le serveur hébergeant le site web.
Les données reçues par le téléphone sont authentiques ; elles sont identiques aux données envoyées par le serveur.

Communication de données entre téléphone et serveur

Par le biais d’un réseau wifi non sécurisé par exemple, cet échange de données peut être espionné par une tierce partie que l’on appelle “l’homme du milieu”.

Attaque MITM-2
Espionnage de données par une tierce partie

Une fois la communication interceptée, le hacker peut corrompre les données échangées afin d’usurper l’identité de l’utilisateur ou de lui subtiliser des informations (le plus souvent en utilisant les méthodes d’ARP, DNS ou IP Spoofing).

Memory Editing

Une attaque de type memory editing (modification de données) a également été réalisée afin de contourner le login de l’application InsecureShop.

Les outils utilisés pour cette attaque étaient :

  • Frida, outil open source dédié à l’analyse et la modification de code,
  • Objection, projet basé sur Frida, orienté mobile.

Après avoir installé Objection à l’aide de pip3 :

L’application InsecureShop a été analysée en indiquant le nom de son package :

Le code permettant à l’utilisateur de se connecter à l’aide du mot-clé “Login” a ensuite été recherché :

Puis l’un des résultats de la recherche qui paraissait le plus pertinent a été examiné : “LoginActivity”

Et BINGO ! En fouillant plus en détails dans les fonctions utilisées dans la classe LoginActivity et en naviguant à travers les fichiers, la fonction qui intéressait l’équipe depuis le départ a été trouvée.

Ladite fonction verifyUserNamePassword a donc pu être forcée à toujours retourner true. Cela signifie que peu importent les identifiants et mots de passe saisis, la connexion sera toujours établie :

Ainsi la connexion de l’application InsecureShop a été contournée.

La méthode présentée pourrait théoriquement, sur une application peu sécurisée, permettre d’accéder à un contenu payant pour l’utilisateur ou encore d’accéder à des paramètres d’administration non autorisés pour un utilisateur lambda.

Quelques bonnes pratiques de sécurité

  • Évidemment, s’assurer d’une authentification forte (on évite le mot de passe codé en dur dans l’app, comme sur InsecureShop),
  • S’assurer que les logs sont désactivés dans l’application construite en mode « release »,
  • Utiliser le « principe de moindre privilège », c’est-à-dire ne pas demander plus d’autorisations que ce que l’application nécessite (exemple : autorisation d’accès aux contacts, au micro, …),
  • Utiliser le protocole https lorsqu’on utilise des liens dans l’application ou qu’on en affiche via des webviews,
  • Pour ouvrir l’application mobile depuis un lien extérieur, privilégier « les universal links » (iOS) ou « app links » (Android) plutôt que le classique deep-link, car ceux-ci sont associés à un domaine propre, ce qui fait qu’aucune autre application ne peut utiliser le lien.

Cette liste est non exhaustive mais elle met en lumière des aspects sur lesquels une vigilance s’impose. À noter que les environnements de développement d’application mobile évoluent également dans le sens d’une sécurité accrue (par exemple sur Android, il est désormais nécessaire de spécifier explicitement quand une activité peut être exécutée par une application extérieure).

La sécurité avant tout

Les développeurs doivent être particulièrement vigilants car si des failles existent, elles peuvent alors être exploitées par des tierces pour récupérer des données ou accéder à des parties de l’application qui nécessitent normalement une authentification.

Il faut donc sécuriser son application mobile au même titre qu’une application web, en prenant en compte les particularités du mobile.

Merci à Ludivine, Christian, Gauthier, Martin, Nino et William pour le partage de leurs explorations mobiles.

Nous publions régulièrement des articles sur des sujets de développement produit web et mobile, data et analytics, sécurité, cloud, hyperautomatisation et digital workplace.
Suivez-nous pour être notifié des prochains articles et réaliser votre veille professionnelle.

Retrouvez aussi nos publications et notre actualité via notre newsletter, ainsi que nos différents réseaux sociaux : LinkedIn, Twitter, Youtube, Twitch et Instagram

Vous souhaitez en savoir plus ? Consultez notre site web et nos offres d’emploi.

--

--

CBTW
L’Actualité Tech — Blog CBTW

Nos experts partagent leur vision et leur veille en développement web et mobile, data et analytics, sécurité, cloud, hyperautomation et digital workplace.