Firefox (III) – Les outils de développement – Cas pratique – OSINT sur Zello

Firefox (III) – Les outils de développement – Cas pratique – OSINT sur Zello

Ce billet est le troisième billet d’une série sur le navigateur Firefox.

Nous avons vu dans la première de cette série d’articles sur les outils de développement web de Firefox (« dev tools » pour aller plus vite), comment ils pouvaient être utilisés de manière fine pour collecter de l’information en source ouvertes.
Nous vous proposons aujourd’hui un cas pratique complet d’utilisation de ces outils sur le site internet Zello.com.

Qu’est-ce que Zello?

Zello est une application pour téléphone mobile ou tablette Android et iOS transformant ces derniers en Talkie-Walkie : un gros bouton push-to-talk, un canal public ou privé que vous créez à volonté… Vous voilà équipé de petites radios mobiles à portée mondiale, de très bonne qualité audio, très utiles lors de vos déplacements en famille, par exemple. Les communications, audio ou texte, transitent via le réseau internet.

Cette facilité d’emploi en a fait un réseau également très utilisé lors des conflits par les populations civiles, les groupes armés (au Dombass par exemple), ou les services d’urgences (Casques blancs en Syrie…).

Les chaînes (channel) publiques sont susceptibles d’héberger des messages audio librement accessibles au public et donc de fournir des informations de contexte assez précieuses pour la recherche en sources ouvertes. Mais travailler en OSINT sur le site de Zello n’est pas une sinécure.
Voilà pourquoi les dev tools de Firefox vont nous aider.

Chercher de l’information sur Zello.

Pour cet exemple, nous nous intéressons à la région d’Idleb (Syrie), qui fait l’objet d’une intense campagne de bombardements par le régime syrien et les forces russes depuis plusieurs mois.

L’idée de départ, notre postulat, est que l’application Zello est peut-être utilisée par les secouristes, la population, ou les combattants et que peut-être, nous pouvons récupérer de l’information importante via des bribes de conversation audio.

Zello ne dispose pas d’un moteur de recherches très puissant et qui plus est, ce dernier est plutôt bien caché!

Nous allons donc utiliser un GoogleDork, une requête un peu spécifique, pour rechercher des chaînes en lien avec le secteur d’Idleb.


Les utilisateurs locaux utilisent l’arabe, il nous faut donc contextualiser la recherche en utilisant la graphie arabe de la ville.


إدلب site:zello.com

La recherche renvoie environ 150 résultats mais pour un aspect pratique et concret, nous nous intéressons aux chaînes récentes (moins de trois ans) et comportant si possible un nombre important d’abonnés (subscribers).

La chaîne مرصد ابو عرب سراقب (Observatoire Abu Arab Saraqeb) est particulièrement intéressante :

Créée il y a trois mois environ, elle regroupe déjà plus de 270.000 utilisateurs. Une traduction sommaire de la biographie du profil nous indique qu’il s’agit d’un poste d’observation militaire, destiné à la surveillance du trafic aérien. Le groupe dispose de trois administrateurs, et seize modérateurs, il est donc animé et vivant. Il s’agit d’un système d’alerte équivalent à Sentry Syria, à destination des populations civiles.
A ce stade, il serait déjà possible de s’abonner à cette chaîne sur l’application mobile, en respectant le cas échéant quelques précautions élémentaires (profil, burner phone, etc…).

Effectuons donc un archivage de cette chaîne susceptible de disparaître, sur Archive.Today et sur Archive.org.

Une question se pose : cette chaîne dispose-t-elle de messages publics accessibles sur son site?

L’URL de recherche sur Zello n’est pas facilement accessible.
Pour obtenir les derniers messages postés sur l’ensemble des canaux il faut utiliser cet outil :

https://zello.com/shared/#latest/1//////undefined

Notez la présence peu commune de multiples slashs sur cette URL…
Sur cette page, il est possible de rechercher par channel, par profil, par utilisateur ayant partagé un message. Il est possible de filtrer par langue.

Effectuons un recherche sur la chaîne مرصد ابو عرب سراقب.
Elle retourne une réponse paginées, par tranche de 10 messages, « plus de 1.000 enregistrements » selon le site. On le voit là aussi, la réponse du site est plutôt floue.

Lors de l’analyse d’un site, l’étude d’une URL est aussi très importante.

Cliquez sur le bouton Next. L’URL devient alors :

https://zello.com/shared/#latest/2/%D9%85%D8%B1%D8%B5%D8%AF%20%D8%A7%D8%A8%D9%88%20%D8%B9%D8%B1%D8%A8%20%D8%B3%D8%B1%D8%A7%D9%82%D8%A8/////undefined

Juste après « #latest/« , le chiffre 1 a été remplacé par le chiffre 2 : la pagination est donc accessible simplement en incrémentant cette valeur de 1… Intéressant!

Pour chaque message, les informations disponibles a priori sont les suivantes : nom de l’utilisateur à l’initiative du message, durée du message, chaîne, heure approximative et nombre de lecture dudit message. Pour l’instant, c’est assez vague.
Lorsque l’on clique sur un des messages, apparaît alors le lecteur suivant :

S’il est possible de lire le son, cette première séquence ne permet pas d’aller beaucoup loin dans la recherche, alors même que l’on dispose d’une banque audio visiblement assez conséquente. Plutôt frustrant donc!

Les dev tools à la rescousse!

Ouvrons les dev tools de Firefox, et notamment l’outil Réseau, (CTRL+MAJ+E), sur la page de recherches de la chaîne et réactualisons la page.

En filtrant les requêtes réseau, on constate que le site est assez surchargé de liens vers les réseaux sociaux Facebook, Google, Twitter, Linkedin, etc…
Autant le dire tout de suite, Zello est très gourmand en matière de données personnelles… Heureusement, le Plugin uBlock bloque l’essentiel de ces requêtes…

A ce stade, filtrons ces requêtes en ne gardant que celles au format XHR, prenons la première URL et observons son contenu dans l’onglet « réponse » à droite.

Bingo!
Nous constatons que les dix premiers résultats sont envoyés grâce à un fichier Json contenant l’ensemble des informations (metadonnées), des messages.
Comme dans le premier volet de cette série d’articles sur Firefox, nous cliquons sur cette URL en tant que cURL avec le bouton droit et exportons son contenu dans un terminal, au format Json (le > zello.json à la fin).

curl 'https://zello.com/shared/-/latest/1/%D9%85%D8%B1%D8%B5%D8%AF%20%D8%A7%D8%A8%D9%88%20%D8%B9%D8%B1%D8%A8%20%D8%B3%D8%B1%D8%A7%D9%82%D8%A8/////undefined' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0' -H 'Accept: /' -H 'Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3' --compressed -H 'Content-Type: application/x-www-form-urlencoded' -H 'X-Requested-With: XMLHttpRequest' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Referer: https://zello.com/shared/' -H 'Cookie: __cfduid=de2c760986dd4346c968fb357057eb0ef1565680803; PHPSESSID=ea80d5b5aab44ac731725ea949d93851' -H 'Cache-Control: max-age=0' -H 'TE: Trailers' --data 'nonce=9qyne6zvzcv02xmbbl95q5xgjg63p412n491shpfgfs24zr64a5yahv5v6u7f4wl' > zello.json

Il est possible de transformer facilement ce fichier en un fichier tabulaire (csv ou xls) avec un outil tel qu’OpenRefine. Pour l’exemple ci-dessous, certaines colonnes inutiles ou redondantes ont été retirées.

zello-json.csv

1565817526Q7yjr081KxhQabo asad assafhttps://s3.amazonaws.com/zello.sharedmessages/Q7yjr081KxhQ08/14/2019 16:18:46 Android 4.65abo asad assafar15658174841565817527
1565793585UxmZEqic5jMgshhehdhdhdhhttps://s3.amazonaws.com/zello.sharedmessages/UxmZEqic5jMg08/14/2019 09:39:451Android 4.65shhehdhdhdhar15657935431565793585
15657935314sDN5fB4RK3Snor nortvhttps://s3.amazonaws.com/zello.sharedmessages/4sDN5fB4RK3S08/14/2019 09:38:51Android 4.64nor nortvar15657934381565793532
1565793477EdqnvlAwFY5qzzddrreewwhttps://s3.amazonaws.com/zello.sharedmessages/EdqnvlAwFY5q08/14/2019 09:37:57Android 4.65zzddrreewwar15657933441565793477
1565793436SD9FMXQID33iahmad.tec200https://s3.amazonaws.com/zello.sharedmessages/SD9FMXQID33i08/14/2019 09:37:16Android 4.69ahmad.tec200en15657934121565793437
1565779734xoanwLa4F36Odgdytuhttps://s3.amazonaws.com/zello.sharedmessages/xoanwLa4F36O08/14/2019 05:48:548Android 4.65dgdytuar15657780851565779734
1565727084g2she5inRHo2ytrewqjhgdaahttps://s3.amazonaws.com/zello.sharedmessages/g2she5inRHo208/13/2019 15:11:24Android 4.67ytrewqjhgdaaar15657268611565727084
1565698368BI5F4jD63Ockahmdalomlahttps://s3.amazonaws.com/zello.sharedmessages/BI5F4jD63Ock08/13/2019 07:12:481Android 4.56ahmdalomlaar15656982971565698368
1565692805DePxegwqPJbOhasan.basid.jdihttps://s3.amazonaws.com/zello.sharedmessages/DePxegwqPJbO08/13/2019 05:40:05Android 4.67hasan.basid.jdiar15656926851565692805
15656399517wj3tUEXJga2xjssdjjdddhttps://s3.amazonaws.com/zello.sharedmessages/7wj3tUEXJga208/12/2019 14:59:112Android 4.67xjssdjjdddar15656392361565639952

Nous constatons qu’en réalité, les données librement disponibles sur l’application Zello sont beaucoup plus verbeuses que ce qu’il était possible d’imaginer au départ :
– L’horodatage de l’envoi est complet et lisible, la version du logiciel employé également…
– Mais surtout, ce fichier donne l’adresse directe de téléchargement du fichier audio, sur un serveur Amazon S3!

Nous disposons donc désormais d’une liste de fichiers téléchargeables, certes avec des noms apocryphes (ex : Q7yjr081KxhQ…), mais grâce au fichier csv obtenu via les Dev Tools de Firefox, nous disposons également d’une table de correspondance indiquant date, heure de la mise en ligne, ainsi que l’identifiant de l’auteur….

La suite?

L’objet de cet article est essentiellement de vous montrer, à l’aide d’un cas concret, comment les Outils de Développement Web du navigateur Firefox peuvent vous aider dans vos recherches en Sources Ouvertes.

Vous remarquerez que nous n’avons utilisé aucun outil miraculeux hormis Firefox mais qu’en suivant une démarche méthodique simple (Que cherche-t’on?, requête google adaptée, première analyse de page, archivage, analyse fine complémentaire via les dev tools….), nous avons pu remonter des informations essentielles à notre recherche,

Mais en plus de la collecte d’informations, ces outils ouvrent de nouvelles perspectives pour l’automatisation de cette collecte, dont voici quelques pistes :

  • Il paraît impossible a priori de déterminer facilement le nombre total de messages disponibles (« plus de mille » nous indique le site…). Toutefois, en remplaçant la valeur numérique dans l’URL par 100, 101 (etc…)


https://zello.com/shared/#latest/2/%D9%85%D8%B1%D8%B5%D8%AF%20%D8%A7%D8%A8%D9%88%20%D8%B9%D8%B1%D8%A8%20%D8%B3%D8%B1%D8%A7%D9%82%D8%A8/////undefined

et en observant le contenu affiché, il est possible de constater que le premier message a été posté il y a cinq mois (valeur numérique 101) :

  • Le corollaire de cette constatation, est qu’il est sans doute possible (spoiler : oui c’est possible!) de créer un script informatique simple (en Python, en Bash, en DOS, en R…), sous forme d’une boucle allant de 1 (première page), à 101 (dernière page), capable de récupérer en quelques minutes, l’intégralité des messages (1.010 à la date de rédaction de cet article) de cette chaîne Zello!
  • Enfin, disposer d’un gros millier d’adresses Amazon S3 permet également d’envisager de créer une boucle identique, capable d’aspirer facilement l’intégralité de ces données pour analyse et archivage….
  • Ces données peuvent être analysées de plusieurs manières : contenu des conversations (type d’aéronefs, bilan humains, géolocalisation des impacts….), statistiques sur la fréquence des observations qui donnent une idée de l’intensité des bombardements, et peuvent aider les enquêtes (citoyennes, journalistiques, judiciaires…) en livrant des éléments de contexte difficiles à recueillir d’une autre manière…

Ces pistes feront l’objet de petits articles supplémentaires ici-même dans quelques temps! 🙂

Firefox (III) – Les outils de développement – Cas pratique – OSINT sur Zello

Firefox (II) – Interlude – Extensions utiles pour l’OSINT

Ce billet est le second billet d’une série sur le navigateur Firefox.

A la suite du premier billet sur Firefox, quelques lecteurs ont eu un peu mal au crâne sur l’extraction du contenu à base de cURL. 😉
Avant de reprendre l’examen des « Dev Tools » de Firefox, je vous propose donc un petit interlude autour des extensions (« add-ons ») de ce navigateur.

Sans refaire l’historique de Firefox, 2015 marque une date importante pour le navigateur car elle signe l’abandon de son langage propre XUL, utilisé pour coder les extensions, au profit du standard WebExtensions, commun notamment à Chrome. A cette date, et au fur et à mesure des sorties des nouvelles versions de FF, un grand nombre de Add-ons, non-mis à jour par leurs créateurs, se sont arrêtés de fonctionner. On relira avec le sourire ce billet annonçant la mort probable de Firefox à cette occasion.


Évidemment, il n’en a rien été et à ce jour, Firefox dispose d’un immense magasin d’extensions en tout genre. En faire l’inventaire relève de la gageure. Vous avez tous certainement « l’extension géniale qui fait…. ».
Néanmoins, en voici quelques unes qui nous semblent essentielles pour l’OSINT.

En préambule, il est utile de rappeler que l’installation d’un plugin, qui est le plus souvent développé par un tiers, dans Firefox n’est pas sans risque pour votre navigateur : intentionnellement ou non, il peut laisser fuiter des informations sur votre navigation, voire laisser un accès direct à votre machine.

Une certaine prudence est donc de mise avant d’installer quoique ce soit.

On s’attachera ainsi à n’installer que des plugins réellement utiles (pensez à désinstaller ceux que vous n’utilisez pas!), régulièrement mis à jour, avec une solide base d’utilisateurs, documentés, et jouissant d’une solide réputation.

Vous pouvez cliquer sur les titres pour obtenir directement les extensions.

Open Side View

Longtemps resté en phase beta, l’extension Open Side View est passée il y a quelques mois en extension officielle de Firefox. Elle permet d’ouvrir une version mobile d’une page directement dans le navigateur, et plus de votre vue traditionnelle, côte à côte.
Cette fonctionnalité est très intéressante lors de recherches sur des images ou des vidéos : vous disposez ainsi d’une vue constante sur l’image de référence à gauche, et des images que vous comparez à droite.

Elle est évidemment désactivable/activable à volonté.

uBlock Origin

Bloquer les publicités, c’est parvenir au nirvana du web propre, protéger sa vie privée en bloquant l’essentiel des trackeurs et ressources publicitaires, et accélérer sa navigation… Si vous ne devez en utiliser qu’un seul, c’est bien uBlock Origin. Évitez par exemple l’obsolète AdBlockPlus (ABP), qui ne bloque plus grand chose.
Libre, gratuit, uBlock Origin est compatible avec tous les navigateurs web. Léger, il n’encombrera pas inutilement la mémoire de votre PC. Enfin, il est totalement paramétrable et vous permettra de régler très finement son utilisation en bloquant par exemple certains éléments gênants.

Attention toutefois : dans le cas de certaines recherches en sources ouvertes, il peut être préférable de ne pas bloquer les publicités. Ainsi lorsque vous travaillez sur le financement d’un site internet, il peut être intéressant d’observer le fonctionnement des régies publicitaires qui y sont affichées/affiliées.

SingleFile

Lors de vos recherches en sources ouvertes, il est important de garder une trace numérique sous forme d’archive, des sites que vous visitez.

SingleFile, proposée par l’ami Gildas Lormeau, permet de sauvegarder une page web en un seul fichier html contenant l’ensemble des données affichées sur la page : texte, formatage, css, etc… Pour qui a déjà tenté d’utiliser la fonction « enregistrer sous » du navigateur, qui génère un fichier racine et une arborescence complexe dans un sous-répertoire, SingleFile s’avérera essentiel.

Une fonction intéressante proposée par SingleFile est l’ajout de la signature SHA du fichier dans le titre du fichier pour attester la non modification de son contenu. (attention toutefois à la longueur du titre ainsi généré, qui peut être incompatible avec certains systèmes d’exploitation).

VideoDownloadHelper

Là aussi, si on doit parler méthodologie, il est primordial de sauvegarder les vidéos intéressantes que vous découvrez ou consultez sur internet : elles peuvent être ainsi étudiées en détail postérieurement comme sur l’exemple Hist-OSINT, et vous vous prémunissez ainsi d’une éventuelle disparition de ce contenu.
Il existe une multitude d’extensions capable de télécharger du contenu multimédia. Mais VideoDownloadHelper est celle qui permet de télécharger l’essentiel des formats actuellement utilisés sur le web, de les transcoder si besoin, et qui ne s’arrêtera pas de fonctionner sur les formats dits de streaming. C’est vraiment le couteau suisse du téléchargement multimédia.
Seul petit bémol, surtout si vous ne disposez pas des droits d’administration de votre poste, vous devrez installer une petite application supplémentaire, gratuite et annexe au plugin, qui s’occupera des vidéos en streaming.

Dans les cas les plus complexe, on pourra utiliser JDownloader, pour télécharger une vidéo récalcitrante (JDowloader n’est pas une extension FF).

Easy Screenshot

Easy Screenshot est un gestionnaire de capture d’écran simple et efficace qui vous permettra de prendre et d’éditer simplement des captures d’écran de votre navigateur, soit dans sa totalité, soit dans la partie visible à l’écran, soit sur une partie à de l’écran à définir.
Indispensable lorsque vous voulez illustrer un article ou un rapport d’analyse. Les captures d’écran peuvent être annotées simplement avant usage.

Link Gopher

Link gopher permet en un seul clic de récupérer l’intégralité des liens html d’une page web. Il est également possible de filtrer les liens par expression récurrente. Le dédoublonnage des liens est inclus ainsi que la possibilité d’ouvrir ces liens dans un onglet séparé.

Exemple d’utilisation : sur Facebook, affichez la liste des amis d’un profil, et filtrez les liens de la page comportant l’expression pb&hc_location. Vous récupérez ainsi la liste complète des amis de votre cible.

User-agent Switcher

User-agent switcher permet de modifier à la volée l’identifiant de votre navigateur et de vous faire passer par exemple pour un mac, ou encore pour un téléphone portable. Vous pouvez rendre cette modification permanente pour certains sites (en y affectant le nom de domaine).
Certains sites internet ne proposent en effet pas le même niveau d’information, les mêmes fonctionnalités, en fonction du navigateur utilisé.

Exemple : la version web d’Instagram ne permet pas de poster des photos ou des vidéos en ligne. Si on change le user-agent de son navigateur pour celui d’une tablette, on récupère instantanément le bouton de téléchargement.

Change Location

Change Location est une extension qui vous permet de modifier les coordonnées GPS de votre navigateur lorsqu’un site internet demande à vous positionner.
On parle bien ici de vos coordonnées GPS, et non d’une localisation basée sur votre adresse IP.
En fonction de vos besoins (vie privée, ou OSINT sur un site particulier…), il conviendra d’adopter une stratégie de cohérence avec votre adresse IP : les faire diverger si vous souhaitez égarer votre pisteur, les faire converger pour ne pas attirer les soupçonneux.

Wayback Machine

En matière de recherches en sources ouvertes, l’obsession est la sauvegarde et l’archivage du contenu : celui-ci peut en effet disparaître ou être modifié à tout moment.
L’utilisation du site internet Archive.org est plus que recommandé : à la fois pour consulter des versions plus anciennes d’un site, mais également pour archiver vous-même du contenu.
L’extension Wayback Machine gère tout cela sur un seul bouton et s’avère très pratique au quotidien.

InVID Verification Plugin

InVID est un projet européen d’authentification de vidéo et d’information en ligne.
Ce consortium a mis en ligne une extension appelée InVID Verification Plugin, permettant d’analyser très rapidement une vidéo : création de vignettes, outil de zoom, vérification auprès des principales instances de publication en ligne (Youtube, Facebook, etc…).
Attention, cette extension ne s’installe pas via le magasin d’extension de Firefox, mais de manière manuelle, en téléchargeant préalablement le fichier xpi d’InVID sur le site internet du consortium.

Search by Image

Longtemps utilisateur de Reveye, j’utilise désormais Search by Image pour mes recherches inverses d’images. D’un simple clic droit sur une image en ligne, ce plugin va vérifier si l’image est disponible sur 21 sites internet différents dont plusieurs sites de e-commerce chinois. Dans un précédent article, Lou avait utilisé ce type de technique pour remonter la trace d’objets coréens revendus sur des sites de e-commerce chinois.

TamperMonkey

Pour les utilisateurs un peu avancés, TamperMonkey est une extension qui vous permet de gérer et d’appliquer différents scripts personnalisés sur les pages web que vous visitez. Le catalogue de scripts disponible est assez impressionnant (ici, , ou encore là-bas…).
On trouve des scripts pour tout : télécharger les albums photos Facebook ou Instagram en un seul clic, des boutons supplémentaires pour vos recherches sur Google, naviguer sur Pinterest sans vous enregistrer
Ce billet de blog présente par exemple une vingtaine de scripts très utiles, et comment les installer.

Quelques Bookmarklets utiles…

Impossible de terminer ce billet sans ajouter quelques bookmarklets très utiles au quotidien.
Les bookmarklets sont des fonctions Javascript que vous ajoutez dans vos favoris de Firefox, souvent par un simple glisser/déposer. Parfois il vous faudra copier la ligne de code directement dans un nouveau favori :


1° – créez un nouveau favori en lui donnant un nom

2° – En lieu et place de l’URL, copiez simplement le code Javascript du bookmarklet

3° – Lorsque vous visitez la page à laquelle ce bookmarklet est destiné, cliquez sur ce favori pour action.

Voici par exemple quelques bookmarklets à glisser/déposer dans votre barre de favoris et particulièrement utiles pour l’OSINT.

Enfin, deux bookmarklets figurent en bonne place dans mon navigateur personnel :

  • Sci-hub : Sci-hub (ou Scihub) est un site web fournissant un accès libre à des articles scientifiques obtenus par web scraping en contournant les paywalls (« péages ») classiques des éditeurs académiques. Ce bookmarklet vous permet de récupérer automatiquement une version « déprotégée » (ie crackée…) d’une publication scientifique payante. On remplacera l’extension .tw à la fin de ce script par l’extension accessible de Sci-Hub dans votre pays.

javascript:location.hostname%20+=%20'.sci-hub.tw'

Disclaimer : OpenFacto n’encourage en aucun cas le piratage et décline toute responsabilité en cas de mauvais usage du site sci-hub.

  • Archive.today : Archive.fo ou archive.today (anciennement archive.is) est un site alternatif à archive.org, très utile pour l’archivage de pages consultées sur internet. Un des aspects les plus intéressants de ce site est la possibilité de sauvegarder des profils Facebook de manière assez détaillée. En effet, le site utilise son propre identifiant Facebook et archive par exemple tous les posts publics d’un wall à un instant donné, et pas seulement la page de base FB vue de manière anonyme.

javascript:void(open('http://archive.today/?run=1&url='+encodeURIComponent(document.location)))

Pour conclure…

Le liste des extensions ci-dessus n’est bien évidemment pas exhaustive, mais peut servir de bonne base à un adepte de la recherche en sources ouvertes.
Mais c’est à l’utilisateur de construire un poste de travail à sa main, adapté à son besoin (immédiat ou à long terme…) et capable de lui faciliter la vie.
Par exemple, quelqu’un cherchant à récupérer des informations techniques sur des sites internet ou à faire de l’analyse de la menace en matière cyber ajoutera peut-être un outil tel que PulseDive à sa barre d’extensions….

Comme l’indiquait Artus alias AHSA dans son article de juin 2019, La Méthode Avant Les Outils, l’outil intervient en simple appui en vue d’un traitement humain.

Et gardez toujours en mémoire mon leitmotiv en yaourt-italien :

Trodutti, Tull’utti! (Vous l’avez?)

Travailler avec des leaks: le cas des emails leakés du chef de campagne du Président Ukrainien (2nd partie)

Travailler avec des leaks: le cas des emails leakés du chef de campagne du Président Ukrainien (2nd partie)

Dans la première partie de cet article, Lou vous expliquait comment travailler sur des leaks d’emails, en prenant pour exemple ceux du chef de campagne du Président Ukrainien. Cette fuite de données ne concernait que 167 emails, assez simple à analyser avec un simple éditeur de texte.

Toutefois, trouver un si petit nombre de mails est assez rare. Ainsi, dans la cas des « Macron Leaks » en 2017, ce ne sont pas moins de 21.000 mails, issus de plusieurs boites, qui avaient fuité, rendant une analyse manuelle assez complexe à mener dans un temps très court. Oui, explorer les mails à la main, surtout en si grande quantité, peut-être assez fastidieux.

Heureusement, il est possible d’automatiser un peu le processus d’analyse et utilisant quelques outils libres et gratuits.

Comment sont livrés les mails?

La première question à se poser est de savoir comment les mails sont leakés. S’agit-il d’un lot de fichiers EML (chaque mail livré un par un), d’une boite mbox?, d’un fichier pst (Outlook)?

Le plus simple à analyser est le plus souvent d’avoir un mail par fichier.

Pour le format pst – c’est de loin le format le plus pénible – on peut importer ce fichier dans Outlook, à condition de le posséder, puis exporter cette boite au format EML. Sous Linux, il existe une bibliothèque appelée libpst, capable de convertir du pst en eml.
Pour le format mbox, j’utilise souvent Thunderbird, associé au plugin importexporttools, qui permet d’importer et d’exporter les boites mail dans un peu tous les formats.

Thunderbir et importexporttools chez openfacto.fr
Liste des fonctionnalités d’ImportExportTools

Indexer les mails pour mieux les interroger

Les moteurs de recherches d’Outlook ou de Thunderbird sont assez pathétiques en terme de fonctionnalités. Faire de la recherche fine peut s’avérer très pénible. Lorsqu’on a récupéré des courriels en abondance, rien de tel qu’un bon outil d’indexation pour requêter précisément.

En fonction du besoin et du niveau de compétence dont vous disposez, mais également de l’investissement en temps et en argent que vous souhaitez y consacrer, il est possible de recommander trois outils :

1- Rapide à déployer, portable et puissant, fonctionnant sous Windows, Mac et Linux, DocFetcher reste un outil d’indexation incontournable. L’interface est austère mais efficace : vous créez un index de vos mails. Puis vous lancer vos requêtes à l’aide de la syntaxe de Lucène, le moteur d’indexation.

2- Un poil plus complexe à paramétrer, Overview-Project dispose des mêmes fonctionnalités de recherche fine mais permet également de tagguer des documents, de faire des liens entre eux.

3- La Rolls du moment, même si il est plus complexe, OpenSemanticSearch, est un outil d’indexation complet, permettant notamment de faire de la reconnaissance d’entité nommées (NER), et donc d’enrichir automatiquement vos documents en retrouvant par exemple des sociétés des personnes, des lieux, etc…

Enfin, on surveillera de près Datashare, développé ces temps-ci par l’ICIJ (coucou Pierre!), qui permettra de faire tout cela dans une interface sexy en diable.

Travailler sur les entêtes des mails

Les entêtes des emails (ou headers) recèlent une foule d’informations et ne sont pas forcément très étudiés.

Pour les analyser en masse, il va falloir les extraire et si possible automatiquement. Pour cela, il existe une bibliothèque python très intéressante : mailparser. Une fois installée sur votre machine, cette commande permet d’extraire les informations suivantes :

  • bcc
  • cc
  • date
  • delivered_to
  • from_
  • message_id
  • received
  • reply_to
  • subject
  • to

Pour l’exemple des mails ukrainiens, voici la commande utilisée sous bash/Linux :

for i in *.eml;do mailparser -f « $i » -r -b >> emails.csv;done

Ce qui signifie : « pour chaque mail au format .eml, récupère les entêtes (-h) et le corps du message (-b) et enregistre tout dans un unique fichier appelé emails.csv ».

Une fois ce fichier créé, il est possible d’utiliser OpenRefine, pour nettoyer et enrichir ce fichier et d’obtenir cette feuille de calcul :

  • extraction des expéditeurs et destinataires
  • extraction du sujet, et de l’adresse IP d’envoi du message
  • identification et géocodage des adresses IP

Il est possible de voir immédiatement les aberrations, ou les détails qui ne collent pas dans un jeu de données de ce type, comme par exemple ces deux mails qui sortent du champ habituel des mails reçus ou adressés par le titulaire.

Le renommage des colonnes en Source et Target peut vous sembler curieux mais il est en fait très utile pour importer rapidement les données dans Gephi.
Au cas présent, le rendu des échanges sous forme de graphe est peu parlant (faible nombre de mails, et d’interlocuteurs…).

Graphe et OSINT avec Gephi

Mais avec un jeu de données plus important, notamment bien horodaté, il est possible de faire des choses très visuelles comme cette petite animation des échanges entre plusieurs boites mail, par Alexandre Léchenet.

Pour conclure…

Il s’agit de quelques suggestions et de techniques pour analyser un jeu de données de type emails et lui donner rapidement du sens, en comprendre les enjeux…

Souvenez-vous toutefois qu’avec ce type de leaks, il convient d’être particulièrement prudent : les pièces jointes des mails peuvent être contaminées et il conviendra de prendre toutes les précautions nécessaires avant de commencer cette exploration (Machine virtuelle, antivirus, etc…).

Sortez couvert-e-s!