Aller au contenu
  1. Posts/

Mastodon Back Poster, un outil pour créer des réseaux sociaux à grande échelle pour les CTF (ou juste pour le fun)

·711 mots·4 mins
Lacroix Raphaël (Chepycou)
Auteur
Lacroix Raphaël (Chepycou)
Bonjour, bienvenue sur mon blog. Je suis Raphaël LACROIX, je développe diverses applications pendant mon temps libre, allant du très inutile au parfois utile. Je fais aussi beaucoup de Capture The Flag et de défis de cybersécurité.
Sommaire
write-ups et tools THCon - Cet article fait partie d'une série.
Partie 3: Cet article

Dans un autre post, j’ai parlé de la THCon 2024 CTF pour laquelle nous avons créé un réseau social à grande échelle pour le défi OSINT.

Après un peu de “nettoyage de code” (une manière classe de ne pas dire “procrastination”), j’ai rendu cet outil public sur le repo suivant :

Chepycou/Mastodon-back-Poster

A tool to fill a mastodon instance with messages in the past

Python
0
0

À quoi cela sert-il ?
#

  • Si vous avez besoin d’alimenter un faux réseau social avec beaucoup d’interactions entre les membres, il y a donc pas mal de bruit pour rendre un CTF OSINT plus difficile et plus réaliste (personnellement, je déteste quand un CTF OSINT vous sert des comptes qui ne publient QUE des choses que vous devez utiliser pour le défi, en plus c’est très irréaliste)
    • Un avantage certain étant la possibilité de poster des messages dans le passé (dans notre exemple plus de 6 mois dans le passé) pour que l’histoire soit crédible. Pour notre projet, vous n’infiltrez pas les agences spatiales, ne piratez pas tous les satellites et ne construisez pas une mallette futuriste en un mois, mais nous avons commencé à travailler sur ce défi environ deux mois avant la THCon et le temps que toutes les intrigues soient prêtes, il aurait été trop tard pour poster.
  • Vous voulez simuler l’envoi de messages dans le passé sur votre instance (aucune idée de la raison pour laquelle vous feriez ça, mais bon, c’est votre instance 🤷)

Comment qu’ça marche ?
#

Mastodon utilise une base de données pour stocker les posts, et tapper directement dedans était beaucoup trop pénible, mais lorsque l’on utilise l’API (qui est bien sûr beaucoup plus facile et agréable) l’instance fixait la date du post toute seule.

Ainsi, le choix a été fait de tirer parti des deux. J’ai utilisé l’API pour créer des messages avec le bon ordre, les réponses, les pièces jointes, etc. et stocker les ID avec les horodatages qu’ils devraient avoir. Ces paires identifiant/horodatage pouvaient alors être utilisées pour parcourir toute la base de données et falsifier les horodatages, ce qui nous permettait de “poster” des messages 6 mois plus tôt.

Le repo contient toujours les discussions des hackers flat-earther du challenge d’OSINT de la THCon, laissées à titre d’exemple.

Utilisation
#

Traiter les messages avec convert.py
#

Cet utilitaire prend en entrée un fichier au même format que messages.csv :

Message Username Date image1 image2 image3 image4

Et recrache un fichier json contenant les valeurs prêtes à être ingérées par le Bot. Vous ne devriez pas avoir à changer quoi que ce soit ici.

Notez que l’imageX peut être n’importe quelle pièce jointe acceptée par mastodon (ex : fichiers musicaux).

Un bloc de messages en lignes consécutives est un fil de discussion dans lequel les personnes se répondent les unes aux autres. Notez que cet outil ne gère pas les “conversations en d’arbre” (c’est-à-dire qu’Alice poste un message, Bob répond, puis Charlie répond à Alice, créant ainsi deux branches qui pourraient chacune être poursuivies).

Le premier message doit être daté, tandis que les dates des messages suivants peuvent être forcées (en fixant la valeur, comme on peut le voir dans l’exemple) ou déduites avec un délai aléatoire à partir de la date du message précédent (comme dans une conversation humaine normale).

Poster les messages avec bot.js
#

Exécuter le fichier bot.js en utilisant Node.js. Il faut pour cela que

  • Les dépendances Node.js soient installées
  • Le fichier accounts.json soit rempli avec tous les tokens d’accès aux comptes

Une fois que le bot a terminé (ce qui peut prendre un certain temps si beaucoup de messages doivent être envoyés), il produit un fichier (output.json) contenant une liste de paires (ID/horodatage). Les messages ont été postés, mais les dates sont toutes à just now.

Mettre à jour les dates dans la base de données en utilisant le fichier susdit (output.json) et en exécutant les scripts mentionnés dans le mastodon.md


Des informations plus détaillées sur l’utilisation de l’outil et la mise en place d’une instance de mastodon sont disponibles dans la documentation sur le repo :

Chepycou/Mastodon-back-Poster

A tool to fill a mastodon instance with messages in the past

Python
0
0
write-ups et tools THCon - Cet article fait partie d'une série.
Partie 3: Cet article