Partagez ce contenu

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…