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 :

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!

Compte-Rendu du 1er atelier OSINT OpenFacto à Paris (23-24 février 2019)

Compte-Rendu du 1er atelier OSINT OpenFacto à Paris (23-24 février 2019)

Le premier atelier Recherches en Sources Ouvertes d’OpenFacto s’est déroulé les 23 et 24 février 2019 à Paris dans le 19e arrondissement.Il s’agissait pour nous de tester grandeur nature ce concept de formation sur deux jours sur un public de quelques happy-few d’horizons variés.

13 (oui treize!) stagiaires (journalistes indépendants et de divers média nationaux français ou européens, mais aussi étudiant, activistes, enquêteurs), ont pu se former ou approfondir leurs connaissances en recherches avancées, en géolocalisation et analyse de sources internet et réseaux sociaux, sous la houlette d’Hervé.

1er atelier OSINT OpenFacto à Paris en février 2019

Cette première session, très orienté « pratique » s’est notamment appuyée sur de nombreux exemples et cas concrets, permettant de découvrir et manipuler un grand nombre d’outils pour la plupart gratuits et/ou open-source. Si, certains utilisateurs étaient d’un niveau très avancés, d’autres découvraient les possibilités infinies de l’OSINT.

1er atelier OSINT OpenFacto à Paris en février 2019

Un des éléments clefs de cette formation était le développement de la méthodologie d’enquête, basée sur différentes approches séquentielles : observation, puis technique et enfin plus avancée. Mais nous avons également beaucoup parlé du travail de groupe, et de l’importance de la collaboration, de l’utilisation des compétences de chacun.

Parmi les outils utilisés durant ces deux jours, et outre les traditionnels Firefox et GoogleEarth, les participants ont pu se familiariser avec Tor Browser, twint (un scraper python pour Twitter), et quelques autres outils issus de github.

D’autres ateliers sont prévus dans les mois qui viennent et seront bientôt annoncés ici même!

N’hésitez pas à nous contacter pour de plus amples renseignements!

Oui! nous avions des stickers!!
Croiser des données sur OpenStreetMap avec Overpass-Turbo

Croiser des données sur OpenStreetMap avec Overpass-Turbo

Lorsque l’on cherche à géolocaliser une image, ou une vidéo sans grandes informations disponibles, il est parfois utile de se reposer sur les seuls éléments visibles à l’écran :

  • L’intersection d’un pont autoroutier avec une voie de chemin de fer.
  • Un angle de rue d’une ville allemande, avec une station du bus, une borne de taxi, une église et une pharmacie…
  • etc….

Dans ces cas précis, il pourrait être utile de pouvoir requêter une base cartographique sur le mode :

“Montre-moi sur la carte tous les lieux comprenant une église et une pharmacie dans un rayon de 50 mètres.”.

C’est là qu’un outil comme overpass-turbo.eu et une carte collaborative très détaillée prennent tout leur sens!


Overpass est une interface de requête pour Openstreetmap.

Il existe plusieurs tutoriels d’utilisation d’OverPass-Turbo sur le net, et le but de celui-ci n’est pas de tout montrer mais de vous présenter un exemple concret de ce qu’il est possible de lui faire faire!

A gauche de l’écran, on trouve la zone de requête. A droite se trouve la zone géographique où l’on souhaite requêter. La première des choses à faire est donc de définir notre zone de recherches, en zoomant au bon niveau de détails.

Cherchons par exemple toutes les églises situées dans un rayon de 50m d’une pharmacie à Rennes, en Bretagne. Tout d’abord, zoomons sur la ville.

overpass-turbo sur openfacto.fr-02-10T12-01-00.947Z

Voici le script qui va nous donner ces informations :

/*
This query will retrieve churches at max distance of 50m of a pharmacy in the area
*/
[out:json][timeout:25];

node({{bbox}})[amenity=pharmacy]->.pharmacy;
 (
   way(around.pharmacy:50)[amenity=place_of_worship];
   node(around.pharmacy:50)[amenity=place_of_worship];
 );
 (._;>;);
 out meta;

Détaillons un peu ce script :

Nous avons tout d’abord commenté un peu celui-ci pour le rendre plus lisible :

/*
This query will retrieve churches at max distance of 50m of a pharmacy in the area
*/

Ensuite nous avons explicité une sortie de type json (un format de données plat), et une limite de requête sur le serveur à 25s.

[out:json] [timeout:25];

La requête proprement dite vient ensuite :

node({{bbox}})[amenity=pharmacy]->.pharmacy;

{{bbox}} signifiant “dans la zone visible à droite”.

Par convention, une pharmacie est déclarée dans OpenStreetMap en tant que node (noeud), affublé d’une valeur spécifique amenity, correspondant à la chaîne de caractères ‘pharmacy’.

Nous allons donc chercher dans la zone à droite, tous les noeuds, dont la valeur amenity possède la chaîne « pharmacy.So we first look for every node in this area that as this specific value and insert them in a variable called ‘pharmacy’ :

->.pharmacy;

Puis nous cherchons une église.

(
   way(around.pharmacy:50)[amenity=place_of_worship];
   node(around.pharmacy:50)[amenity=place_of_worship];
 );

Une église a une valeur amenity avec la chaîne de caractères “place_of_worship”, mais peut également être un node ou une way (c’est plutôt rare…), dans OSM.

on précise ensuite la distance en mètres :

around.pharmacy:50

 (._;>;);
 out meta;

Les deux dernières lignes correspondent à l’intersection de ces critères.

Une fois le script entré, on appuie sur « execute »

Ce qui nous donne ce résultat :

OverPass-Turbo exemple sur OpenFacto.fr

Il ne s’agit là que d’un simple exemple de requête.

Et bien évidemment, cette requête sera d’autant plus efficace que votre zone de recherches sera détaillée. C’est pour cela qu’il est important d’aider le projet OpenStreetMap, mais aussi de participer et d’encourager la participation à ce projet.

Quelques ressources complémentaires sur ce langage de requêtes :

Ce tutoriel sur Github est aussi très pratique.

Amusez-vous bien !

P.S. : Plein de remerciements à Eric Pommereau pour son travail toujours inspirant.

P.P.S : ce billet est basé sur un billet initialement posté sur mon blog personnel.