Flowsint

Graphe de 924 nœuds reliant un domaine à ses sous-domaines et à ses adresses IP, entre la liste des entités et la fiche d'une IP.

Domaines, IP et pseudos reliés sur un graphe d'enquête

Flowsint est un outil d'enquête OSINT et de reconnaissance qui place chaque élément d'une investigation sur un graphe : domaine, IP, e-mail, pseudo, organisation, téléphone ou portefeuille crypto. Des enrichers le complètent : chacun part d'une entité, en tire d'autres par un pivot (résolution DNS, requête WHOIS, outil en ligne de commande, API tierce) et les ajoute en nouveaux nœuds. L'analyste suit les liaisons sur le canevas au lieu de recouper à la main les sorties d'outils séparés.

Pivots classés par entité et enquêtes rejouées en flows

  • Un catalogue rangé par type d'entité. La documentation décrit 45 enrichers en onze catégories : sous-domaines par subfinder avec crt.sh en repli, comptes sociaux d'un pseudo par Sherlock ou Maigret, fuites d'une adresse e-mail par Have I Been Pwned ou DeHashed.
  • Des flows qui rejouent une méthode. Un flow enchaîne des enrichers à partir d'un type d'entité : la sortie de l'un nourrit le suivant. Enregistré, il se relance sur toute entité du même type, avec un journal JSON par exécution.
  • Les outils de reconnaissance livrés dans l'image. subfinder, asnmap, dnsx, naabu, httpx et jq sont installés dans le conteneur, pas sur l'hôte.
  • Des enrichers maison en Python. Le backend (FastAPI, Celery) est en Python, l'interface en TypeScript. Un nouvel enricher s'ajoute au module flowsint-enrichers et s'enregistre par un décorateur.

Cartographie d'une organisation, historique WHOIS, portefeuilles Ethereum

  • Cartographier une organisation : ses ASN, leurs plages CIDR, les IP qu'elles contiennent et les domaines qui pointent vers ces IP.
  • Remonter l'historique WHOIS d'un domaine pour en tirer les personnes, sociétés et adresses e-mail qui y figurent.
  • Retracer les transactions d'un portefeuille Ethereum et les portefeuilles avec lesquels il échange.

Six conteneurs Docker, des API tierces et un développement précoce

Flowsint tourne en six conteneurs Docker : PostgreSQL, Redis, Neo4j, l'API, un worker Celery et le frontend, tirés en images préconstruites du GitHub Container Registry. Aucun compte n'existe au départ, le premier se crée sur la page d'inscription. Selon le README, toutes les données restent sur la machine.

L'ouverture à une équipe se prépare à la main. Par défaut, nginx.conf n'accepte que localhost et les adresses de bouclage, pour parer au DNS rebinding. Pour un serveur partagé, le README demande de changer trois secrets du .env, dont le mot de passe Neo4j (password par défaut), et d'autoriser le nom d'hôte. Hors d'un réseau local de confiance, il recommande un reverse proxy HTTPS devant le port 5173, le seul exposé.

Les enrichers interrogent les services depuis la machine qui les lance. La documentation prévient que des milliers de requêtes vers un même service peuvent valoir un bannissement. Le scan de ports passe par défaut par la base passive de ProjectDiscovery ; le mode actif sonde la cible directement. Une partie du catalogue exige une clé d'API tierce (Have I Been Pwned, DeHashed, Whoxy, Etherscan...), rangée dans un coffre chiffré.

Les registres d'entreprises consultés sont français. Les enrichers qui cherchent les sociétés d'une personne ou les dirigeants d'une organisation interrogent SIRENE, le répertoire de l'INSEE. Le code le précise : « France only ».

Le public visé est nommé dans ETHICS.md : analystes en cybersécurité, journalistes et enquêteurs OSINT, forces de l'ordre et équipes antifraude, threat intelligence interne. Le fichier proscrit l'intrusion, la surveillance non autorisée et le doxxing ; la licence Apache 2.0, elle, ne restreint aucun usage.

Le code est sous Apache 2.0 depuis le 25 janvier 2026, sous AGPL-3.0 avant. Selon ETHICS.md, l'ancien code a été relicencié avec l'accord écrit de tous les contributeurs. La version 1.2.12 du 26 août 2026 a ensuite retiré quatre dépendances sous GPLv3.

Le README parle de développement précoce, malgré une 1.0.0 sortie en décembre 2025. La 1.2.13 du 3 octobre 2026 est la huitième version publiée depuis février, et le dernier commit date du 18 octobre 2026. Le README dit ses suites de tests incomplètes. La documentation, mise à jour le 15 mai 2026, en est restée à la 1.2.8 : son catalogue décrit 45 enrichers, quand la liste du README en compte 30.