Ce billet est le troisième billet d’une série sur le navigateur Firefox.
- 1ère partie : Les outils de développement de Firefox
- 2nde partie : Les extensions de Firefox orientées OSINT
- 3e partie : OSINT sur Zello avec Firefox – cas pratique
- 4e partie : Sécuriser un peu plus encore sa navigation pour l’OSINT
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.
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 :
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
1565817526 | Q7yjr081KxhQ | abo asad assaf | https://s3.amazonaws.com/zello.sharedmessages/Q7yjr081KxhQ | 08/14/2019 16:18:46 | Android 4.65 | abo asad assaf | ar | 1565817484 | 1565817527 | |
---|---|---|---|---|---|---|---|---|---|---|
1565793585 | UxmZEqic5jMg | shhehdhdhdh | https://s3.amazonaws.com/zello.sharedmessages/UxmZEqic5jMg | 08/14/2019 09:39:45 | 1 | Android 4.65 | shhehdhdhdh | ar | 1565793543 | 1565793585 |
1565793531 | 4sDN5fB4RK3S | nor nortv | https://s3.amazonaws.com/zello.sharedmessages/4sDN5fB4RK3S | 08/14/2019 09:38:51 | Android 4.64 | nor nortv | ar | 1565793438 | 1565793532 | |
1565793477 | EdqnvlAwFY5q | zzddrreeww | https://s3.amazonaws.com/zello.sharedmessages/EdqnvlAwFY5q | 08/14/2019 09:37:57 | Android 4.65 | zzddrreeww | ar | 1565793344 | 1565793477 | |
1565793436 | SD9FMXQID33i | ahmad.tec200 | https://s3.amazonaws.com/zello.sharedmessages/SD9FMXQID33i | 08/14/2019 09:37:16 | Android 4.69 | ahmad.tec200 | en | 1565793412 | 1565793437 | |
1565779734 | xoanwLa4F36O | dgdytu | https://s3.amazonaws.com/zello.sharedmessages/xoanwLa4F36O | 08/14/2019 05:48:54 | 8 | Android 4.65 | dgdytu | ar | 1565778085 | 1565779734 |
1565727084 | g2she5inRHo2 | ytrewqjhgdaa | https://s3.amazonaws.com/zello.sharedmessages/g2she5inRHo2 | 08/13/2019 15:11:24 | Android 4.67 | ytrewqjhgdaa | ar | 1565726861 | 1565727084 | |
1565698368 | BI5F4jD63Ock | ahmdalomla | https://s3.amazonaws.com/zello.sharedmessages/BI5F4jD63Ock | 08/13/2019 07:12:48 | 1 | Android 4.56 | ahmdalomla | ar | 1565698297 | 1565698368 |
1565692805 | DePxegwqPJbO | hasan.basid.jdi | https://s3.amazonaws.com/zello.sharedmessages/DePxegwqPJbO | 08/13/2019 05:40:05 | Android 4.67 | hasan.basid.jdi | ar | 1565692685 | 1565692805 | |
1565639951 | 7wj3tUEXJga2 | xjssdjjddd | https://s3.amazonaws.com/zello.sharedmessages/7wj3tUEXJga2 | 08/12/2019 14:59:11 | 2 | Android 4.67 | xjssdjjddd | ar | 1565639236 | 1565639952 |
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…)
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! 🙂