Comment faire une analyse forensic d'un smartphone pour y détecter des signes d'infection ?
Il y a quelques jours éclatait le scandale Pegasus. Un genre de trojan commercial qui utilise des failles 0day pour s’installer sur des smartphones Android et iOS afin d’espionner leurs utilisateurs.
Le problème ? Il s’agit d’un outil commercial édité par la société NSO Group qui est revendu à plein de services de renseignement et de sociétés privées.
Et vous connaissez la fourberie de l’humain… Pegasus a surtout été utilisé pour espionner des journalistes, des activistes…etc., ce qui est contraire aux droits de l’homme.
Bref, une saloperie de plus. Alors évidemment, sont sorties ensuite les méthodes pour “détecter” la présence de Pegasus sur les smartphones, car oui ce n’est pas simple.
Alors je ne vais pas spécialement vous expliquer comment détecter Pegasus, car vous ne l’avez probablement pas sur votre smartphone. Moi je l’ai pas en tout cas. Personne l’a en fait. Faut être président ou titilleur de gouvernement pour se retrouver avec ça sur son téléphone.
Mais n’empêche que grâce à ça, j’ai découvert un outil open source super cool qui s’appelle MVT pour Mobile Verification Toolkit. Développé et publié par le laboratoire de sécurité d’Amnesty International en juillet 2021 dans le cadre du projet Pegasus, il s’agit d’un outil destiné à faciliter l’analyse forensics des appareils Android et iOS, dans le but d’identifier les traces de compromission et accessoirement d’en sortir de la donnée.
Il faut bien sûr l’accord du propriétaire du smartphone pour faire ça. Ou au moins un accès déverrouillé au smartphone.
Je vais vous présenter ça. Maintenant si c’est Pegasus qui vous intéresse et que vous cherchez à déterminer si vous êtes infecté, installez simplement l’application Tehtris MTD qui vous dira si votre smartphone est compromis. Dispo sous Android et iOS.
Mais revenons à MVT.
MVT permet de :
- Déchiffrer les sauvegardes iOS chiffrées.
- Traiter et analyser les enregistrements de nombreuses bases de données, journaux et analyses du système et des applications iOS.
- Extraire les applications installées sur les appareils Android.
- Extraire les informations de diagnostic des appareils Android via le protocole adb.
- Comparer les enregistrements extraits à une liste fournie d’indicateurs malveillants au format STIX2 (et le STIX2 de Pegasus est là pour info).
- Générer des journaux JSON des enregistrements extraits et des journaux JSON distincts de toutes les traces malveillantes détectées.
- Générer une chronologie unifiée des enregistrements extraits, ainsi qu’une chronologie de toutes les traces malveillantes détectées.
Pour résumer, MVT est un outil d’investigation qui permet de rechercher des signes d’infection dans les smartphones.
Installer MVT
Avant de l’utiliser, faut l’installer. Si vous êtes sous mac, vous aurez besoin de Xcode et de homebrew et d’installer la dépendance suivante :
brew install python3 libusb
Si vous êtes sous Linux, vous aurez besoin des paquets suivants :
sudo apt install python3 python3-pip libusb-1.0-0
Et après il suffit de l’installer avec pip comme ceci :
pip install mvt
Ou si vous préférez partir des sources du projet sur Github comme ceci :
git clone https://github.com/mvt-project/mvt.git
cd mvt
pip3 install .
À présent, vous disposez de deux outils : mvt-ios et mvt-android.
Analyser un smartphone iOS
Avant de vous lancer dans l’acquisition et l’analyse des données d’un appareil iOS, vous devez déterminer quelle est la méthodologie d’analyse la plus efficace pour vous, à savoir partir d’un backup ou d’un dump complet du système.
Le backup
Cela consiste à générer une sauvegarde iTunes ou avec libmobiledevice. Il faut savoir que les sauvegardes ne fournissent qu’un sous-ensemble des fichiers stockés sur l’appareil, mais dans de nombreux cas, cela peut être suffisant pour au moins détecter certains artefacts suspects. Les sauvegardes chiffrées avec un mot de passe contiennent des enregistrements supplémentaires intéressants qui ne sont pas disponibles dans les sauvegardes non chiffrées, comme l’historique de Safari…etc. Donc pensez à chiffrer votre sauvegarde.
Le dump
Même s’il n’est pas toujours possible de jailbreaker certains modèles d’iPhone, c’est cet accès au système de fichiers complet qui vous permettra d’extraire des données qui ne seraient pas disponibles autrement. Mais c’est assez invasif comme méthode alors je ne vous la recommande pas, sauf si vous n’avez pas prévu de rendre le smartphone ensuite, et que vous pouvez bourriner.
Étape 1 : Installer libimobiledevice
Cet utilitaire est utile lors de l’extraction des journaux de crash et de la génération de sauvegardes iTunes.
Pour l’installer sous mac :
brew install --HEAD libimobiledevice
Pour l’installer sous Linux (ubuntu, debian comme d’hab) :
sudo apt install libimobiledevice-utils
Et pour voir si ça fonctionne, entrez simplement la commande suivante dans votre terminal. Ça va sortir un tas d’infos sur votre iPhone / iPad, ce qui est déjà très sympa :
ideviceinfo
Étape 2 : Faire la sauvegarde
On va devoir faire une sauvegarde chiffrée du smartphone. Avec un Mac et iTunes (ou l’équivalent dans le Finder d’Apple) c’est possible mais je trouve ça long et un peu buggé chez moi. J’ai donc procédé à une sauvegarde complète. Tout d’abord, vous devez vous assurer que le chiffrement des sauvegardes est activé, car comme ça elles contiendront plus de données.
idevicebackup2 backup encryption on
Après vous pouvez si vous ne l’avez pas encore fait, spécifier un mot de passe pour le chiffrement des sauvegardes comme ceci :
idevicebackup2 backup changepw
Et dès que c’est bon, vous pouvez lancer la sauvegarde comme ceci :
idevicebackup2 backup --full /répertoire/de/sauvegarde/
Étape 3 : Analyser la sauvegarde
Viens ensuite l’analyse de cette sauvegarde. Pour cela, il suffit d’indiquer à l’outil le mot de passe utilisé pour le chiffrement ainsi que le répertoire où se trouve la sauvegarde (/répertoire/de/sauvegarde/).
mvt-ios decrypt-backup -p password -d /repertoire/des_fichiers/déchiffrés /répertoire/de/sauvegarde/
Voilà, y’a plus qu’à attendre et vous obtiendrez une série de fichiers JSON contenant plein d’infos sympas comme des listes de contacts, les appels, l’historique de Chrome / Safari, les SMS, les pièces jointes des SMS, les données Whatsapp…etc.
Étape 4 : Facultative - Appliquer un indicateur de compromission (IOC)
Pour savoir si on a Pegasus, il faut relancer l’outil avec un paramètre supplémentaire –iocs comme ceci
mvt-ios decrypt-backup -p password -d /repertoire/des_fichiers/déchiffrés --iocs /répertoire/de/[pegasus.stix2](https://raw.githubusercontent.com/AmnestyTech/investigations/master/2021-07-18_nso/pegasus.stix2?source=korben.info) /répertoire/de/sauvegarde/
Et voilà… Ainsi vous saurez si Pegasus est dans la place.
Analyser un smartphone Android
Bizarrement, c’est plus complexe de faire une analyse technique d’un téléphone Android et MVT permet simplement de télécharger les APKs installés afin de les analyser et d’extraire la sauvegarde Android afin de rechercher les SMS suspects.
Étape 1 : Vérifier les APK
Pour récupérer tous les APK en place, on va donc utiliser mvt-android. Connectez le smartphone à l’ordinateur, activez le débogage USB puis lancez la commande suivant avec le chemin du répertoire où vous voulez stocker les APK :
mvt-android download-apks --output /répertoire/de/sortie
Si vous suspectez la présence d’un malware, vous pouvez également envoyer les empreintes des APK à des services comme VirusTotal ou Koodous comme ceci :
mvt-android download-apks --output /répertoire/de/sortie --virustotal (ou --koodous)
Ou si vous voulez solliciter les 2 services simultanément, ajoutez le paramètre all-checks :
mvt-android download-apks --output /répertoire/de/sortie --all-checks
Étape 2 : Vérifier la sauvegarde
Comme certaines attaques contre les téléphones Android se font par l’envoi de liens malveillants par SMS, la fonction de sauvegarde d’Android peut être utilisée pour extraire les SMS et les vérifier avec MVT.
Pour cela, vous devez connecter votre appareil Android à votre ordinateur et activer le débogage USB.
Vous pouvez ensuite utiliser adb pour extraire la sauvegarde pour les SMS uniquement avec la commande suivante :
adb backup com.android.providers.telephony
La sauvegarde sera alors stockée dans un fichier backup.ab.
Vous devrez alors utiliser Android Backup Extractor pour convertir ce fichier en un format lisible avec la commande suivante (il vous faut java) :
java -jar ~/Download/abe.jar unpack backup.ab backup.tar
tar xvf backup.tar
Vous pouvez ensuite extraire les SMS contenant des liens avec MVT comme ceci :
mvt-android check-backup --output /répertoire/des_fichiers/déchiffrés /répertoire/de/sauvegarde/
Étape 3 : Facultative - Appliquer un indicateur de compromission (IOC)
Grâce au paramètre iocs, vous pouvez spécifier un fichier STIX2 définissant une liste d’indicateurs malveillants à comparer aux enregistrements extraits de la sauvegarde par mvt.
mvt-android check-backup --output /répertoire/des_fichiers/déchiffrés --iocs /répertoire/de/[pegasus.stix2](https://raw.githubusercontent.com/AmnestyTech/investigations/master/2021-07-18_nso/pegasus.stix2?source=korben.info) /répertoire/de/sauvegarde/
Et voilà !
Que faire après le bac quand on est passionné de cybersécurité ?
Entièrement dédiée à la cybersécurité, l'école Guardia est accessible soit directement après le bac (post-bac), soit après un bac+2 ou bac+3. En rejoignant l'école Guardia, vous deviendrez développeur informatique option cybersécurité (Bac+3) ou expert en cybersécurité (Bac+5).