Aller au contenu

Mobile Forensics & Network Analysis - PTS Project

Dates des modifications : Intervenants : Modifications apportées :
- Matthieu BILLAUX
@_euzebius
Nhammmber One Mentor !
Dimanche 13 Novembre 2022 Mudsor MASOOD
mudpak
Mise à jour vers le blog (v1.0.1)
Samedi 1er Octobre 2022 mudpak Finalisation du document (v1.0.0)
Dimanche 18 Sepembre 2022 Olivier MATHIEU
Frog
Aide Technique (v0.0.10)
Mardi 16 Août 2022 mudpak Analyse Forensique (v0.0.9)
Lundi 15 Août 2022 mudpak Analyse Forensique (v0.0.8)
Dimanche 14 Août 2022 mudpak Analyse Forensique (v0.0.7)
Samedi 13 Août 2022 mudpak Analyse Forensique (v0.0.6)
Mercredi 10 Août 2022 mudpak Analyse des flux réseaux (v0.0.5)
Mardi 9 Août 2022 mudpak Analyse des flux réseaux (v0.0.4)
Lundi 8 Août 2022 mudpak Analyse des flux réseaux (v0.0.3)
Dimanche 7 Août 2022 mudpak Mise en place du Lab (v0.0.2)
Dimanche 7 Août 2022 mudpak Création du document (v0.0.1)

Logo Plan B


0. Avant-propos

Cet article a pour but de guider l’utilisateur dans :

  • La mise en place
  • Découverte
  • Utilisation

De PTS – PiRogue Tool Suite.

Il y a deux grandes phases dans ce projet qui vont consister à :

  • Mettre en place et utiliser PiRogue
  • Effectuer une investigation sur l’appareil via MVT - Mobile Verification Toolkit développé par Amnesty International

Informations :

Il est important de noter que PTS Project et MVT sont deux projets distincts réalisés par deux entités distinctes.

Certaines sections de l'article ne sont pas complètes et seulement des captures d'écrans sont insérées car j'ai de moins en moins de temps à y consacrer, donc j'ai préféré publier ce qui a été réalisé pour ne pas laisser ce travail et en faire profiter aux autres.

Disclaimer légal :

Il est formellement interdit de conduire des actions de surveillance, d’investigations ou toutes opérations sans le consentement du propriétaire de l’appareil.


1. Définitions

Un certain nombre de termes et sigles sont utilisés dans le document, voici leur signification dans le contexte du projet.

1.1 Forensics

Champ du monde Blue Team permettant de réaliser des investigations numériques en vue de retracer le parcours d’un attaquant et ainsi récupérer les preuves d’une intrusion / acte malveillant.

1.2 Mobile Forensics

Disciple du monde Blue Team, qui consiste à effectuer des analyses / investigations dans le but de détecter ou attester de la compromission d’un système d’information.

1.3 Network Analysis

Investigations des flux réseaux.

1.4 MVT – Mobile Verification Toolkit

C’est un outil d’inforensique mobile (Android et IOS), maintenu par les équipes de Amnesty International.

1.5 APK

C’est un format de fichier pour les appareils sous Android, tout comme les « exe » pour Windows, un APK permet d’installer une application sur l’appareil.


2. Prérequis

Pour mettre en place l’infrastructure, il faut répondre à certains critères matériels et logiciels pour pouvoir l’utiliser dans les meilleures conditions.

2.1 Matériel

Voici le matériel nécessaire et mes choix.

2.1.1 Raspberry Pi

Il est essentiel d’utiliser une carte Raspberry Pi parmi les modèles suivants :

  • Raspberry Pi 4 Model B - 2GB
  • Raspberry Pi 4 Model B - 4GB
  • Raspberry Pi 4 Model B - 8GB

Nous allons utiliser le modèle suivant : Raspberry Pi 4 Model B - 8GB

Au vu du contexte actuel, si vous n’arrivez pas à trouver une carte chez votre marchand habituel, vous pouvez vérifier les stocks chez d’autres marchands via ce site :

1
https://rpilocator.com/?cat=PI4

Depuis cette page nous avons un certain nombre d’informations :

1) Vendors : liste des vendeurs de matériel

2) Regions : listes des pays

3) Devices : différents modèles de Raspberry Pi mais aussi d’autres types de cartes

4) Filter. . . : filtrer les résultats sur un critère supplémentaire

5) Auto-refresh listings : permet de mettre à jour automatiquement la liste

6) Alert Sound : permet d’émettre un son

7) SKU : modèle de carte

8) Description : informations plus « lisibles » pour un humain

9) Link : lien vers le site du vendeur

10) Update Status : est-ce que le site reçoit des mises à jour

11) Vendor : noms des vendeurs

12) In Stock : est-ce que le modèle est en stock chez le vendeur

13) Last Stock : date de dernier approvisionnement

14) Price : prix en différentes monnaies

2.1.2 Alimentation

Il est recommandé d’utiliser l’alimentation officielle du Raspberry Pi.

2.1.3 Carte Micro-SD

Selon le cas il est recommandé de prendre une carte ayant une capacité de :

  • 32GB : pour une utilisation « classique »
  • 64GB : pour une utilisation plus poussée, analyse de différents appareils en parallèle

Remarque :

Par défaut l’historique réseaux des 5 jours est enregistré, donc il faut penser à prendre en compte ce paramètre lors du choix de la capacité de la carte.

2.1.4 Lecteur de cartes micro-SD

Il existe différents types de lecteurs de carte pour micro-SD, le plus simple c’est d’utiliser un lecteur USB comme ci-dessous :

2.1.5 Câble Ethernet

Il est recommandé d’utiliser un câble Ethernet de catégorie 5 au minimum.

2.1.6 Boitier

Nous allons utiliser un boitier transparent de la marque Aukru, il est facilement trouvable sur Amazon. L’avantage comme vous pouvez le constater, il est fourni également avec un refroidissement passif, cela a ses avantages et ses inconvénients mais dans notre cas cela n’aura pas de conséquences négatives sur le projet.

Vous pouvez également créer votre boitier en suivants les consignes sur les pages suivantes :

1
https://pts-project.org/docs/pirogue/build-a-pirogue-case/
1
https://github.com/PiRogueToolSuite/pirogue-case/tree/main/v1.0_beta

2.1.7 Refroidisseurs

Il est possible d’utiliser des refroidisseurs de deux types :

  • Ventilateurs
  • Radiateurs

Comme vu précédemment nous avons opté pour la seconde solution.

2.1.8 Écran

Vous pouvez installer un écran pour avoir des informations sur l’appareil, voici un exemple d’aperçu qu’il sera possible d’obtenir :

Pour mettre en place cette solution vous pouvez suivre les étapes sur les pages suivantes :

1
https://pts-project.org/docs/pirogue/build-a-pirogue-hat/
1
https://github.com/PiRogueToolSuite/pirogue-hat/tree/main/v1.0_beta

2.2 Logiciel

Du point de vue logiciel tous les éléments ci-dessous ne sont pas nécessaires, mais rendent les opérations plus faciles.

2.2.1 PiRogue OS

L’image du système à utiliser, elle est disponible sur le site du projet.

2.2.2 7-zip

Pour extraire l’archive que nous allons télécharger.

2.2.3 balenaEtcher

Pour écrire l’image PiRogue OS sur la carte Micro-SD.

2.2.4 Advanced IP Scanner

Pour trouver l’adresse IP de notre Raspberry Pi.

2.2.5 TeamViewer – version Portable

Pour prendre le contrôle du téléphone depuis notre ordinateur.

2.2.6 TeamViewer – QuickSupport

Sur le téléphone, pour autoriser le contrôle à distance via TeamViewer depuis le pc.

2.2.7 Windows Terminal

Sur le poste Windows pour se connecteur en SSH sur le Raspberry Pi.

3. PiRogue OS

Le site officiel de PTS Project est disponible à l’adresse suivante :

1
https://pts-project.org/

3.1 Présentation

Avant d’entrer dans le vif du sujet, parlons de PiRogue OS et plus généralement du PTS – PiRogue Tool Suite.

Comme son nom l’indique c’est un ensemble d’outils qui permettent :

  • D’effectuer des analyses du trafic d’un appareil mobile
  • De mener des investigations forensics

Pour réaliser des analyses du trafic, l’appareil mobile viens se connecter au point d’accès wifi crée par la plateforme ce qui lui permet d’agir comme un routeur et ainsi intercepter les flux.

Pour mener des investigations PTS utilise l’outil MVT – Mobile Verification Toolkit de Amnesty International.

Nous allons donc dans un premier temps analyser les flux via les dashboards et ensuite effectuer des analyses forensics.

Remarque :

Dans cet article nous nous concentrons aux appareils mobiles, plus précisément à un appareil Android, les fonctionnalités de PTS vont au-delà car il permet également d’analyser les flux et mener des investigations sur tous les appareils utilisant des connexions wifi.

Pour découvrir toutes les fonctionnalités de PTS je vous invite à lire la page suivante :

1
https://pts-project.org/docs/pirogue/overview/

3.2 Téléchargement

Pour télécharger la version la plus récente du système, se rendre à l’adresse suivante :

1
https://github.com/PiRogueToolSuite/pirogue-os/releases/latest

Une redirection est effectuée vers la page de la version la plus récente du moment, dans notre cas nous arrivons à la page suivante :

Cliquer sur l’archive contenant l’image, dans notre cas elle se nomme « image_2022-06-12-PiRogueOS-lite.img.xz » :

Le téléchargement commence, il peut prendre un certain temps selon la vitesse de votre connexion :

3.3 7-zip

Vous pouvez télécharger et installer 7-zip depuis le site officiel :

1
https://www.7-zip.org/download.html

3.3.1 Afficher dans le dossier

Lorsque le téléchargement est terminé, cliquer sur le logo représentant un dossier :

3.3.2 Archive téléchargée

L’explorateur de fichiers s’ouvre en sélectionnant l’archive :

3.3.3 Extraire vers

Effectuer un clique-droit, cliquer sur

  • 7-zip
  • Extraire vers « . . . »

3.3.4 Extraction en cours

L’extraction de l’archive est relativement rapide :

3.3.5 Dossier contenant l’image

Lorsque l’extraction est terminée, un dossier du même nom que l’archive est créée, effectuer une double clique sur le dossier :

3.3.6 Image PiRogue OS au format IMG

L’image PiRogue OS est présente au format « .img », à ce stade il est important de noter le chemin du dossier pour indiquer à balenaEtcher où se trouve l’image à écrire sur la carte micro-SD.

3.4 balenaEtcher

Vous pouvez télécharger et installer balenaEtcher depuis le site officiel :

1
https://www.balena.io/etcher/

3.4.1 Insertion de la carte et identification du lecteur

Insérer la carte dans le pc et une notification comme ci-dessous devrait vous informer.

Par ailleurs nous pouvons identifier le lecteur de notre carte qui porte la lettre « D », cette information est importante pour la suite du processus car il faudra en informer Etcher.

3.4.2 Recherche

Effectuer une recherche depuis le menu démarrer et cliquer sur

  • Ouvrir

3.4.3 Flash from file

Cliquer sur

  • Flash from file

L’explorateur de fichiers s’ouvre, sélectionner l’image et cliquer sur

  • Ouvrir

3.4.4 Select target

En survolant le choix du périphérique, nous avons des informations détaillées, c’est le moment de s’assurer que la carte est bien sélectionnée :

3.4.5 Flash !

Cliquer sur

  • Flash!

Remarque :

Le contrôle du compte utilisateur peut demander une confirmation pour l’opération, cliquer sur « Oui ».

3.4.6 Starting

Le logiciel prépare à effacer les données de la carte :

Remarque :

Il est très probable que la carte apparaisse dans l’explorateur de fichiers mais ne soit plus accessible comme ci-dessous, c’est tout à fait normal.

3.4.7 Flashing

L’écriture des données commence, elle peut prendre un certain temps :

3.4.8 Validating

Une vérification de l’écriture des données est réalisée pour être certain qu’il n’y a pas eu d’erreurs :

3.4.9 Flash Complete !

Lorsque toutes les opérations sont terminées, un message s’affiche comme ci-dessous :

Remarque :

La carte est automatiquement éjectée de l’ordinateur.

Une notification s’affiché également dans la zone de notifications :

3.5 TeamViewer – Portable

Avant de passer à l’étape suivante, je vous invite à télécharger la version portable de TeamViewer en se rendant à l’adresse suivante :

1
https://www.teamviewer.com/fr/telecharger/windows/

Une archive sera téléchargée :

Extraire l’archive et cliquer sur

  • TeamViewer.exe

Cocher la case :

  • J’accepte le CLUF et le DPA

Cliquer sur

  • Continuer

Nous allons par la suite nous intéresser à la zone :

  • Contrôler un ordinateur distant

3.6 TeamViewer – QuickSupport

Depuis votre appareil Android, aller dans le Play Store et rechercher « TeamViewer QuickSupport », cliquer sur

  • Installer

Remarque :

Selon la marque de votre téléphone il faudra également installer une extension supplémentaire, en voici un extrait dans la zone (3).


4. Raspberry PI 4

4.1 Mise sous tension

Insérer la carte dans le Raspberry Pi, connecter le câble Ethernet et enfin mettre sous tension la carte.

4.2 Advanced IP Scanner

Vous pouvez télécharger Advanced IP Scanner depuis l’adresse suivante :

1
https://www.advanced-ip-scanner.com/fr/

4.2.1 Télécharger Gratuitement

Cliquer sur

  • Télécharger Gratuitement

4.2.2 Téléchargement Terminé

Un exécutable est téléchargé, cliquer dessus :

4.2.3 Langue de l’assistant d’installation

Sélectionner la langue souhaitée, cliquer sur

  • OK

4.2.4 Bienvenue dans l’assistant d’installation de Advanced IP Scanner 2.5.1

Il est possible soit d’installer, soit simplement d’exécuter le logiciel sans l’installer, c’est ce que nous allons faire, cocher la case :

  • Exécuter

Cliquer sur

  • Suivant >

4.2.5 Accord de licence

Cocher la case :

  • « Je comprends et j’accepte les termes du contrat de licence »

Cliquer sur

  • Exécuter

4.2.6 Installation en cours

L’extraction des fichiers est en cours :

4.2.7 Lancement du scan

Lorsque l’installation est terminée, la fenêtre du logiciel s’affiche avec :

1) L’adresse de votre réseau local - Elle peut être différente de celle affichée sur la capture

2) Pour lancer le scan

4.2.8 Affichage des résultats

Lorsque le scan est terminé les résultats s'affichent :

1) Statut : est-ce que le poste est actif ou non ? 2) Nom : nom de la machine ou adresse IP 3) IP : adresse IP de la machine 4) Fabricant : fabricant de la carte réseau 5) Adresse MAC : adresse de la carte réseau

4.2.9 Corrélation avec un routeur

En parallèle aux informations fournies par le scanner IP, il est possible de corréler les informations via votre routeur internet, ici dans la partie DHCP nous pouvons voir que notre Raspberry Pi à l’adresse IP « 172.16.1.239 » ainsi que les autres informations sur sa configuration réseau :

Remarque :

Comme nous le verrons plus-tard, il ne faut pas oublier que le Raspberry Pi diffuse un réseau sans fil sur lequel va se connecter l’appareil que nous allons analyser.

Les informations de ce réseau sont les suivantes :

  • SSID : PiRogue1
  • Mot de passe : superlongkey

4.3 Windows Terminal

Vous pouvez télécharger et installer Windows Terminal depuis l’adresse suivante ou directement depuis le Store Microsoft :

1
https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701

4.3.1 Obtenir dans l’appli du Store

Cliquer sur

  • Obtenir dans l’appli du Store

4.3.2 Microsoft Store

Le Store Microsoft s’ouvre :

4.3.3 Ouvrir

Lorsque le téléchargement et installation sont terminés, cliquer sur

  • Ouvrir

4.3.4 Windows PowerShell

Le terminal Windows s’ouvre :

4.3.5 Connexion via SSH

Saisir la commande suivante :

1
ssh -p22 pi@172.16.1.239

Détails de la commande :

1
2
3
4
5
6
ssh : protocole à utiliser
-p : argument pour spécifier un port
22 : port à utiliser, dans le cas présent c’est le port par défaut du protocole donc nous pouvions ne pas le spécifier
Pi : nom d’utilisateur
@ : argument pour spécifier une adresse IP / nom d’hôte
172.16.1.239 : adresse IP de notre PiRogue

Puisque c’est la première fois que nous nous connectons à cette machine, une confirmation et vérification de clés est affichée, saisir

  • yes

Et appuyer sur la touche

  • Entrée

Saisir le mot de passe du compte pi et appuyer sur la touche entrée.

Remarque :

Le mot de passe par défaut est « raspberry » et c’est tout à fait normal que vous ne voyez pas les critères lors de la saisie.

Nous sommes bien connectés au PiRogue et un message d’avertissement s’affiche car nous utilisons le mot de passe par défaut :

4.4 raspi-config

Nous allons effectuer quelques modifications avant d’utiliser la plateforme, saisir la commande suivante :

1
sudo raspi-config

Détails de la commande :

1
2
sudo : pour exécuter avec les droits « root »
raspi-config : outil de configuration pour le Raspberry Pi

4.4.1 Changement du mot de passe utilisateur

4.4.1.1 1 – System Options

Comme nous avons été informés précédemment, pour des raisons de sécurité il est recommandé de changer de mot de passe pour le compte « pi », sélectionner :

  • 1 System Options

4.4.1.2 S3 – Password

Sélectionner :

  • S3 Password

Un message nous informe que nous allons devons saisir un nouveau mot de passe pour le compte « pi » :

4.4.1.3 New password

Il faut saisir le nouveau mot de passe, le confirmer et lorsqu’il correspond aux exigences de sécurité un message nous informe qu’il a bien été changé :

4.4.1.4 Password changed successfully

Un autre message vient nous informer du bon déroulement de l’opération, appuyer sur

  • Ok

4.4.2 Activation SSH

Sous certaines distributions pour Raspberry Pi le protocole SSH est activé uniquement au premier démarrage, pour le garder activer en permanence nous allons le préciser.

4.4.2.1 3 – Interface Options

Sélectionner

  • 3 Interface Options

4.4.2.2 I2 – SSH

Sélectionner

  • I2 SSH

Sélectionner

  • <Yes>

Sélectionner

  • <Ok>

4.4.3 Mise à jour des informations locales

Nous allons dans un premier temps configurer les paramètres de langue et dans un second temps configurer le fuseau horaire à utiliser.

4.4.3.1 5 – Localisation Options

Sélectionner

  • 5 Localisation Options

4.4.3.2 L1 – Locale

Sélectionner

  • L1 Locale

4.4.3.3 Locales to be generated

Une longue liste s’affiche, descendre et sélectionner :

  • fr_FR.UTF-8 UTF-8
  • <Ok>

4.4.3.4 Default locale for the system environment

Sélectionner

  • fr_FR.UTF-8
  • <Ok>

4.4.3.5 5 – Localisation Options

Sélectionner

  • 5 Localisation Options

4.4.3.6 L2 – Timezone

Sélectionner

  • L2 Timezone

4.4.3.7 Geographic area

Sélectionner

  • Europe

4.4.3.8 Time zone

Sélectionner

  • Paris

4.4.3.9 Finish

Sélectionner

  • <Finish>

En parallèle nous pouvons observer :

1) la commande « date » affichait l’heure avec le fuseau horaire BST

2) la mise à jour des paramètres régionaux

3) la mise à jour du fuseau horaire

4.5 Services PiRogue

Il nous reste quelques dernières étapes à réaliser avant de connecter l’appareil au réseau de l’outil.

4.5.1 Vérification de l’état

Pour vérifier l’état des services, saisir la commande suivante :

1
sudo systemctl list-units pirogue* grafana* suricata* influxdb*

Nous pouvons constater que les services sont actifs et démarrés, sauf celui qui gère la maintenance :

4.5.2 Redémarrage

Pour relancer tous les services, saisir la commande suivante :

1
sudo systemctl restart pirogue*


5. PiRogue Tool Suite – Découverte de l’outil

Avant de connecter notre appareil mobile au réseau du PiRogue, nous allons faire un tour des différents menus.

Une fois que l’appareil sera connecté et des données seront présentes nous irons voir certaines options plus en détails.

5.1 Accès à l’interface web

Via un navigateur web, se rendre à l’adresse suivante :

1
http://172.16.1.239:3000

Détails :

1
2
3
4
http:// : protocole http
172.16.1.239 : adresse IP du Raspberry Pi, à adapter pour votre cas
«  : » : pour spécifier l’utilisation d’un port 
3000 : le numéro du port

Remarque :

Vous pouvez également y accéder via ce lien avec la résolution DNS « http://raspberrypi.local:3000/ ».

5.2 Welcome to Grafana

Un formulaire s’affiche :

5.3 Log in

Remplir les champs

  • Email or username : par « admin »
  • Password : par « PiRogue

Cliquer sur

  • Log in

Dans la zone inférieure de la page, nous pouvons voir des liens vers différentes sources ainsi que la version actuelle :

5.4 General / Home

Par défaut nous arrivons à la page ci-dessous qui contient différents éléments :

1) General / Home : le nom de la page où nous nous trouvons

2) Devices : le nombre d’appareils connectés au réseau crée par le PiRogue

3) Aerts : le nombre d’alertes générées par Suricata

4) I/O : Inputs/Outputs = données entrantes et sortantes exprimées en taille (Mo, Go. . .)

5) Flows : représentation des flux entrants et sortants

6) Domains : noms de domaines

7) I/O : représentation des données entrantes et sortantes en forme de graphe

8) Servers location : localisation géographique des serveurs avec lesquels l’appareil a échangé des données / flux

9) Flows per country : nombre de connexions par pays

10) Alert timeline : représentation des alertes à travers le temps

11) Flows : aperçu des flux entrants et sortants de l’appareil

12) Suricata alerts : aperçu des alertes générées par Suricata

5.4.1 Add panel

Dans la zone supérieure droite de la fenêtre se trouvent plusieurs options.

Pour ajouter un nouvel élément sur le dashboard existant, cliquer sur

  • Add panel

5.4.2 Save dashboard

Il est possible d’enregistrer l’état du dashboard avec la configuration, par exemple après avoir ajusté la taille des différents éléments en cliquant sur

  • Save dashbaord

5.4.3 Dashboard settings

Il est possible de modifier les différents paramètres du bashboard en cliquant sur

  • Dashboard settings

5.4.4 Last 3 hours

Par défaut seulement les éléments des trois dernières heures sont affichés :

5.4.5 Relative time ranges

Il est possible d’afficher des éléments sur des périodes prédéfinies ou ajuster les dates et heures de début et de fin pour avoir des informations selon nos critères :

5.4.6 Time range zoom out

Il est possible de faire des « sauts » entre des slots de temps en cliquant sur la loupe au lieu d’ajuster manuellement :

5.4.7 Refresh dashboard

Par défaut le tableau de bord se rafraîchit à un intervalle prédéfini, mais il est tout à fait possible de forcer cette actualisation en cliquant sur

  • Refresh dashboard

5.4.8 10s

L’intervalle d’actualisation par défaut du tableau de bord est de 10secondes, vous pouvez choisir un autre paramètre en 5secondes à 1journée :

5.4.9 Cycle view mode

Il est possible de basculer entre les différents modes d’affichage pour plus de lisibilité, pour faire cela cliquer sur

  • Cycle view mode

Remarque :

Pour changer de mode il faut cliquer à nouveau sur ce bouton.

5.4.10 Exit Kiosk mode

Pour quitter le mode Kiosk, il faut appuyer sur la touche

  • Échap

5.5 Search Dashboards

Il est possible d’avoir plusieurs tableaux de bord, pour les explorer cliquer sur

  • Search dashboards

Nous pouvons voir les éléments suivants :

1) Search dashboards by name : une zone de recherche permet de trouver notre dashboard

2) General : la liste des différents dashboards est affichée

5.6 Create

Nous pouvons créer différents types d’éléments, cliquer sur

  • Create

5.6.1 New dashboard

Nous pouvons voir les éléments suivants :

1) New dashboard : nous sommes dans la partie des tableaux de bords

2) paramètres que nous avons vu précédemment qui permettent de personnaliser le dashboard

5.6.2 Folder

Cliquer sur

  • Create
  • Folder

5.6.2.1 Manage

5.6.2.2 Playlists

5.6.2.3 Snapshots

5.6.2.4 Library panels

5.6.3 Import

5.7 Dashboards

Ce menu permet de retrouver les éléments que nous avons vu précédemment :

5.8 Explore

5.8.1 Run query

5.8.2 InfluxDB

5.9 Alerting

5.9.1 Alert rules

5.9.2 Notification channels

5.10 Configuration

5.10.1 Data sources

5.10.2 Users

5.10.3 Teams

5.10.4 Plugins

5.10.5 Preferences

5.10.6 API keys

5.11 Server Admin

5.11.1 Users

5.11.2 Orgs

5.11.3 Settings

5.11.4 Stats

5.11.5 Upgrade

5.12 Admin

5.12.1 Preferences

5.12.2 Change password

5.13 Help


6. PiRogue Tool Suite – Analyse du trafic

6.1 Connexion de l’appareil au réseau

Nous allons utiliser un smartphone « Xiaomi Redmi 5 Plus » comme cobaye.

Pour le connecter au réseau, cliquer sur

  • Paramètres

Cliquer sur

  • Wi-Fi

Le nom par défaut du point d’accès est « PiRogue1 », cliquer dessus pour se connecter :

Le mot de passe est « superlongkey », ci-dessous nous pouvons voir que l’appareil est bien connecté au réseau :

6.2 Récoltes des données

Les données ont été récoltées durant environ 24heures.

6.3 Analyse des résultats

6.3.1 Relative time ranges

Nous allons préciser au dashboard de nous afficher les données des 24 dernières heures uniquement, c’est la durée pendant laquelle la récolte s’est effectuée :

Par ailleurs nous allons aussi préciser que nous ne souhaitons plus actualiser les tableaux de bords car en laissant le rafraichissement actif nos filtres seront réinitialisés :

6.3.2 Opérations

Avant d’exploiter les données, il faut savoir que nous pouvons faire différentes opérations sur chaque tableau, en voici un aperçu des fonctionnalités.

Il faut survoler le titre d’un tableau pour voir apparaitre un symbole pour et cliquer dessus pour faire défiler les options :

6.3.2.1 View

Pour voir le tableau sur tout l’écran, cliquer sur

  • View

Ici le tableau s’affiche complètement ce qui permet d’avoir une meilleure lisibilité :

6.3.2.2 Edit

Puisque tous ces tableaux de bords sont déjà configurés, nous pouvons également les modifier pour les adapter à nos besoins, cliquer sur

  • Edit

Un certain nombre de zones nous permettent d’effectuer les actions souhaitées :

1) Device : sélectionner le périphérique d’où proviennent les données, ici nous n’avons qu’un seul donc ce n’est pas problématique d’avoir « All »

2) des paramètres pour modifier le type d’affichage, les ranges de données et le type de tableau (graphe, courbe . . .)

3) pour sauvegarder et appliquer les changements

4) le résultat du tableau, ici une carte du monde qui représente les flux

5) paramètres pour personnaliser le tableau

6) zone pour effectuer des requêtes, ici nous avons la requête qui est appliquée pour obtenir le résultat

6.3.2.3 Share

Nous pouvons partager le tableau, cliquer sur

  • Share

Les paramètres de partage via un lien sont les suivants :

1) ici nous partageons le tableau via un lien

2) pour prédéfinir les paramètres d’horodatage sur le tableau à partager ainsi que le thème d’affichage

3) le lien complet pour accéder au tableau partagé

Il est également possible de générer un lien « court » en cliquant sur

  • Shorten URL

6.3.2.3.2 Snapshot

Il est possible de partager le tableau dans un état donné avec les informations d’un instant précis, cliquer sur

  • Snapshot

Voici les paramètres de personnalisation :

1) nom du tableau de bord, date d’expiration et délai d’attente de chargement

2) pour prendre le snapshot et partager publiquement

6.3.2.3.3 Embed

Il est possible de partager un lien qui peut être intégré sur une page existante, cliquer sur

  • Embed

Voici les paramètres de personnalisation :

1) horodatage et thème d’affichage

2) le lien qu’il faudra renseigner sur la page web

6.3.2.3.4 Library panel

La dernière option de partage permet sur le serveur lui-même de partager dans un dossier ou librairie locale, cliquer sur

  • Library panel

6.3.2.4 Explore

Pour voir les données et effectuer des requêtes, cliquer sur

  • Explore

Plusieurs zones permettent à la fois d’effectuer des requêtes et d’avoir un visuel sur les résultats :

1) paramètres généraux et pour lancer la requête

2) zone dédiée aux requêtes, ici nous avons un exemple de requête déjà écrite

3) l’affichage des résultats sous forme de graphe, puisqu’il s’agit des données géographiques nous avons les latitudes et longitudes

4) les mêmes informations représentées en forme de tableau

6.3.2.5 Inspect

Pour avoir un aperçu différent des résultats et exporter les données, cliquer sur

  • Inspect

6.3.2.5.1 Data

Dans la section « Data » il est possible d’exporter les données en format CSV :

Il est également possible de choisir d’autres paramètres avant export :

La section « Stats » permet d’avoir les informations en termes de temps de réponse par exemple :

6.3.2.5.2 Query

La section « Query » permet d’afficher la requête qui a été appliquée pour obtenir les données :

6.3.2.5.3 Panel JSON

La section JSON permet d’afficher au format JSON la requête :

Nous pouvons également choisir d’autres formats de requêtes :

6.3.2.6 More. . .

Cliquer sur

  • More. . .

6.3.2.6.1 Duplicate

Ce paramètre permet de créer une copie instantanée de la carte :

1) le tableau original

2) la copie

6.3.2.6.2 Copy

Ce paramètre permet également de créer une copie, cependant il faut réaliser quelques étapes supplémentaires.

Cliquer sur

  • Add panel

Cliquer sur

  • Paste panel from clipboard

Nous pouvons observer que la copie a bien été réalisée :

1) le tableau original

2) la copie

Maintenant nous pouvons passer à l’analyse des résultats et voir jusqu’à quel niveau les informations présentes dans chaque section peuvent nous aider dans nos investigations.

6.4 Devices

Au niveau des appareils il n’y en a qu’un seul et c’est normal :

6.5 Alerts

Il y a eu 7 alertes qui ont été générées, nous les verrons en détails plus loin :

6.6 I/O

Il y a eu près de 2GB de données consommées, nous voyons un pic d’activité au début de la récolte.

Cette information est intéressante car sans connaissance du contexte nous pouvons déjà nous demander si un tél pic est normal ou non et pourquoi le reste du temps il n’y a eu quasiment aucune activité.

6.7 Flows

Il y a eu 7 147 connexions tout au long de la récolte, l’activité s’est intensifiée du milieu vers la fin :

6.8 Domains

De nombreux noms de domaines ont été contactés, dans notre cas 421 :

6.9 I/O – graphe

Il y a eu de forts pics d’activités au début de la récolte comme nous avons vu grâce au tableau « I/O » :

Nous pouvons voir différentes informations intéressantes ici :

1) le débit en abscisses

2) l’heure en ordonnée

Il y a des pics de différents couleurs en fonction du débit qui a été atteint :

  • Vert
  • Jaune / Orange
  • Rouge

Dans le cas des pics en rouge, cela signifie qu’il y a eu une forte activité, nous pouvons aller à l’intersection des abscisses et ordonnées et voir la date et heure exacte de l’évènement :

Des lignes en pontillées de couleur violette apparaissent 7 fois sur le graphe elles correspondent aux alertes suricata :

De par la disposition par défaut des résultats, il n’est pas pratique de les observer comme ci-dessous où de nombreux pics sont rassemblés.

Pour mieux visualiser ces données il est possible de créer un effet de zoom en sélectionnant une plage de début et de fin comme c’est représenté ici par la zone grisée :

Il est également possible d’ajouter des annotations pour pouvoir revenir plus tard et se servir de repère, cliquer sur

  • Add annotation

Voici les différents éléments :

1) Description : champ réservé aux informations que nous souhaitons indiquer

2) Tags : si vous souhaitez ajouter des tags, par défaut il n’en existe pas

3) Save pour enregistrer les changements

6.10 Servers location

Ce tableau de par son visuel permet d’avoir un aperçu rapide et clair des flux qui ont été réalisés entre l’appareil et les serveurs dans le monde.

Dans le cas présent nous pouvons observer qu’il y a trois grandes zones qui ont été contactées :

  • USA
  • Europe
  • Chine

Si nous effectuons un zoom sur la carte il y a différents niveaux de couleurs pour montrer les niveaux d’interactions :

  • Rouge : élevées
  • Vert : moyenne
  • Bleu cyan : faible

6.11 Flows per country

Le tableau précédent permet d’avoir un visuel clair et rapide mais ne permet pas de quantifier le nombre de connexions contrairement au tableau ci-dessous.

Ainsi comme nous avons vu une tendance ici elle se confirme que la quasi-totalité des connexions se font dans les trois zones suivantes :

  • USA
  • Europe (France, UK, NL)
  • Chine

6.12 Flows – aperçu

Les tableaux précédents ont permis d’avoir des visuels et le nombre de connexions toujours pas suffisamment de détails, pour pallier cela le tableau ci-dessous va nous être très utile.

Nous pouvons observer différentes colonnes et il est impératif de noter que nous pouvons appliquer un filtre sur chacune d’elle grâce à l’entonnoir présent.

Voici les informations obtenues dans chaque colonne :

1) Time : Année-Mois-Jour Heures :Minutes :Secondes.MillièmeDeSeconde, permet d’avoir un horodatage très précis du début d’une connexion

2) Category : le type de trafic selon NFSteam

3) Application : type de connexion ou protocole

4) Domain : nom de domaine du serveur qui a été contacté

5) Source IP : l’hôte qui a initié le flux

6) Destination IP : l’hôte qui va recevoir le flux

7) Country : nom de code du pays vers qui le flux est envoyé

8) I/O : la quantité de données en entrée et sortie associée à ce flux

9) Community_id_b64 : identifiant en base64 qui permet d’identifier le flux de manière unique

Par la suite nous allons voir quelques cas pratiques d’informations que nous pouvons obtenir.

6.12.1 Cas 1 – Chine

Nous allons filtrer le trafic par pays et n’afficher que les flux avec la Chine, sélectionner la colonne

  • Country

Cliquer sur l’entonnoir, dans la liste déroulante sélectionner

  • CN

Cliquer sur

  • Ol

Parmi les différentes connexions qui ont eu lieu, nous allons nous intéresser aux trois flux encadrés ci-dessous :

Pour avoir plus d’informations sur un flux, il faut aller dans la colonne

  • Time

Survoler le flux en question et cliquer sur

  • Details

Nous obtenons de nombreuses informations :

1) Community ID : identifiant en base64

2) Flows : le nombre de flux

3) I/O bytes : la taille du paquet

4) Duration : la durée de la connexion

5) Alerts : nombre d’alertes suricata

6) Localisation du serveur distant

7) Alerts : Détails sur l’alerte

8) Time : horodatage du début de la connexion

9) Category : type de connexion

10) Application : type de protocole

11) Source IP : l’adresse IP de notre appareil ou du PiRogue qui forward la requête

12) Destination port : le port local

13) Destination IP : l’adresse du serveur

14) Destination port : le port du serveur

Domain : le nom de domaine qui a été contacté

Sur la carte lorsque nous survolons le point il est possible d’obtenir les coordonnées géographiques exactes du lieu :

En plus de la simple visualisation et corrélation du flux il est possible de réaliser des analyses plus avancées notamment via :

  • Vérification IP
  • Vérification DNS

Pour être certain que l’IP ou le DNS ne soient pas signalés comme étant malveillants / blacklistés.

6.12.2 Cas 2 – France

Nous appliquons le filtre pour afficher les flux vers des serveurs localisés en France.

6.12.2.1 Facebook

Ci-dessous nous pouvons observer un certain nombre de requêtes vers le réseau social Facebook, à priori rien n’anormal mais n’ayant pas installé l’application sur le portable il est étrange de le voir initier des connexions vers les serveurs de cette plateforme.

6.12.2.2 Graph Facebook

Le sous-domaine « Graph » de Facebook est également sollicité, la seule explication rationnelle qui est existe c’est le fait que Instagram soit installé et puisque c’est une application appartenant à Meta / Facebook alors les données leur sont également envoyées.

6.12.2.3 Flux divers

Nous pouvons observer un certain nombre de flux vers des domaines très reconnaissables :

6.12.3 Cas 3 – USA

Nous allons appliquer le filtre pour afficher les flux allant vers les USA.

Ici il est intéressant de noter que :

1) les flux de Tinder vont vers ce pays ce qui est normal puisque l’application est Américaine

2) les flux de Doctolib vont vers les USA, en d’autres termes des données de santé de la population française sont hébergées dans ce pays

3) il en est de même pour des serveurs appartenant au gouvernement et ici utilisés pour l’application « MonCompteFormation » (CPF)

6.13 Alert timeline

Ce graphe permet d’avoir un visuel sur les alertes générés par Suricata :

Les intersections représentées ici avec des flèches correspondent aux alertes de sévérite 1, c’est-à-dire des alertes critiques :

Les alertes de niveau 3 correspondent à un niveau de criticité faible :

Ce graphe ne permet en revanche pas de connaitre des détails sur les alertes, c’est pourquoi le tableau ci-dessous existe.

6.14 Suricata alerts

Nous avons des informations supplémentaires sur les alertes générées :

1) Time

2) Severity : le niveau de criticité de l’alerte, il y a 4 niveaux

3) Category : type de menace détectée

4) Rule : le nom de la règle qui a générée l’alerte

5) Source IP

6) Destination IP

7) Community_id_b64

Dans notre cas il y a eu deux règles qui ont générées des alertes :

1) ET INFO Android Device Connectivity Check

2) ET POLICY possible Xiaomi phone data leakage DNS

6.14.1 ET INFO Android Device Connectivity Check

6.14.2 ET POLICY possible Xiaomi phone data leakage DNS


7. MVT – Mobile Verification Tool

7.1 Présentation de l’outil

Mobile Verification Toolkit (MVT) est un outil pour faciliter l'analyse forensic consensuelle des appareils Android et iOS, dans le but d'identifier les traces de compromission.

En d’autres termes contrairement à d’autres outils, MVT permet avec l’autorisation du propriétaire de l’appareil d’effectuer des analyses sur son appareil.

Cet outil a été créée et est maintenu par Amnesty International, bien qu’il soit installé sur le PiRogue, il n’est cependant pas maintenu par l'équipe PTS.

MVT Permet d’effectuer des analyses forensics sur des appareils :

  • Android
  • Apple

Dans notre cas nous allons simplement l’utiliser sur un appareil Android.

7.2 Méthodologie de Forensics Andoid

Voici les éléments qui seront à vérifier dans le cadre d’une analyse forensic sur un appareil Android via MVT :

  • Les applications installées
  • Processus en cours
  • Applications exécutées avec les droits root
  • Sauvegardes SMS

7.3 Mise à jour de MVT

Se connecter en SSH sur le PiRogue.

7.3.1 Affichage de la version actuelle

Pour afficher la version actuelle de l’outil saisir la commande suivante :

1
mvt-android version

Détails de la commande :

1
2
mvt-android : l’outil
version : pour connaitre la version de l’outil

Nous pouvons voir que la version actuelle est « 1.5.4 » et une nouvelle version est disponible « 2.1.3 » :

7.3.2 Mise à jour vers la dernière version

Pour mettre à jour, saisir la commande suivante :

1
pip3 install --upgrade mvt

Détails de la commande :

1
2
3
4
pip3 : gestionnaire de paquets pour python3
install : paramètre pour demander une installation
--upgrade : argument, ici nous souhaitons mettre à jour un paquet
mvt : paquet à mettre à jour

7.3.3 Téléchargement de nouveaux paquets

Différentes étapes se succèdent, ici les nouveaux paquets sont téléchargés :

7.3.4 Prérequis déjà satisfaits

Les paquets nécessaires déjà présents sont listés :

7.3.5 Listes de nouveaux paquets installés

Les nouveaux paquets installés sont affichés :

7.3.6 Vérification de la version après mise à jour

Lorsque les différentes étapes sont terminées nous pouvons à nouveau saisir la commande pour vérifier la version.

Non seulement nous disposons de la dernière version de l’outil mais en plus nous sommes invités à télécharger les IOC.

7.4 Récupération des Indicateurs de compromission (IOC)

7.4.1 Téléchargement des IOC

Pour télécharger la dernière version des IOC, saisir la commande suivante :

1
mvt-android download-iocs

Détails de la commande :

1
2
mvt-android : programme à utiliser
download-iocs : paramètre pour télécharger les IOC

7.4.2 Réception des nouveaux IOC

Nous pouvons voir que les IOC qui sont téléchargés, ici parmi les trois groupes nous avons ceux de NSO Group (=Projet Pegasus).

7.4.3 Vérification de l’emplacement

Lorsque le téléchargement est terminé nous pouvons vérifier la présence des IOC dans le répertoire précédemment cité par l’outil :

7.4.4 Format des IOC

Nous pouvons voir que les IOC sont présents en différents formats :

Maintenant que notre outil est à jour et les IOC ont été téléchargés, nous pouvons brancher l’appareil au PiRogue et commencer les investigations.

7.5 Connexion de l’appareil au Raspberry Pi

Connecter l’appareil au PiRogue via un câble USB et le dévrouiller.

7.5.1 Système Android

Dans la zone de notifications devrait apparaitre un message comme ci-dessous vous informant que l’appareil a été connecté à une prise USB, appuyer sur la notification :

7.5.2 Utiliser la connexion USB pour

Sélectionner

  • Transférer des fichiers

7.5.3 Transférer des fichiers

Une fois que vous avez sélectionné ce paramètre il devrait changer de couleur comme ci-dessous :

Maintenant que l’échange de fichiers est actif via USB, nous allons par la suite activer le mode débogage via USB.

7.6 Activation du mode Android Debug Bridge (ADB)

7.6.1 Activation du mode développeur

7.6.1.1 Paramètres

Pour activer le mode ADB, il faut dans un premier temps activer le mode développeur.

Aller dans les paramètres du téléphone :

7.6.1.2 A propos du téléphone

Appuyer sur

  • A propos du téléphone

7.6.1.3 Toutes les spécifications

Appuyer sur

  • Toutes les spécifications

7.6.1.4 Version MIUI

Appuyer plusieurs fois d’afficher sur

  • Version MIUI

7.6.1.5 Nombre d’étapes restantes avant activation du mode développeur

Il faut normalement appuyer plusieurs fois, et vous devriez voir une notification vous informant de combien de tentatives il reste avant d’activer le mode « développeur » :

7.6.1.6 Vous êtes désormais un développeur !

Lorsque le mode développeur est activé un message comme ci-dessous s’affiche :

Appuyer sur la flèche retour pour revenir au menu précédent :

7.6.2 Activation du débogage USB

7.6.2.1 Paramètres supplémentaires

Appuyer sur

  • Paramètres supplémentaires

7.6.2.2 Options développeur

Appuyer sur

  • Options développeur

7.6.2.3 Débogage USB

Par défaut le mode débogage USB est désactivé, appuyer dessus pour l’activer :

7.6.2.4 Autoriser le débogage USB

Pour confirmer l’activation du mode, appuyer sur

  • OK

Puisque le téléphone est connecté via USB avec le PiRogue (=Raspberry Pi) une vérification est faite via la clé RSA pour être certain d’être connecté au bon appareil, appuyer sur

  • OK

7.6.2.5 Zone de notifications

Dans la zone de notifications, il est désormais possible de voir :

  • USB pour le transfert de fichiers
  • Débogage USB activé

7.6.3 Vérification de la connectivité de l’appareil

Pour s’assurer que le PiRogue détecte bien l’appareil, saisir la commande suivante :

1
adb devices

Ici nous pouvons voir qu’un appareil a bien été détecté, nous pouvons donc passer aux étapes suivantes.

7.7 mvt-android --help

MVT-Android propose différentes options, pour les afficher saisir la commande suivante :

1
mvt-android --help

Nous pouvons voir les différentes commandes qu’il est possible d’exécuter :

Nous allons voir certaines des commandes en détails par la suite.

7.8 mvt-android check-adb

Ce module permet de vérifier l’appareil via ADB, et permet d’effectuer des vérifications de la présence d’IOC par exemple en utilisant différents modes et modules.

7.8.1 list-modules

Pour afficher la liste des modules, saisir la commande suivante :

1
mvt-android check-adb --list-modules

Voici la liste des modules qui peuvent être utilisés, si nous souhaitons utiliser un spécifique il faudra le signaler à l’outil via le paramètre « m » :

7.8.2 check-adb

Nous allons lancer une analyse sans spécifier de module, saisir la commande suivante :

1
mvt-android check-adb --output Xiaomi/

Détails de la commande :

1
2
3
4
mvt-android : pour analyse d’un appareil Android
check-adb : vérification via ADB
--output : pour spécifier un dossier où seront enregistrés les résultats
Xiaomi/ : le nom du dossier où seront enregistrés les résultats de l’analyse

7.8.2.1 Chargement des IOC

Les différents IOC sont extraits et chargés :

7.8.2.2 Activation des modules

Dans la suite de l’analyse nous avons plusieurs éléments intéressants :

1) la vérification via ADB commence

2) le module « ChromeHistory » est exécuté

3) le module « ChromeHistory » n’a produit aucune détection

4) une demande de savegarde est faite, il faut l’accepter sur le téléphone sinon les messages ne seront pas analysés

5) le module « Whatapp » commence son analyse

7.8.2.3 Applications gérants les appels entrants

Des applications qui sont autorisées à utiliser l’application téléphone sont listées, dans le cas présent elles sont légitimes :

7.8.2.4 Applications interceptants les SMS

Dans le cas de l’interception des SMS, autant les premières applications sont légitimes mais si on ignore que la dernière application est en lien avec « Signal » cela peut être un indicateur d’application malveillante :

7.8.2.5 Nombre de permissions accordées

Au niveau des permissions des applications nous avons le nombre de permissions pour chacune d’elles :

7.8.2.6 Scan via VirusTotal

Il est possible d’envoyer les éléments pour analyse sur VirusTotal, auquel cas il faudra renseigner la clé API, ce qui n’est pas notre cas.

7.8.2.7 Récapitulatif du scan

Lorsque le scan est terminé un récapitulatif est affiché et dans notre cas il n’y a pas de présence d’IOC parmi ceux que nous avons utilisés :

7.8.3 Fichiers générés

A la fin de l’analyse un certain nombre de fichiers sont générées et enregistrés dans le répertoire que nous avons défini dans la commande précédente :

7.8.3.1 command.log

Ce fichier enregistre toutes les étapes qui ont été réalisées à l’issue de la commande :

7.8.3.2 dumpsys_activities.json

Ce fichier contient la liste des « activités », dans le contexte Android une activité c’est une action qui est réalisée très souvent avec interaction avec l’utilisateur.

Source :

1
https://developer.android.com/reference/android/app/Activity

7.8.3.3 dumpsys_battery_daily.json

Ce fichier contient l’historique de la batterie :

Source :

1
https://developer.android.com/studio/command-line/dumpsys#battery

7.8.3.4 dumpsys_battery_history.json

7.8.3.5 dumpsys_dbinfo.json

7.8.3.6 dumpsys_receivers.json

7.8.3.7 dumpsys.txt

Ce fichier contient la liste des services en cours d’exécution :

Source :

1
https://developer.android.com/studio/command-line/dumpsys

7.8.3.8 files.json

Ce fichier liste tous les fichiers et dossier présents sur l’appareil, dans l’extrait ci-dessous nous pouvons voir que les éléments présents dans la carte SD ont été listés :

7.8.3.9 getprop.json

Ce fichier contient les détails sur les spécifications de l’appareil :

7.8.3.10 info.json

Ce fichier contient les informations sur les IOC qui ont été utilisés pour l’analyse :

7.8.3.11 logcat_last.txt

Ce fichier est censé contenir les journaux d’évènements systèmes avant le dernier redémarrage, mais dans le cas présent la récupération n’a pas pu être effectuée :

Source :

1
https://developer.android.com/studio/command-line/logcat

7.8.3.12 logcat.txt

Ce fichier contient les journaux d’évènements de l’appareil :

7.8.3.13 packages.json

Ce fichier contient la liste de toutes les applications installées ainsi que des informations sur celles-ci telles que :

  • package_name : le nom complet du paquet
  • file_name : l’emplacement du fichier APK
  • system : est-ce que c’est une application intégrée à l’appareil ?
  • third_party : est-ce que c’est une application tièrce ?
  • files : informations sur l’emplacement et Hash du fichier APK
  • version_name : la version
  • requested_permissions : les permissions accordées

7.8.3.14 processes.json

Ce fichier contient la liste des processus en cours d’exécution sur l’appareil :

  • user : le compte qui est utilisé
  • name : le nom du processus

Nous pouvons constater que sur les 565 processus en cours, il y a 420 qui sont exécutés avec le compte root !

7.8.3.15 selinux_status.json

Ce fichier permet de connaitre le statut du paramètre SELinux :

7.8.3.16 settings.json

Ce fichier contient la liste de tous les paramètres de l’appareil, voici quelques informations que nous pouvons trouver :

  • webview_provider : le navigateur par défaut
  • wifi_country_code : les fréquences de quel pays sont utilisés pour la Wi-Fi
  • wifi_p2p_device_name : le nom de l’appareil affiché lors de la connexion « Wi-Fi Direct »

Source :

1
https://developer.android.com/training/connect-devices-wirelessly/wifi-direct

7.8.3.17 timeline.csv

Ce fichier contient la liste des applications avec quelques informations telles que :

  • package_install :
  • package_first_install :
  • package_last_update :

7.8.4 Calcul des Hash

Pour des raisons légales et d’intégrité des données, lors des investigations il est cruciale de calculer les empreintes des éléments récoltés.

7.8.4.1 MD5

Nous allons calculer l’empreinte MD5 des fichiers qui ont été générés par l’outil, saisir la commande suivante :

1
md5sum *

Détails de la commande :

1
2
md5sum : nous souhaitons obtenir l’empreinte MD5
* : pour signifier que nous souhaitons effectuer cette opération sur tous les éléments

Ici nous avons bien l’empreinte MD5 et en face le nom de chaque fichier.

7.8.4.2 SHA256

Bien que MD5 soit encore très utilisé, il y a des risques de collisions (=plusieurs éléments peuvent avoir la même empreinte), c’est pourquoi il est recommandé d’utiliser un algorithme plus puissant tel que le SHA256.

Pour calculer l’empreinte, saisir la commande suivante :

1
sha256sum *

Nous obtenons les empreintes en face des fichiers, ici la longueur du hash est plus longue du au fait que l’algorithme ne soit pas le même :

7.9 mvt-android download-apks

Nous allons télécharger les fichiers APKs présents sur l’appareil, cette action permet d’analyser un APK suspect par la suite.

7.9.1 download-apks

Saisir la commande suivante :

1
mvt-android download-apks --output Xiaomi-APKs

Détails de la commande :

1
2
3
download-apks : pour télécharger les fichiers APK
--output : pour spécifier un répertoire d’enregistrement
Xiaomi-APKs : le nom du dossier dans lequel nous souhaitons exporter les APK

7.9.2 Retrieving list of installed packages

Avant le téléchargement différentes étapes se succèdent :

  • Récupération de la liste des paquets installés
  • Avertissement sur des autorisations accordées aux applications et qui potentiellement dangereuses

7.9.3 Listes des applications et dates d’installations

La liste des applications est affichée ainsi que leur date d’installation :

7.9.4 Extraction de la liste des applications et téléchargement

D’autres phases se succèdent :

1) affichage de la liste des applications systèmes et non système

2) dossier dans lequel est APK seront extrais

3) nombre de paquets non-système

4) début du téléchargement

5) exemple de téléchargement d’une application, ici AmazonShop

7.9.5 Exemple de téléchargement

L’état de l’avancement du téléchargement est consultable en temps réel :

7.9.6 Finalisation du processus

Lorsque les téléchargements sont terminés l’outil nous en informe :

7.9.7 Fichiers générés

A la fin du processus nous obtenons :

  • apks
  • apks.json

7.9.8 Répertoire contenant les APK

Voici un extrait du dossier qui contient les fichiers APK :

7.9.9 Fichier apks.json

Voici un extrait du fichier « apks.json », il contient pour chaque application téléchargée :

1) des informations générales, notamment l’emplacement sur l’appareil

2) des empreintes pour vérifier l’intégrité de l’APK

3) les permissions accordées à l’application

7.10 adb backup

Nous allons effectuer une sauvegarde des SMS/MMS pour les analyser par la suite.

7.10.1 Sauvegarde des SMS/MMS

Saisir la commande suivante :

1
adb backup -nocompress com.android.providers.telephony

Détails de la commande :

1
2
3
adb backup : pour effectuer une sauvegarde
-nocompress : pour ne pas compresser le fichier
com.android.providers.telephony : l’application dont nous souhaitons faire la sauvegarde

Une intervention manuelle sur l’appareil est requise pour la suite du processus :

7.10.2 Sauvegarde complète

Il est possible de définir un mot de passe pour la sauvegarde et dans le cas présent nous pouvons également voir les éléments qui seront sauvegardés :

7.11 mvt-android check-backup

Lorsque la sauvegarde est terminée nous pouvons l’analyser.

7.11.1 check-backup

Saisir la commande suivante :

1
mvt-android check-backup --output Xiaomi-SMS/ backup.ab

Détails de la commande :

1
2
3
4
check-backup : pour analyser un fichier
--output : pour spécifier un dossier où seront enregistrés les éléments après analyse
Xiaomi-SMS/ : le dossier où seront enregistrés les éléments
backup.ab : le fichier de sauvegarde à analyser

7.11.2 Checking Android backup

Le programme initie la vérification :

7.11.3 Analyse des messages

Les messages sont analysés :

7.11.4 Résultats de l’analyse

A la fin du processus nous pouvons voir le nombre de messages qui ont été analysés et le résultat :

7.11.5 Fichiers générés

Lors de l’analyse un certain nombre de fichiers ont été créés :

  • command.json : historique des actions qui ont été réalisées lors de l’analyse
  • info.json : informations sur les IOC testés

7.11.6 Fichier sms.json

Le fichier « sms.json » contient tous les SMS / MMS, voici quelques champs qui sont présents :

  • body : le message
  • date : la date au format Epoch (= nombre de secondes depuis le 1er Janvier 1970)
  • isodate : date au format international

Source :

1
https://www.epochconverter.com/


8. Conclusion

Nous avons vu à travers cet article comment mettre en place PTS et utiliser ses différents outils pour :

  • Analyser les flux réseaux
  • Chercher des IOC sur un appareil mobile

Bien que nous n’ayons pas vu les fonctionnalités avancées des outils, nous avons déjà un aperçu des possibilités offertes et l’utilité dans un contexte CSIRT / CERT.


9. Erreurs courantes

9.1 PiRogue OS

Problème :

La carte « Servers location » ne s’affiche plus :

Solutions :

Si vous venez de mettre sous tension le Raspberry Pi il faut attendre environ 5 minutes le temps que l’infrastructure et les services soient fonctionnels

Si vous avez attendu au-delà de 5 minutes, il faut rafraichir la page ou appuyer sur (F5)

9.2 Raspberry Pi

Problème :

Le nom du point d’accès (PiRogue) par défaut ne me plait pas, comment le changer ?

Solution :

Il faut modifier le fichier de configuration « /etc/hostapd/hostapd.conf »et remplacer PiRogue par le nom que vous souhaitez insérer :

9.3 MVT – Mobile Verification Toolkit

9.3.1 Erreur à la récupération des IOC

Problème :

Il est impossible de récupérer la liste des IOC :

Solution :

Il faut mettre à jour MVT, saisir la commande suivante : « pip3 install --upgrade mvt ».

9.3.2 Erreur lors du lancement des commandes

Problème :

Lors de la saisie d’une commande aucun module ne se lance pourtant l’appareil mobile est bien connecté :

Solution :

Saisir la commande « adb kill-server » pour résoudre le problème.


10. Sources

10.1 PiRogue tool suite

Site officiel :

1
https://pts-project.org/

Get Started :

1
https://pts-project.org/docs/prologue/introduction/

Build a PiRogue :

1
https://pts-project.org/docs/pirogue/build-a-pirogue/

Operate a PiRogue :

1
https://pts-project.org/docs/pirogue/operate-a-pirogue/

10.2 Rpilocator

Site officiel :

1
https://rpilocator.com/?cat=PI4

10.3 MVT – Mobile Verification Toolkit

Documentation :

1
https://docs.mvt.re/en/latest/

MVT 2.1.3 :

1
https://pypi.org/project/mvt/

10.4 PIP3

Python PIP usage :

1
https://note.nkmk.me/en/python-pip-usage/

10.5 Xiaomi

Activation du mode deboguage :

1
https://help.airdroid.com/hc/en-us/articles/360045329413-How-to-Enable-USB-debugging-on-Xiaomi-