Post

OSINT AI - Un Agent Autonome pour l'OSINT

OSINT AI - Un Agent Autonome pour l'OSINT

Introduction

Avez-vous déjà imaginé un outil capable d’analyser automatiquement des informations personnelles et de lancer des investigations OSINT (Open Source Intelligence) sans intervention manuelle ? Bienvenue dans OSINT AI, un projet ambitieux qui combine la puissance des LLM locaux avec des outils d’investigation structurés.

OSINT AI est un agent intelligent qui transforme des données brutes (email, nom, pseudo, etc.) en enquêtes automatisées, utilisant l’intelligence artificielle pour décider intelligemment quels outils d’investigation déployer.

Ce projet m’a permis d’utiliser des modèles d’IA dans un contexte de cybersécurité. Ce début de projet a été un bac à sable, me permettant d’explorer de nouvelles technologies dans des domaines qui me passionnent.


Qu’est-ce que c’est ?

Vision générale

OSINT AI est une application Python qui orchestre des investigations OSINT via un agent LLM autonome. Au lieu de lancer manuellement différentes recherches, vous fournissez un profil (email, nom d’utilisateur, téléphone, etc.), et l’agent décide automatiquement :

  • Quels outils utiliser
  • Dans quel ordre
  • Avec quels paramètres

Cas d’usage

  • Vérification de profil : Vérifier si une adresse email a été compromise
  • Recherche d’identité : Chercher tous les comptes associés à un pseudo
  • Investigation rapide : Collecter rapidement des informations publiques sur une personne
  • Analyse de données : Corréler des informations depuis plusieurs sources

L’Architecture

OSINT AI repose sur une architecture modulaire et découplée :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌─────────────────────────────────────────────────────┐
│                    CLI (main.py)                     │
│          Collecte les données utilisateur            │
└────────────────────┬────────────────────────────────┘
                     │
┌────────────────────▼────────────────────────────────┐
│              AGENT OSINT (agent.py)                  │
│     • Orchestration • Extraction • Routage          │
└────────────────────┬────────────────────────────────┘
                     │
        ┌────────────┴────────────┬──────────────┐
        │                         │              │
┌───────▼────────┐     ┌─────────▼──────┐  ┌───▼──────────┐
│  ROUTER        │     │   LLM (Ollama) │  │   TOOLS      │
│ (router.py)    │     │  (ollama.py)   │  │ (tools/*.py) │
└────────────────┘     └────────────────┘  └──────────────┘
        │
        ├─ email_leaks.py      : Fuite de données
        ├─ username_osint.py   : Recherche de pseudo
        ├─ phone_lookup.py     : Recherche téléphone
        └─ (extensible)

Composants clés

1. CLI (main.py)

  • Point d’entrée interactif
  • Collecte les données : prénom, nom, email, téléphone, pays, ville, pseudo
  • Lance l’agent asynchrone

2. Agent OSINT (core/agent.py)

  • Cerveau du système
  • Formule un prompt pour le LLM : “Quels outils dois-je appeler ?”
  • Reçoit une décision JSON structurée
  • Orchestre l’exécution des outils

3. LLM Local (core/ollama.py)

  • Communication avec Ollama (serveur LLM local)
  • Support de Phi-3 et Llama3
  • Extraction structurée sans hallucination
  • Temps de réponse : 5-20s (selon le modèle)

4. Router (core/router.py)

  • Routeur déterministe des appels d’outils
  • Chaque outil est une fonction asynchrone
  • Pattern pluggable (facile d’ajouter de nouveaux outils)

5. Tools (tools/*.py)

  • email_leaks.py : Recherche via DuckDuckGo sur Pastebin, GitHub, GitLab, Trello
  • username_osint.py : Recherche multi-site du pseudo
  • phone_lookup.py : Investigation téléphone
  • (Futur) : WHOIS, DNS, API publiques…

État du projet

Fonctionnel

  • Intégration complète avec Ollama
  • Extraction structurée via LLM
  • Router automatique d’outils
  • Recherche email (DuckDuckGo)
  • Recherche pseudo (multi-site)
  • Temps de réponse optimisé (Phi-3 : ~5-15s par prompt)
  • Architecture modulaire et maintenable

Futur

  • Mémoire courte : Historique de session
  • Scoring de fiabilité : Évaluer la confiance par entité
  • Multi-pass : Recherche → enrichissement → corrélation
  • Graph de relations : NetworkX pour connecter les entités
  • API FastAPI : Serveur HTTP
  • Support multi-LLM : OpenAI, Claude, Gemini

Performances testées

Benchmark sur Phi-3 (modèle optimisé extraction) :

Prompt Temps
“Définis l’OSINT” 11.96s
“Donne un exemple” 5.24s
“Pourquoi c’est utile ?” 11.11s

Benchmark sur Llama3 (modèle raisonnement) :

Prompt Temps
“Définis l’OSINT” 15.35s
“Donne un exemple” 20s
“Pourquoi c’est utile ?” 16.51s

Conclusion : Phi-3 pour l’extraction (2x plus rapide), Llama3 pour le raisonnement complexe.


Flux d’exécution complet

Étape 1 : Collecte des données

1
2
3
4
5
6
7
8
9
OSINT AI – Enquête structurée

Prénom : Jean
Nom : Dupont
Email : jean.dupont@example.com
Téléphone : +33612345678
Pays : France
Ville : Paris
Username / pseudo : jdupont92

Étape 2 : Agent décide

Le LLM analyse et retourne :

1
2
3
4
5
6
7
{
  "tools": [
    {"name": "email_leaks", "arguments": {"email": "jean.dupont@example.com"}},
    {"name": "username_osint", "arguments": {"username": "jdupont92"}},
    {"name": "phone_lookup", "arguments": {"phone": "+33612345678"}}
  ]
}

Étape 3 : Exécution en parallèle

Tous les outils s’exécutent de manière asynchrone → résultats combinés

Étape 4 : Résultat structuré

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "email_leaks": {
    "findings": [
      "site:github.com \"jean.dupont@example.com\"",
      "site:pastebin.com \"jean.dupont@example.com\""
    ],
    "status": "potentially_compromised"
  },
  "username_osint": {
    "platforms": ["github.com", "twitter.com", "instagram.com"],
    "findings": ["@jdupont92"]
  },
  "phone_lookup": {...}
}

Avantages clés

Autonomie

L’agent décide intelligemment quels outils lancer. Pas besoin de cliquer partout.

Rapidité

Recherches parallèles et LLM local (pas de latence réseau API).

Données personelle

Tout est local. Ollama tourne sur votre machine. Pas de données envoyées à des serveurs tiers.

Upgrade

Ajouter un outil ? Il suffit de l’ajouter dans tools/ et l’agent l’utilise automatiquement.


Conclusion

OSINT AI représente une nouvelle approche de l’OSINT : automatisée, intelligente, et décentralisée.

Au lieu de cliquer manuellement sur 10 sites différents, vous décrivez un profil et l’agent se met au travail. C’est le début d’une nouvelle ère d’investigations où l’IA travaille avec le chercheur, pas à la place du chercheur.

Ce projet m’a permis d’utiliser des modèles d’IA dans un contexte de cybersécurité. Ce début de projet a été un bac à sable, me permettant d’explorer de nouvelles technologies dans des domaines qui me passionnent.

This post is licensed under CC BY 4.0 by the author.