✔️ 2022-04-18 21:14:31 – Paris/France.
Remarque : Ce message fournit uniquement des conseils techniques. Les tests décrits dans cet article sont effectués aux risques et périls du lecteur et ne doivent être effectués que sur des appareils et des réseaux sur lesquels vous avez la permission de tester.
Introduction
Afin de vérifier les pratiques de confidentialité et de sécurité des applications que nous utilisons quotidiennement, nous devons être en mesure d’inspecter le trafic réseau qu’elles envoient. Une application demandant l’autorisation de connaître votre position ne peut l’utiliser que pour l’envoyer à vos amis, ou elle peut suivre chacun de vos mouvements. Sans savoir exactement quel trafic est envoyé, vous ne le sauriez jamais. Traditionnellement, cela a été le travail de l’analyse dynamique – exécuter l’application et capturer le trafic lorsque l’utilisateur interagit avec elle. Une configuration typique peut impliquer un appareil de test sur lequel l’application s’exécute, connecté à un point d’accès sans fil exécutant mitmproxy, Burp Suite ou quelque chose de similaire chargé d’enregistrer le trafic. Un ordinateur portable de contrôle supplémentaire peut être ajouté au mélange, qui est connecté à l’appareil de test via USB, pour exécuter des commandes adb sur l’appareil ou surcharger les méthodes Java à l’aide de la boîte à outils d’instrumentation dynamique Frida. Le trafic HTTPS peut être intercepté de cette manière en surchargeant les appels d’application au TrustManager de Java et en fournissant le nôtre, qui accepte les certificats proxy que nous fournissons. En combinaison, ce schéma d’appareil fournit une configuration puissante pour analyser le trafic dans un environnement stationnaire et contrôlé.
Mais que se passe-t-il si nous n’avons pas le luxe d’un laboratoire de test ? Que se passe-t-il si le comportement de l’application change en fonction de votre emplacement ou de votre interaction avec le monde extérieur ? Par exemple, si vous utilisez une application pour louer une voiture ou déverrouiller une porte vers un lieu de travail partagé, le comportement en temps réel de l’application sera différent de ce que vous pouvez reproduire dans un laboratoire. Pour ces types d’interactions complexes, un schéma roaming Machine-in-the-Middle (MitM) est nécessaire. En fait, les trois composants du schéma précédent (dispositif de test, intercepteur et dispositif de contrôle) devront être consolidés en un seul dispositif exécutant le logiciel requis pour les trois composants. Si l’application auditée est une forme de technologie disciplinaire, c’est-à-dire une application de surveillance qu’une personne installe sur l’appareil d’une autre personne, l’auditeur devra également capturer subrepticement le trafic envoyé par l’application, ce qui peut entraîner des tests supplémentaires. complications.
Cet article détaillera les étapes nécessaires à la configuration d’un appareil Android pour auditer le trafic de toute application installée sur celui-ci, ne nécessitant la présence physique d’aucun autre appareil. L’appareil devra être rooté afin d’installer le logiciel requis pour cette configuration. Tous les logiciels requis dans cet article sont gratuits et open source, ne nécessitant pas un centime d’investissement supplémentaire au-delà de celui de l’appareil lui-même. Le résultat final permettra à l’utilisateur d’ouvrir une application d’une manière spécialisée qui permet d’enregistrer le trafic, sans attacher d’appareils étrangers ni nécessiter que l’appareil soit connecté à un réseau ou à un point d’accès spécifique.
Conditions
- Un appareil Android rooté
- Une compréhension de base de la ligne de commande Linux
- Une compréhension de base de la mise en réseau IPv4
- Un PC ou une machine virtuelle avec Linux (nous utilisons Debian 11 x86_64 ci-dessous) pour les étapes de compilation croisée lors de l’installation
Nous passons en revue certaines des étapes ci-dessous par souci de brièveté, mais presque toutes sont bien documentées ailleurs. Lorsqu’il n’y a pas suffisamment de documentation disponible, nous sommes allés plus en détail et avons fourni des captures d’écran.
Installer
Aperçu
Dans la phase de configuration, l’intention est de permettre à l’utilisateur de lancer une application de manière à ce que son trafic puisse être intercepté. L’utilisateur ne devrait pas avoir à émettre lui-même de commandes pour ce faire. Nous supposerons qu’il y a un auditeur tiers impliqué dans la configuration, que nous voulons pouvoir accéder à distance à l’appareil et émettre des commandes. Cela permet à l’auditeur, qui possède un certain degré de compétence technique, d’être séparé de l’utilisateur, qui peut avoir un accès spécial aux fonctionnalités de l’application (comme se connecter avec ses identifiants). L’utilisateur ne doit être impliqué que dans le processus d’ouverture et d’interaction avec l’application souhaitée. Dans cet exemple, l’ID de l’application est com.example.android – remplacez-le par l’application que vous souhaitez auditer.
Pour ajouter une complication supplémentaire à notre configuration, nous voulons que ce processus soit aussi automatisé que possible. L’utilisateur ne devrait pas avoir à démarrer manuellement les services au démarrage de l’appareil.
Afin de permettre à l’auditeur tiers d’accéder à l’appareil à partir d’un emplacement distant, nous devrons faire face à la probabilité d’une commutation de réseau et d’être derrière un routeur NAT, sans adresse IP routable publiquement. Le moyen le plus simple de résoudre ce problème consiste peut-être à connecter l’appareil à un VPN Wireguard, que nous détaillerons ci-dessous. Si l’auditeur et l’opérateur de l’appareil sont une seule et même personne, cette étape ne sera pas nécessaire – ils peuvent émettre eux-mêmes des commandes pour se préparer à l’interception locale.
Pour ouvrir l’application de manière à permettre l’interception, nous aurons besoin de frida-server démonisé sur le téléphone et de frida-tools disponibles pour s’exécuter localement. Un module frida-server est disponible pour l’excellent outil Android de bas niveau Magisk qui exécute automatiquement le serveur au démarrage. Autoriser frida-tools à s’exécuter localement est un peu plus compliqué. Nous devrons déployer une distribution Linux complète sur l’appareil et installer frida-tools en plus de cela.
Pour permettre à l’utilisateur de lancer facilement l’application de manière interceptable, sur le conteneur Linux, nous allons configurer un serveur SSH qui exécute une commande frida personnalisée lorsqu’un utilisateur avec une clé SSH spécifique y est connecté. Nous utiliserons ensuite le populaire client Android SSH ConnectBot pour générer cette clé SSH et déclencher le lancement de l’application.
Enfin, nous aurons besoin de mitmproxy installé sur l’appareil pour afficher et enregistrer le trafic que nous rencontrons.
Nous recommandons que l’appareil reste branché pendant cette phase de configuration pour éviter diverses complications où Android effectuera des processus en arrière-plan pour économiser la batterie.
De toute évidence, beaucoup de ces outils fonctionnent à un niveau bas dans le système d’exploitation Android. Cela étant, la première étape consiste à installer un système d’exploitation Android personnalisé qui nous donne ce niveau d’accès.
Flasher le système d’exploitation / les applications requis
Tout d’abord, vous devrez flasher une image de récupération sur votre appareil de test. Nous recommandons TWRP.
Ensuite, démarrez en mode de récupération. Vous pouvez trouver des instructions spécifiques à votre appareil.
Connectez votre appareil à un PC ou à une machine virtuelle et assurez-vous que adb est installé. Pour les distributions basées sur Debian, c’est aussi simple que apt-get install adb.
Ensuite, vous devrez télécharger, pousser et flasher les éléments suivants :
- LineageOS. Encore une fois, consultez le guide d’installation de votre appareil pour télécharger la bonne version.
- Magisk. Cela devrait être un processus flash similaire à LineageOS ci-dessus.
- (Facultatif) Ouvrez GApps. Cela peut être nécessaire ou non, selon l’application spécifique que vous auditez. Remarque : ces applications sont à code source fermé.
Configuration dans Android
Redémarrez l’appareil dans le système d’exploitation Lineage nouvellement installé et connectez-vous à votre réseau.
Si vous testez une application qui nécessite une installation à partir du Google Play Store, vous souhaiterez peut-être connecter l’appareil à votre compte Google pour plus de commodité. Ce n’est pas strictement nécessaire. Vous pouvez utiliser l’outil apkeep que nous avons développé pour contourner cette exigence et installer l’application de votre choix sans que Google Play ne soit installé sur l’appareil.
Installez F-Droid à partir de son site Web. Vous serez invité à autoriser l’installation d’applications à partir du navigateur.
Configuration de WireGuard
Les étapes suivantes ne sont nécessaires que si vous souhaitez autoriser un tiers (tel qu’un chercheur) à surveiller à distance les connexions.
Sur un VPS de votre choix, configurez un pair WireGuard (serveur) auquel vous connecter. Suivez ces instructions pour une ventilation du processus.
Ouvrez F-Droid et installez l’application WireGuard. Vous serez invité à autoriser l’installation d’applications à partir de F-Droid.
Ouvrez WireGuard et configurez une connexion à votre instance VPS WireGuard. Par example:
Une fois cela fait, connectez-vous au pair VPS et autorisez l’application à agir en tant que VPN. Dans Paramètres -> Réseaux et Internet -> Avancé -> VPN, définissez WireGuard comme étant un VPN toujours actif.
Désormais, tant que l’appareil est connecté à Internet, le tiers pourra y accéder. Ceci est utile dans le contexte mobile où il y a une commutation fréquente des connexions réseau.
Configuration de ConnectBot
ConnectBot est un client Android SSH, et permettra à notre utilisateur de lancer l’application d’une manière spécifique qui permet la surveillance.
Ouvrez F-Droid et installez l’application ConnectBot.
Dans ConnectBot, générez une nouvelle paire de clés SSH.
Notez la clé publique, car vous en aurez besoin plus tard.
Ensuite, ajoutez un nouvel hôte auquel vous connecter :
Protocole : ssh android@localhost Surnom : MitM App Use pubkey authentication :
Installation de SimpleSSHD
Nous aurons besoin de SimpleSSHD pour transférer ultérieurement les fichiers du conteneur Linux.
Ouvrez F-Droid et installez l’application SimpleSSHD.
Ouvrez SimpleSSHD et démarrez le démon SSH. Dans les paramètres de l’application, activez « Démarrer au démarrage ».
Installer Magisk et Frida Server
Maintenant, vous voudrez installer un module Magisk pour démarrer le serveur Frida au démarrage de l’appareil.
Tout d’abord, téléchargez la dernière version de magisk-frida sur votre appareil. Cela peut échouer à télécharger le fichier zip correct dans le navigateur par défaut. Si cela se produit, essayez de le télécharger dans un autre navigateur.
Auparavant, nous flashions Magisk sur notre appareil lorsque nous étions en mode de récupération. Cela aurait dû ajouter une application Magisk à nos applications installées. Ouvrez-le et continuez à installer l’application complète lorsque vous y êtes invité.
L’installation de l’application Magisk complète écrasera l’application bootstrap. Ouvrez Magisk et accédez à l’onglet Modules. Appuyez sur « Installer à partir du stockage » et sélectionnez le zip que vous avez précédemment téléchargé pour l’installer. Vous devrez redémarrer l’appareil.
Déploiement de Linux sur l’appareil
Nous devrons installer une distribution complète de Linux sur l’appareil afin de lancer des applications via Frida localement de manière à permettre l’interception du trafic réseau.
Installez Linux Deploy à partir de son référentiel GitHub.
Avant de configurer ou d’installer Linux à partir de la configuration par défaut, quelques paramètres doivent être modifiés. Appuyez sur le coin inférieur gauche de l’écran pour accéder aux paramètres de cette configuration et modifiez la distribution en debian stable. La taille de l’image doit être d’au moins 4G. Activez le système init et le serveur SSH. Copiez également le mot de passe de l’utilisateur.
Vous pouvez maintenant sélectionner « installer » dans le menu en haut à droite, puis « démarrer » pour démarrer le conteneur.
Enfin, accédez aux paramètres de l’application et activez le démarrage automatique. Nous avons trouvé pratique de changer le délai de démarrage automatique à 10 secondes.
Conteneur Android Linux
À l’aide de ConnectBot, vous devriez pouvoir vous connecter au conteneur Linux avec le profil que nous avons précédemment configuré et le mot de passe que vous avez copié lors d’une étape précédente.
Utilisez les commandes suivantes pour installer nos dépendances :
sudo apt installer tmux python3-venv python3-dev gcc-arm-linux-gnueabihf python3-pyasn1 python3-flask python3-urwid libxml2-dev libxslt-dev libffi-dev python3-pip libssl-dev zlib1g-dev iptables rustc pip installer mitmproxy prompt_toolkit pigments
et nous permettre de nous connecter à l’instance Android SSH hôte avec une nouvelle clé SSH :
ssh-keygen # entrez, entrez, entrez scp -P 2222 .ssh/id_rsa.pub localhost:./authorized_keys
Dans l’application SimpleSSHD, vous verrez un nouveau mot de passe temporaire à saisir à l’invite. Suivant:
éditeur ~/.ssh/authorized_keys
Revenez au magasin de clés ConnectBot et copiez la clé publique que nous avons notée précédemment. À l’aide de cette clé publique, entrez ce qui suit dans l’éditeur et enregistrez :
command= »/home/android/frida_*/bin/frida -H 127.0.0.1 -f com.example.android -l frida-android-repinning.js –no-pause »,no-agent-forwarding,no- transfert x11, pas de transfert de port…
SOURCE : Reviews News
N’hésitez pas à partager notre article sur les réseaux sociaux afin de nous donner un solide coup de pouce. 📱