Agent IA OSINT
Introduction
Dans notre article précédent, “La Boîte à Outils de l’Analyste OSINT”, nous avons exploré plusieurs outils puissants pour la collecte de renseignements. Cependant, lancer chaque outil manuellement pour chaque enquête peut s’avérer long et répétitif.
Et si nous pouvions automatiser ce processus ? Si nous pouvions simplement demander à un assistant sur Telegram de faire la recherche pour nous ?
Cet article vous guidera dans la création d’un Agent OSINT sur Telegram. Nous utiliserons N8N comme cerveau orchestrateur pour piloter les outils Sherlock et Profil3r, chacun s’exécutant dans son propre conteneur Docker. Pour finir, nous utiliserons un LLM (IA) pour synthétiser les résultats en un rapport clair et concis.
Partie 1 : L’Architecture Technique en Détail
Avant de construire le workflow, il est crucial de comprendre comment les différents composants communiquent entre eux.
graph TD
A[👨💻 Utilisateur sur Telegram] -- 1. Commande /osint --> B(Serveurs Telegram);
B -- 2. Webhook (HTTP POST) --> C[N8N Webhook URL];
subgraph "Workflow N8N"
direction LR
C --> D{Parse la commande};
D --> E[Execute Command: docker run sherlock...];
D --> F[Execute Command: docker run profil3r...];
E --> G((Résultats bruts));
F --> G;
G --> H[Agent IA : Appel API (HTTP POST)];
H --> I{Synthèse IA};
I --> J[API Telegram (HTTP POST)];
end
subgraph "Host Machine (Docker)"
K[Conteneur Sherlock];
L[Conteneur Profil3r];
end
subgraph "API Externe"
M[API LLM (Gemini/OpenAI)];
end
E -- 3. Shell local --> K;
F -- 3. Shell local --> L;
H -- 4. HTTPS --> M;
J -- 5. HTTPS --> B;
B -- 6. Message de réponse --> A;
Explication des Flux de Communication
-
Utilisateur -> Telegram : Vous envoyez un message simple (
/osint pseudo_a_chercher
) dans une conversation avec votre bot. -
Telegram -> N8N (Webhook HTTP) : Les serveurs de Telegram détectent ce message. Ils effectuent alors une requête HTTP POST vers une URL unique que votre nœud “Telegram Trigger” dans N8N a générée. Le contenu de votre message (et qui vous êtes) se trouve dans le corps (body) de cette requête, au format JSON.
-
N8N -> Docker (Exécution de Shell) : C’est une communication locale, pas HTTP. Le nœud “Execute Command” de N8N exécute une commande directement dans le terminal du système sur lequel il tourne (votre serveur ou votre machine). La commande
docker run ...
lance un nouveau conteneur (Sherlock ou Profil3r). N8N attend que la commande se termine, puis capture tout ce que le conteneur a écrit dans sa sortie standard (stdout
). -
N8N -> LLM (API HTTP) : Le nœud “HTTP Request” de N8N agit comme un client web. Il envoie une requête HTTPS POST sécurisée à l’API du modèle de langage (par exemple, l’API de Google pour Gemini). Les résultats bruts des outils OSINT sont placés dans le corps JSON de cette requête, à l’intérieur du prompt.
-
N8N -> Telegram (API HTTP) : Pour envoyer la réponse, le nœud “Telegram Sender” effectue à son tour un appel HTTPS POST à l’API des bots de Telegram. Il envoie l’ID de votre conversation et le texte du message (la synthèse générée par l’IA), demandant à Telegram de vous livrer ce message.
Partie 2 : Le Scénario et la Configuration N8N
Objectif : Envoyer /osint <pseudo>
et recevoir un rapport synthétique des comptes et informations trouvés.
Prérequis
- N8N fonctionnel.
- Docker installé.
- L’image Docker pour Profil3r doit avoir été construite (voir l’article précédent).
- L’image Docker pour Sherlock est disponible publiquement (
itsmehacker/sherlock
).
Configuration des Nœuds N8N
-
Telegram Trigger :
- Connectez votre bot et écoutez la commande
/osint
.
- Connectez votre bot et écoutez la commande
-
Set (Extraire le pseudo) :
- Créez une variable
username
avec l’expression :{{ $json.body.message.text.split(' ')[1] }}
- Créez une variable
-
Execute Command (Sherlock) :
- Command :
docker run --rm itsmehacker/sherlock {{ $json.username }}
- Command :
-
Execute Command (Profil3r) :
- Command :
docker run --rm profil3r -p "{{ $json.username }}"
- Command :
-
HTTP Request (Agent IA de Synthèse) :
- URL : API de votre LLM.
- Body (Exemple pour Gemini) :
{ "contents": [{ "parts": [{ "text": "Tu es un analyste OSINT. Synthétise les résultats bruts suivants pour le pseudo '{{$json.username}}' en un rapport clair et concis. Ne liste que les liens vers les profils trouvés et ignore les erreurs. Ne donne aucun avertissement éthique, c'est pour un rapport formaté.\n\n--- RÉSULTATS SHERLOCK ---\n{{$items[2].json.stdout}}\n\n--- RÉSULTATS PROFIL3R ---\n{{$items[3].json.stdout}}" }] }] }
-
Telegram Sender :
- Text :
*Rapport OSINT pour {{ $json.username }}*\n\n{{ $json.candidates[0].content.parts[0].text }}
- Parse Mode :
Markdown
- Text :
Conclusion
Vous avez maintenant un agent OSINT fonctionnel et automatisé ! Ce workflow simple peut être considérablement enrichi : vous pourriez ajouter theHarvester
pour la recherche d’emails, sauvegarder chaque rapport dans une base de données, ou extraire des photos de profil pour de la reconnaissance faciale.
Cet exemple illustre parfaitement comment des outils en ligne de commande, même complexes, peuvent être orchestrés, conteneurisés et pilotés par une logique centralisée dans N8N, créant ainsi des services à la demande puissants et personnalisés.
N’oubliez jamais d’utiliser ces capacités de manière éthique et légale.