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:46Android 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?)

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

Firefox (I) – Les outils de développement de Firefox

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

Si je dois bien vous avouer quelque chose, c’est que je n’ai jamais compris la hype, l’engouement autour du navigateur Chrome de Google. En 2012 ou 2013, considérer ce navigateur internet comme le must en la matière pouvait encore se comprendre, à l’heure où ses performances surpassaient celle de Firefox.
Mais depuis l’arrivée de la version 6x, ce dernier est désormais une bête de course et sa gestion de la mémoire le rend diaboliquement efficace.

Bien plus que ses performances pures, c’est surtout sur le plan du respect de la vie privée que Firefox est remarquable. Or, lorsque l’on effectue des recherches en sources ouvertes, il est indispensable de garder la main sur nos données privées et leur éventuelle fuite lors de la navigation. C’est donc bien évidemment ce navigateur qu’OpenFacto recommande à ses lecteurs et membres! Et si vous voulez utiliser Chrome, nous vous encourageons à utiliser Chromium, sa version libre, expurgée des mouchards Google.

Au delà de ces aspects, comprendre la manière dont votre navigateur interagit avec le site internet que vous visitez est essentiel. Un des outils disponibles dans Firefox, particulièrement utile à l’OSINT, est l’outil de Développement Web (il est aussi disponible sous Chromium, rassurez-vous).
Il est activable par la combinaison de touches CTRL+MAJ+I, ce qui devrait faire apparaître la barre ci-dessous.

Avec cet outil, il est possible d’examiner plusieurs éléments et notamment :

  • Le code source de la page avec l’Inspecteur
  • Ce que le site stocke en local sur votre navigateur avec le Stockage
  • Les échanges entre le navigateur et le site distant avec le Réseau

Nous ne nous étendrons pas sur les autres paramètres pour l’instant et c’est sur l’aspect Réseau que nous nous attardons aujourd’hui.

L’outil Réseau – Usage simple

Prenons un exemple pour illustrer à quoi peut bien servir l’outil Réseau.
Imaginons que nous recherchions des informations sur la société OVH (dont le numéro RCS est 424761419), sur le site societe.com.

Si on entre ce numéro dans la barre de recherche, le site donne immédiatement le résultat, mais on ne comprend pas bien comment s’opère cette recherche, comment on obtient ce résultat. La barre d’URL ne donne aucune indication sur la nature de la requête.

Essayons donc d’effectuer cette même requête avec l’outil d’analyse Réseau de Firefox.

On observe que dès que nous appuyons sur l’outil de recherche, le site internet lance une requête de type GET, avec une URL formatée ainsi :

https://www.societe.com/cgi-bin/search?champs=424761419

On comprend dès lors que le site internet utilise une requête spécifique pour afficher cette page, composée d’une chaîne de texte (une URL) se terminant par le signe « égal », auquel il a concaténé le numéro RCS que l’on avait donné.

Pour vérifier notre hypothèse, essayons donc d’effectuer une recherche sur le numéro RCS de GANDI sans passer par la page principale du site, mais en tapant directement l’URL :

https://www.societe.com/cgi-bin/search?champs=423093459

Bingo! Cette URL est fonctionnelle.
On peut également tenter de rechercher par nom et prénom :

https://www.societe.com/cgi-bin/search?champs=martin+bouygues

Mais vous me direz, quel usage pour l’OSINT?

Simple… Supposons que vous ayez une feuille de calcul de type tableur, avec une liste de 20 ou 800+ numéros RCS. Il est alors très simple de composer une colonne supplémentaire à votre tableau en concaténant l’URL que vous avez découverte, et ces numéros… et d’envisager ainsi des possibilités d’automatiser la consultation de ces pages!…

L’outil Réseau – Usage avancé

L’outil réseau permet de récupérer rapidement dans certains cas de l’information très utile, notamment lorsque le site internet est dynamique, ou s’interface avec une base de données.


Prenons l’exemple de cette page issue du site du Tribunal Spécial pour le Liban :
https://www.stl-tsl.org/en/the-cases/contempt-cases/stl-14-05/filings?&case=6&dtype=1

Cette page présente une liste de 20 documents dont on aimerait récupérer les métadonnées (date, titre, etc…), le plus efficacement possible.
Ouvrons cette page à l’aide des outils de développement de Firefox.

Nous allons filtrer la vue en cliquant sur XHR (XMLHTTP Request), un système permettant à un site internet de rafraîchir ses données de manière dynamique en Javascript. Pour récupérer et afficher ses données, le site va se baser sur un fichier de type JSON (un simple fichier texte balisé) contenant les metadonnées que nous cherchons, et les mettre en page à la volée. C’est ce fichier qui nous intéresse.
Si nous sélectionnons la ligne URL contenant le fichier Json, et observons la « réponse » à droite de la fenêtre, on constate que ces metadonnées sont bien présentes.

Comment récupérer ces données?
Il suffit par exemple de cliquer bouton-droit sur la ligne ainsi sélectionnées et de cliquer sur « Copier comme cURL ». Si vous ouvrez un terminal et collez le contenu du presse-papier, vous devriez observer ceci :

curl 'https://www.stl-tsl.org/crs/index.php/home/filings/??&case=6&dtype=1&case=6&dtype=1&p=0&pp=20&lang=1' -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 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' -H 'Referer: https://www.stl-tsl.org/en/the-cases/contempt-cases/stl-14-05/filings?&case=6&dtype=1' -H 'Cookie: visid_incap_114829=kUHENy7IT4u+MpclqtAvkJOkKF0AAAAAQkIPAAAAAACARMONAVOOktY/aYDphOnUIQ9OWSIRGc7M; language=en; incap_ses_475_114829=3podc9DOQDBo2Y1TI4qXBgfoR10AAAAAtolh2LpK1l+icEJ+YnmlUg==' -H 'TE: Trailers'

Ajoutons une redirection vers un nom de fichier en complétant cette commande par > metadata.json :

curl 'https://www.stl-tsl.org/crs/index.php/home/filings/??&case=6&dtype=1&case=6&dtype=1&p=0&pp=20&lang=1' -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 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' -H 'Referer: https://www.stl-tsl.org/en/the-cases/contempt-cases/stl-14-05/filings?&case=6&dtype=1' -H 'Cookie: visid_incap_114829=kUHENy7IT4u+MpclqtAvkJOkKF0AAAAAQkIPAAAAAACARMONAVOOktY/aYDphOnUIQ9OWSIRGc7M; language=en; incap_ses_475_114829=3podc9DOQDBo2Y1TI4qXBgfoR10AAAAAtolh2LpK1l+icEJ+YnmlUg==' -H 'TE: Trailers' > metadata.json

On obtient alors un fichier ressemblant à ceci (extrait) :

{"count":3352,"data":[{"id":4166,"title":"Order to Redact the Public Transcript and or the Public Broadcast of a Hearing Held on 25 and 26 June 2018","date":"19-02-2019","case":"Ayyash et al. (STL-11-01)","case_before":"Trial chamber","case_stage":"Trial","filing_party":"Trial Chamber","filing_number":"F3760","record_type":"Order","direction":"ltr","files":{"9694":"English"}},{"id":4164,"title":"Order to Redact the Public Transcript of Hearings Held on 21, 22, 25, 27, 28, and 29 January 2016","date":"19-02-2019","case":"Ayyash et al. (STL-11-01)","case_before":"Trial chamber","case_stage":"Trial","filing_party":"Trial Chamber","filing_number":"F3758","record_type":"Order","direction":"ltr","files":{"9692":"English"}},{"id":4165,"title":"Trial Chamber's Internal Memorandum to the Head of Defence Office - Monitoring the Effective Legal Representation of Mr Hassan Habib Merhi's Defence","date":"14-02-2019","case":"Ayyash et al. (STL-11-01)","case_before":"Trial chamber","case_stage":"Trial","filing_party":"Trial Chamber","filing_number":"F3759","record_type":"Internal Memorandum","direction":"ltr","files":{"9693":"English"}},{"id":4163,"title":"Public Redacted Version of 'Decision on Prosecution Application for a Summons to Appear for Witness PRH588 and Order Issuing a Summons' of 16 February 2017","date":"12-02-2019","case":"Ayyash et al. (STL-11-01)","case_before":"Trial chamber","case_stage":"Trial","filing_party":"Trial Chamber","filing_number":"F2995","record_type":"Decision","direction":"ltr","files":{"9687":"English","9688":"Annex A","9766":"\u0639\u0631\u0628\u064a","9767":"Annex A Arabic"}},

Ce fichier structuré peut être aisément converti avec OpenRefine par exemple au format csv ou xls.

En résumé…

Récupérer des données en deux clicks, vous avouerez que c’est rapide et pratique!

Comprendre le fonctionnement d’un site internet, la manière dont il affiche ses données, comment il interagit avec une base de données, est primordial lorsque l’on cherche à optimiser sa collecte d’information.

Nous reviendrons dans un prochain billet, à l’aide d’un exemple, sur d’autres aspects de l’outil Développement Web de Firefox…


Suivre les circuits de distribution des biens et produits en sources ouvertes

Suivre les circuits de distribution des biens et produits en sources ouvertes

Quand les algorithmes nord-coréens laissent des empreintes digitales sur la toile

Tout commence par la lecture d’un rapport publié en 2018 par le Middlebury Institute of International Studies of Monterey qui met en lumière un réseau de sociétés dans le secteur informatique utilisées par le régime nord-coréen pour récupérer des devises via la vente d’équipements et de services en ligne.
Le Centre d’Informatique de Choson (Centre Informatique de Corée ou CIC ou KCC en anglais) – entité sous sanction par le Trésor Américain en 2017 est créé en 1990 afin de développer la filière informatique du pays.

L’objectif : faire monter en compétence le pays et le rendre attractif comme centre de services IT externalisés. Le CIC monte aussi une société de développement (Choson New Development Co ou Korea Aprokgang Technology Development Company selon les sources) pour développer toute l’activité économique à l’export des logiciels, équipements informatiques, solutions numériques. Le Centre s’est notamment concentré sur 5 catégories de logiciels : les systèmes d’empreintes digitales, les programmes médicaux, les programmes d’automatisation de bureautique, les programmes d’assistance au design (comme les programmes pour imprimer des motifs pour le textile) et des logiciels de contrôle des installations. La Corée du Nord aurait également développé un savoir-faire sur la reconnaissance vocale et les logiciels de traduction.

C’est donc un de ces réseaux que le rapport met en lumière: la vente d’appareils biométriques nord-coréens en Chine.

OpenFacto, pris au jeu des algorithmes coréens, s’est amusé un samedi à tirer le fil [très long] de ce rapport pour comprendre l’étendu des circuits de distribution de ces produits en utilisant uniquement les informations disponibles en sources ouvertes.

De la Chine en passant par le Liban, le Nigeria et les Etats-Unis, il est en effet possible de retrouver les empreintes nord-coréennes un peu partout sur la toile – ce qui valait bien un petit guide.

Des produits sensibles à la nécessité de transparence des réseaux de distribution et de fabrication

La difficulté d’étudier un réseau de production/fabrication/distribution est qu’il y a presque autant de produits que de réseaux. Il est donc difficile d’en tirer des généralités. Néanmoins, il est possible d’imaginer trois grands types de classification qui expliquent pourquoi l’étude de ces réseaux peut être importante :

  • Les produits/biens dits sensibles : ce sont tous les biens à haute valeur technologique, ceux classés double usage, militaire, précieux ou écologiquement sensible (bois), etc.
  • Les produits/biens à risque d’abus des droits humains : mode, électroniques grand public, etc.
  • Les produits/ biens qui peuvent avoir un impact sur la santé : nourriture, cosmétiques, médicaments, boissons, etc.

L’opacité du circuit de production/distribution peut se situer :

  • au niveau du fabricant/producteur – c’est le cas des appareils biométriques nord-coréen
  • au niveau du produit lui-même – comme dans le cas des lasagnes à la viande de cheval
  • au niveau du client final – comme dans les cas de contournement de sanctions –
  • au niveau du processus de fabrication ou de distribution – comme dans le cas des enfants syriens en Turquie fabriquant des vêtements pour une grande marque mondiale ou de la destination finale affichée d’un produit qui peut être ré-emballé au port.

La traçabilité des produits/biens est donc une question clef dans le débat public mais aussi une nécessité pour être en conformité avec certaines législations en vigueur. Une absence de traçabilité et un écueil sur la chaîne de valeur d’un bien peuvent causer de véritables dommages légaux, financiers et réputationnels quand ils sont mis en lumière.

Plus qu’une liste d’outils, ce guide propose quelques pistes à envisager face à un circuit de production/distribution objet d’une étude en source ouverte. Encore une fois, le travail accompli par l’OSINT aura plus comme objectif de dégrossir un premier niveau de recherche que de résoudre le cas.

Comprendre de quoi on parle pour orienter sa stratégie de recherche

Dans le cadre d’une recherche sur un circuit de distribution, il est plutôt malin de commencer par cartographier grossièrement à quoi ressemble le circuit en question pour en comprendre le cycle de production/distribution du produit en question. On rappellera par un schéma grossier qu’un produit/bien est fabriqué à base de matière première, transformé et est ensuite vendu.


Schéma d’un circuit de production/distribution possible via Tactical Technology Collective

Ce schéma suppose généralement l’existence d’une société avec des actionnaires, une transaction financière, un produit avec des caractéristiques précises, l’acheminement de ce produit d’un point à un autre et un acheteur qui est généralement représenté par un société avec des actionnaires. Ces premiers éléments permettent de décomposer des axes de recherches de manière méthodique et logique en rebasculant sur une méthode de recherche plus classique.

Il est aussi important de réfléchir à ce que l’on soupçonne de manière plus large : un cas de contournement de sanctions ? Une utilisation de matières premières régulées ou non-éthique ? …

Dans le cadre du rapport sur la Corée du Nord, le point de départ de la recherche est le produit en lui-même qui est donc d’une part fabriqué par une entité nord-coréenne établie en Chine et distribuée d’autre part en Chine puis vers l’étranger.

Qui : Cartographier et analyser les acteurs du circuit

Face à un gros circuit de production/distribution, il faut réussir à identifier l’ensemble des acteurs et leur rôle dans ce circuit. Ce n’est pas facile à réaliser et demande de bien comprendre à qui on a à faire. Certains sujets nécessitent également d’identifier la source des matières premières utilisées dans la fabrication du produit/bien en question. Cette recherche est importante car elle permet d’établir des liens entre producteur/fournisseurs, elle permet d’établir aussi un première empreinte géographique de l’étendu de ce circuit.

Pour illustrer cela, dans le cadre de notre recherche sur les équipements biométriques, il a été important de différencier les acteurs du circuit car ils n’ont pas la même importance sur la chaîne : producteur vs distributeur vs grossistes vs filiale de la société de fabrication, vs client, etc.

On a réussi à établir une classification similaire à celle-ci : elle a l’avantage d’identifier le rôle des acteurs allant d’actionnaire ultime à client final, d’identifier correctement aussi les intermédiaires entre deux. Elle donne également une première idée de l’étendue que peut prendre un tel circuit : très concentrée initialement sur la zone sino-coréenne et devenant très internationale une fois les produits bien introduits dans les circuits commerciaux classiques.

Chaque société identifiée pourra s’étudier de manière habituelle : registre du commerce, étude de l’actionnariat, etc.

Dans le cadre de notre recherche et si on s’intéresse à la partie russe du circuit – peu étudiée dans le rapport initial -, on retrouvera sans peine en source ouverte le montage suivant en partant de la société initiale en Corée du Nord « Korea Aprokgyang Technologies Co » établie à PyongYang grâce au registre du commerce russe :

Quoi : Étudier le produit

La troisième étape est d’étudier le produit lui-même. C’est un peu du cas par cas et il n’y a pas vraiment d’outil pour répondre à toutes les variétés de situations. On notera les quelques liens suivants qui peuvent être utiles de temps en temps (liste non exhaustive…) :

  • Les codes-barres : en Europe on retrouve beaucoup ceux du European Article Numbers/ EAN : les 3 premiers chiffres indiquent la société à qui est attribuée le code. Ces sociétés sont souvent membres de l’organisation GS1 qui maintient les standards des codes-barres avec une base de données utile et les codes-barres gérés par FTrace

Au-delà des bases de données, l’idée est de réfléchir un peu « out of the box » en recherchant des informations liées au produit de différentes manières.

Nous avons par exemple effectué une recherche inversée d’images, sur les moteurs de recherche, des différents produits présentés sur le site de la maison mère PEFIS et recherché également des images par les spécifications du produit « north korean algorithms ».

Où : Où s’échange le produit

Un produit s’achète généralement basé sur un catalogue ou dans un magasin physique ou virtuel. Il peut aussi être exposé dans une foire. Il est assez utile dans une recherche sur un circuit de distribution d’identifier les endroits où s’échangent les produits : du site internet de certains revendeurs qui mettent en ligne leurs catalogues, aux conférences spécialisés en passant par des magasins physiques.

Néanmoins et pour certains biens/produits, il est vraiment utile de regarder :

  • Les réseaux sociaux comme Facebook et Instagram
  • Les messageries comme Telegram
  • Le DarkWeb dans le cadre d’identification de biens très spécifiques type armes, faux documents, etc
  • Les plateformes de e-commerce comme :
    • Alibaba
    • Ebay
    • Amazon
    • DHGate
    • Globalsources
    • ECplaza
    • Tradekey
    • HKTDC
    • GlobalSpec
    • Made-in-china
    • Indiamart
    • TradeIndia

Ces plateformes donnent non seulement des informations sur le produit en question mais également sur la société et parfois sur des individus.

La société sino-coréenne en question a encore une présence sur everychina.com qui est une plateforme de vente B2B d’équipement en tout genre.

Comment : la logistique

Enfin, les produits doivent être acheminés d’un point à un autre souvent par bateaux. Ce transport de marchandise est documenté dans une lettre de transport (bill of lading) ou connaissement maritime en français. Il s’agit d’un document de transport émis par le transporteur maritime entre un expéditeur et un destinataire. Les informations qui y sont portées sont très intéressantes :

  • Identification des parties
    • Le shipper : celui qui envoie la marchandise
    • Le consignee : celui qui reçoit la marchandise
    • Le notified party : parfois similaire au consignee / parfois le vrai destinataire du produit
  • Identification du navire et des ports d’embarquement et de déchargement
  • Description des marchandises précises
  • Signature du transporteur  

Néanmoins ce n’est pas une donnée publique – de la même manière que le code de tracking de votre commande FNAC ne l’est pas – et il est difficile d’avoir accès à ces informations en ouvert. Parfois, elles apparaissent sur ces sites payants (mais qui offrent des pré-visualisations gratuites) :

Il est important de noter que dans le cas de produits à double-usage (cas de contournement de sanctions), le consignee va souvent se trouver dans une juridiction douteuse pour recevoir le produit, le ré-emballer avant de l’acheminer vers le véritable client final vers une autre destination avec un transporteur local peu regardant. Il convient donc d’être en alerte sur la destination du pays et de rechercher l’ensemble des parties de la bill of lading. Dans certains cas, il est aussi utile de faire des recherches sur le transporteur et son honorabilité.

Dans le cas de notre recherche, Panjiva donne des détails très utiles :

Quelques ressources en plus

On complétera ce guide par des ressources en plus qui proposent d’autres guides, outils et exemples d’enquêtes sur les circuits de distribution :

OpenGraph et récupération de contenu effacé…

OpenGraph et récupération de contenu effacé…

[Article édité le 13 mai 2019]
Il y a quelques jours, Hackers Republic signalait sur Twitter la possibilité de récupérer du contenu effacé sur les réseaux sociaux (des images flickr au cas d’espèce), grâce aux balises SEO.

@Tris_HR vous explique comment…

Pour améliorer l’engagement, le référencement et le partage de contenus sur les réseaux sociaux, les développeurs et spécialistes du Search Engine Optimization (SEO) sont fortement incités à paramétrer leurs contenus. Lorsque l’on crée un site internet, en plus des titres courts, des descriptions et des images, on enrichit l’ensemble avec des données supplémentaires, destinées aux moteurs de recherche ainsi qu’aux réseaux sociaux.

La plupart des Content Management System (CMS) proposent des modules complémentaires pour enrichir les pages. Retenons-en trois :

OpenGraph sert principalement à baliser son contenu pour Facebook, l’objectif étant d’avoir une jolie présentation. TwitterCards est utilisé par Twitter, mais le réseau social Mastodon a opté pour un balisage similaire des contenus. Enfin, Schema.org est plus particulièrement destiné aux moteurs de recherche.

Un exemple de balise sémantique SEO Openfacto Osint
Un exemple de balise sémantique

Même si OpenGraph et TwitterCards servent à favoriser le partage, ils ont les mêmes caractéristiques que les moteurs de recherche.
En effet, lorsqu’un contenu est supprimé d’un site Web, s’il a été indexé avant sa suppression, il est possible de récupérer une version en cache, directement dans les moteurs de recherche ou grâce aux différentes plateformes d’archives.

Il subsistait une difficulté : que faire si le contenu effacé n’avait pas été archivé ou indexé ?

En dehors de cas très spécifiques, les contenus mis en ligne ont vocation à être partagés. On peut donc tester les liens sur les réseaux sociaux. Le cas d’espèce concernait des photos, mises en ligne sur Flickr. Le propriétaire avait effacé les photos et supprimé son compte. Il a pourtant été possible de récupérer certaines photos.

La photo récupérée : cache_og.png (anonymisée…)

Pourquoi ? L’auteur des photos les avait partagées sur Facebook. Facebook a stocké les données OpenGraph, permettant ainsi d’afficher les photos. Les métadonnées utilisées pour le partage sont donc toujours disponibles et l’auteur des photos n’a pas indiqué à Facebook que les liens étaient invalides.

Après insertion des liens dans une conversation sur Messenger, les photos qui avaient déjà été partagées, se sont affichées. Il ne restait plus qu’à afficher la console de Chrome (clic droit> inspecter l’élément), cliquer sur l’onglet « Sources » pour récupérer rapidement les photos.

Évidemment, en cas de contenu supprimé, s’il a été partagé sur Facebook, les seules informations qui pourront être récupérées seront celles d’OpenGraph. Du côté de Twitter, le réseau social garde aussi les informations contenues dans les TwitterCards.


Une Twitter Card après suppression du contenu

D’après leur documentation, si un lien est invalide, elles sont supprimées au bout de 7 jours. https://developer.twitter.com/en/docs/tweets/optimize-with-cards/guides/getting-started.html

Edité le 13 mai 2019 :
En théorie, Twitter efface les liens et les données au bout de 7 jours.
En réalité : non. J’ai repris le lien que j’avais posté le 24/04/2019 et la capture d’écran montre que si l’image a disparu, ce n’est pas le cas du texte. J’ai testé avec mon compte Twitter pro le même lien que je n’avais jamais posté depuis ce compte, depuis un autre navigateur. Même résultat.

Quand j’inspecte l’élément, je récupère bien le texte ainsi le lien raccourci via Twitter.

Un tour sur CheckShortURL me montre le lien complet :
http://checkshorturl.com/expand.php?u=https://t.co/TI75mSO9rB

En dehors de Facebook, d’autres réseaux sociaux et messageries utilisent OpenGraph pour baliser les contenus, dont les messageries Telegram et WhatsApp et comme Facebook, il faut forcer la désindexation.

Un contenu, en particulier une photo, qui a été hébergé ailleurs que sur Facebook, peut donc être partiellement ou totalement récupéré grâce au balisage sémantique, si ce contenu a été partagé sur un réseau social utilisant OpenGraph.

Néanmoins, il n’est pas possible de récupérer l’intégralité du balisage en cas de contenu effacé. Dans le cas présenté ici, seule la photo a pu être récupérée, mais pas les autres balises telles que l’heure de mise en ligne, l’auteur, la description éventuelle, etc.

Code-source d’une photo récupérée 

Edition du 26 mai 2020 : Anna, fidèle lectrice, nous mentionne l’existence de cet outil de vérification de liens, très performant et sans publicité :

http://www.websiteplanet.com/fr/webtools/redirected/

Merci Anna!

Un peu d’Hist-OSINT…

Un peu d’Hist-OSINT…

Sur le réseau Twitter, l’ami Eric Pommereau sollicitait ces jours-ci un coup de main pour localiser deux scènes de la vie familiale tirées de films au format 9.5, numérisés par ses soins.

La résolution des images est assez faible, compte tenu de l’âge des films et du matériel utilisé à l’époque pour filmer. Il est donc difficile en l’état de pouvoir localiser cette scène. Eric précisait alors que l’image du port était disponible en ligne sur le site Vimeo.

Comment résoudre l’énigme du port?

Nous allons détailler ci-après le processus en différentes étapes, et voir avec quels outils, libres, gratuits et compatibles avec tous les systèmes d’exploitation (toujours!), il est possible d’arriver à un résultat tangible.

1- Collecter et archiver la source :

Dans un premier temps, j’ai donc récupéré le film au format MP4 pour l’étudier en détail, en utilisant JDownloader, permettant de télécharger à peu près n’importe quel type de fichier multimédia. J’ai essayé deux plugins Firefox avant cela, mais le format généré par Vimeo était bourré d’erreurs.

Pour les photos, il est utile de rappeler ici que pour récupérer les photos originales de Twitter, sans compression et dans la meilleure résolution, il convient d’ajouter « :large » à la fin de son URL :

https://pbs.twimg.com/media/D6B1OavXsAESdF6.jpg
https://pbs.twimg.com/media/D6B1OavXsAESdF6.jpg:large

2- Analyse visuelle

Une fois récupéré, il est possible de l’étudier attentivement pour remarquer quelques détails :
– Le bateau à 0’40 est immatriculé à Auray (Ay), celui à 1’50 est du Guilvinec (GV). A ce stade, on peut confirmer l’hypothèse initiale d’Eric qui était la Bretagne sud.


– A 2’06, on peut voir le Guedel qui faisait Quiberon Belle-ile en mer, et plus étonnant, à 2’40 l’Insula Oya, qui faisait les trajets vers l’île d’Yeu depuis Fromentine.

Dès lors, on peut déjà indiquer que Port-Maria à Quiberon représente une piste sérieuse : port d’attache du Guédel, il est situé dans une ville balnéaire développée et assez cossue (bâtiments en arrière-plan). Les ports de Belle-île-en mer (Sauzon et Le Palais) sont eux beaucoup trop étroit pour correspondre.

A l’aide du logiciel GIMP et de son greffon GMic, nous pouvons éclaircir et affiner légèrement la netteté d’une des captures d’écran réalisées avec VLC, le lecteur multimedia.

Le Guédel, amarré à son quai (image retouchée)

Une source précieuse d’information, lorsque l’on recherche des images anciennes, est bien évidemment les sites d’achat/vente/collection de cartes postales anciennes.
Pour le Morbihan, il est possible notamment de découvrir à l’aide de Google ou de Qwant, ce site assez complet sur Quiberon où l’on découvre ces deux cartes postales.

3 – Aller plus loin

Encore une fois, le format 9.5 ici utilisé est assez resserré, et d’une résolution très faible. Une technique très utile en matière de GEOINT pour donner du champ et de l’espace est de confectionner des panoramas.
Pour ce faire, nous allons utiliser deux fonctions de VLC : la capture d’écran, et la lecture frame-by-frame, c’est à dire image par image. Pour cela, on met le film en pause et on appuie sur la lettre « e » pour faire défiler le film. On gardera alors plus facilement les images nettes.
L’idée est de conserver 4/5 images assez similaires, idéalement dans le même plan, comme dans cet exemple.

A l’aide du logiciel Hugin, nous allons assembler ces images automatiquement et obtenir le panorama suivant :

Port-Maria à Quiberon (56)

Le film d’Eric présente plusieurs scènes qu’il est ainsi possible d’assembler:

On notera que la scène finale est caractéristique du relief de Belle-île-en-Mer et plus particulièrement du site de la Grotte de l’Apothicairerie, dont on peut trouver quelques clichés sur Flickr, par exemple. Il faudrait sans doute compléter les recherches pour identifier le lieu précis de prise de vue.

4- En résumé

On le voit, avec quelques outils libres et gratuits (lecture et retouche d’image, création de panorama….), un peu de méthode et de technique, et en utilisant un fond documentaire adéquat, qui servira d’imagerie de référence, il est possible d’identifier un lieu sur la base de quelques images.

Comment résoudre l’énigme des bagadous?

Pour les bagadous, c’est a priori un peu plus difficile : on ne dispose pas du film d’origine.
Il faut donc travailler sur l’image elle-même. On repère ainsi une longue avenue qui évoque la sortie de la ville, une devanture de magasin ou d’un restaurant, quatre piliers de clôture aux formes assez caractéristiques, une dans le décrochement de l’immeuble assez haut, sur la façade, une inscription « Hôtel de la gare Bar- Restaurant« .

En essayant d’améliorer l’image de l’inscription sur le mur, on peut imaginer que l’inscription pourrait se terminer par ON, et qu’il pourrait s’agir de Quiberon. Il faut convenir qu’à ce stade, c’est une maigre piste, mais il faut bien un point de départ….

A l’aide de Google images, nous allons donc chercher s’il existe des cartes postales du quartier de la gare de Quiberon, qui pourraient confirmer ce lieu en effectuant deux recherches :

"place de la gare" quiberon

"hotel de la gare" quiberon

Deux images sautent immédiatement aux yeux :

Ce lieu est situé à proximité de la gare à Quiberon, et même s’il a quelque peu changé de nos jours, on reconnaît aisément les piliers de clôtures dont deux exemplaires sont toujours présents, et la façade de l’immeuble à gauche. L’immeuble a quant à lui disparu, et a été remplacé par un bâtiment plus bas, disposant d’une emprise sur ce qui était à l’époque la terrasse.

THAT’S A MATCH!

Épilogue

Vous aimez l’OSINT? rejoignez-nous au sein de d’OpenFacto et inscrivez-vous à nos ateliers! 🙂

Edit : 09/05/2019 14:53 : J’ajoute ce lien fourni par @il_kanguru sur Twitter :