labfy-investigation/docs/tickets/open/TICKET-040.md
2026-07-18 09:27:07 +02:00

18 KiB
Raw Blame History

TICKET-040 — Inventaire et qualification de larsenal OSINT

Statut

À faire

Priorité

Très haute

Nature

Recherche, audit juridique, architecture et préparation des futures intégrations.

La présence dun outil dans cet inventaire ne signifie pas quil est approuvé.


Objectif

Constituer une base large, structurée et maintenable doutils OSINT pouvant être intégrés à Labfy Investigation afin daider à enquêter légalement sur :

  • pseudonymes et comptes publics ;
  • adresses e-mail ;
  • numéros de téléphone ;
  • domaines, IP, certificats et infrastructures publiques ;
  • documents, faux papiers, photos et vidéos ;
  • historiques de pages supprimées ;
  • dépôts publics ;
  • IBAN, entreprises et cryptomonnaies ;
  • relations entre personnes, comptes, domaines et moyens de paiement ;
  • réseaux descrocs réutilisant les mêmes identifiants.

Le résultat doit être traçable, reproductible et présentable à des enquêteurs.


Cadre légal non négociable

Labfy Investigation reste limité à :

  • sources publiquement accessibles ;
  • données remises légalement par une victime ou un enquêteur ;
  • API et comptes utilisés conformément à leurs autorisations ;
  • collecte sans contournement dauthentification ;
  • recherche passive ou explicitement autorisée ;
  • conservation de la méthode, de la source et de la sortie brute.

Sont exclus :

  • intrusion ;
  • exploitation de vulnérabilité ;
  • brute force dauthentification ;
  • credential stuffing ;
  • phishing ;
  • vol ou réutilisation de jetons ;
  • usurpation ;
  • social engineering ;
  • accès à une ressource privée ;
  • modification dune ressource distante ;
  • utilisation de données obtenues illicitement.

Livrables

docs/osint/TOOL_INVENTORY.md
docs/osint/LEGAL_AND_OPERATIONAL_POLICY.md
data/osint_tools.json
data/osint_tools.csv

Le JSON deviendra la future source de génération du catalogue étendu.


Schéma dune fiche outil

identifier
name
repository
homepage
publisher
category
subcategories
description
license
license_verified
open_source_status
latest_release
last_activity
primary_language
installation_methods
ubuntu_packages
runtime_dependencies
input_types
output_formats
supports_json
supports_csv
supports_stdout
supports_file_output
requires_account
requires_api_key
requires_paid_service
network_activity
collection_mode
authentication_mode
rate_limit_risk
terms_of_service_risk
personal_data_risk
false_positive_risk
evidentiary_value
reproducibility
tool_version_command
integration_mode
integration_priority
legal_status
maintenance_status
decision
decision_reason
notes
reviewed_at
reviewed_by

Valeurs normalisées

open_source_status

OPEN_SOURCE
SOURCE_AVAILABLE
OPEN_CLIENT_CLOSED_SERVICE
CLOSED_SOURCE
UNKNOWN

collection_mode

LOCAL_ONLY
PASSIVE_REMOTE
REMOTE_PUBLIC_REQUESTS
AUTHENTICATED_PUBLIC_API
ACTIVE_LOW_IMPACT
ACTIVE_INTRUSIVE
MIXED
APPROVED_PASSIVE
APPROVED_WITH_CONFIGURATION
MANUAL_REVIEW_REQUIRED
RESTRICTED_TO_AUTHORIZED_TARGETS
REJECTED
UNKNOWN

integration_mode

DIRECT_CLI
DIRECT_LIBRARY
LOCAL_SERVICE
REMOTE_API
BROWSER_ASSISTED
EXPORT_IMPORT
REFERENCE_ONLY
REJECTED

integration_priority

P0
P1
P2
P3
BACKLOG
REJECTED

decision

INTEGRATE
PROTOTYPE
MONITOR
MANUAL_ONLY
REJECT
UNREVIEWED

Notation sur 100

  • valeur opérationnelle : 30 ;
  • intégrabilité : 20 ;
  • légalité et maîtrise du risque : 20 ;
  • traçabilité : 15 ;
  • maintenance : 10 ;
  • coût : 5.

Un outil sous 50/100 ne doit pas être intégré sans justification écrite.


Inventaire initial à auditer

A. Pseudonymes, comptes et identités publiques

Outil Dépôt/projet Usage Priorité
Sherlock sherlock-project/sherlock Recherche de pseudonymes P0
Maigret soxoj/maigret Recherche approfondie de pseudonymes P0
Blackbird p1ngul1n0/blackbird Comptes et enrichissement P1
WhatsMyName WebBreacher/WhatsMyName Base de règles de présence P0
Enola theyahya/enola Recherche rapide de pseudonymes P2
Social Analyzer qeeqbox/social-analyzer Analyse multi-plateformes P2
socialscan iojw/socialscan Pseudonymes et e-mails P1
GHunt mxrch/GHunt Écosystème Google P1
GitFive mxrch/GitFive Corrélation GitHub P1
Holehe megadose/holehe Présence dune adresse sur des services P0
MOSINT alpkeskin/mosint Enrichissement de-mails P2
h8mail khast3x/h8mail Jeux de données autorisés uniquement P1 restreint
Ignorant megadose/ignorant Présence dun téléphone sur des services Revue
Instaloader instaloader/instaloader Contenus Instagram publics Revue
snscrape JustAnotherArchivist/snscrape Collecte sociale publique Revue
gallery-dl mikf/gallery-dl Conservation de médias publics P1
yt-dlp yt-dlp/yt-dlp Métadonnées et médias publics P0

B. E-mails

Outil Usage Priorité
Holehe Présence sur des services P0
MOSINT Enrichissement multi-source P2
h8mail Recherche dans des sources licites Restreint
GHunt Enrichissement Google P1
theHarvester E-mails liés à un domaine P0
SpiderFoot Modules denrichissement P1
Recon-ng Framework modulaire P2
python-email-validator Validation et normalisation P1
dnspython Vérification DNS et MX P1
Clients OpenPGP Identifiants publiés dans des clés P2

C. Téléphones

Outil Dépôt/projet Usage Priorité
PhoneInfoga sundowndev/phoneinfoga Pays, opérateur, formats, sources publiques P0
libphonenumber google/libphonenumber Parsing et validation P0
python-phonenumbers daviddrysdale/python-phonenumbers Adaptateur Python P2
Ignorant megadose/ignorant Présence sur certains services Revue
Normalisation E.164 interne Labfy Canonicalisation P0

Aucun outil ne doit prétendre identifier le titulaire réel dun numéro sans source officielle ou judiciaire.

D. Domaines, DNS, certificats et infrastructures

Outil Dépôt/projet Usage Priorité
Amass owasp-amass/amass Cartographie dactifs P1
Subfinder projectdiscovery/subfinder Sous-domaines passifs P0
theHarvester laramies/theHarvester Domaines, e-mails, IP, noms P0
SpiderFoot smicallef/spiderfoot Automatisation multi-source P1
Recon-ng lanmaster53/recon-ng Framework modulaire P2
sn0int kpcyrd/sn0int Framework semi-automatique P2
BBOT blacklanternsecurity/bbot Orchestration récursive Revue
dnsx projectdiscovery/dnsx Requêtes DNS structurées P1
Findomain Findomain/Findomain Sous-domaines P2
assetfinder tomnomnom/assetfinder Actifs passifs P2
dnstwist elceef/dnstwist Typosquatting et variantes P0
URLCrazy urbanadventurer/urlcrazy Variantes de domaines P1
CertStream CaliDog/certstream-python Certificats publics P1
massdns blechschmidt/massdns Résolution de masse Restreint
puredns d3mondev/puredns Résolution de masse Restreint
shuffledns projectdiscovery/shuffledns Résolution de masse Restreint
Knockpy guelfoweb/knock Sous-domaines Revue
Sublist3r aboul3la/Sublist3r Sous-domaines Surveillance
httpx projectdiscovery/httpx Qualification HTTP Restreint
httprobe tomnomnom/httprobe Services HTTP Restreint
Katana projectdiscovery/katana Exploration Web Restreint
RDAP clients À sélectionner Enregistrements normalisés P0
curl Projet curl Requêtes HTTP reproductibles P0
OpenSSL Projet OpenSSL Certificats TLS P0
dig / host / whois Paquets système DNS et enregistrements P0

Les outils à forte volumétrie sont désactivés par défaut.

E. Historique du Web et conservation

Outil Dépôt/projet Usage Priorité
waybackurls tomnomnom/waybackurls URLs Wayback P0
gau lc/gau URLs darchives multiples P0
waymore xnl-h4ck3r/waymore Historique approfondi P1
ArchiveBox ArchiveBox/ArchiveBox Archivage local P0
Browsertrix Crawler webrecorder/browsertrix-crawler WARC/WACZ P0
Browsertrix webrecorder/browsertrix Service local P2
ArchiveWeb.page webrecorder/archiveweb.page Capture navigateur P0
pywb webrecorder/pywb Relecture WARC P1
warcio webrecorder/warcio Lecture/écriture WARC P0
ReplayWeb.page webrecorder/replayweb.page Relecture darchives P1
SingleFile gildas-lormeau/SingleFile Copie autonome dune page P0
monolith Y2Z/monolith Sauvegarde autonome P1
grab-site ArchiveTeam/grab-site Archivage WARC Revue
Heritrix internetarchive/heritrix3 Crawl darchivage Restreint
waybackpy akamhy/waybackpy Client Wayback P2
Perma harvard-lil/perma Préservation de références Manuel/API

F. Documents, photos et vidéos

Outil Dépôt/projet Usage Priorité
ExifTool exiftool/exiftool Métadonnées multi-format P0
MediaInfo MediaArea/MediaInfo Audio et vidéo P0
FFmpeg / ffprobe FFmpeg/FFmpeg Analyse technique P0
Exiv2 Exiv2/exiv2 Métadonnées dimages P1
Hachoir hachoir/hachoir Formats binaires P1
oletools decalage2/oletools Documents Office P0
DidierStevensSuite DidierStevens/DidierStevensSuite PDF et OLE P1
Poppler tools Projet Poppler PDF, texte et images P0
qpdf qpdf/qpdf Structure PDF P0
Tesseract OCR tesseract-ocr/tesseract OCR local P0
ImageMagick ImageMagick/ImageMagick Inspection de copies P1
OpenCV opencv/opencv Comparaison dimages P2
ImageHash JohannesBuchner/imagehash Empreintes perceptuelles P1
pHash Projet pHash Empreintes perceptuelles P2
file/libmagic Paquet système Identification de format P0
strings/binutils Paquet système Chaînes de caractères P1
MAT2 jvoisin/mat2 Métadonnées sur copies P2
yt-dlp yt-dlp/yt-dlp Conservation de médias publics P0
gallery-dl mikf/gallery-dl Galeries publiques P1
InVID-WeVerify Extension/service Vérification manuelle Manuel
face_recognition ageitgey/face_recognition Comparaison locale Restreint
DeepFace serengil/deepface Comparaison locale Restreint
InsightFace deepinsight/insightface Analyse faciale Restreint

Aucune recherche biométrique massive ne doit être intégrée.

G. Dépôts publics et code

Outil Usage Priorité
GitFive Corrélation GitHub P1
GitHub CLI API et données publiques P0
TruffleHog Dépôts publics autorisés Revue
Gitleaks Secrets publiés Revue
ggshield Dépôts autorisés Revue
ripgrep Recherche locale P0
git-sizer Structure de dépôt P2
Git natif Historique, auteurs et dates P0

Un secret découvert ne doit jamais être utilisé pour accéder à un compte.

H. Réputation et APIs

Outil/client Usage Priorité
vt-cli VirusTotal API
OTX Python SDK AlienVault OTX API
urlscan-go URLScan API
Shodan Python Shodan API
Censys Python Censys API
pyGreynoise GreyNoise API
PyMISP MISP P2
OpenCTI client OpenCTI P2
YARA Classement local P2
capa Analyse locale Backlog

Toute donnée envoyée à un tiers doit être affichée avant lappel.

I. Corrélation et graphes

Outil Usage Priorité
NetworkX Algorithmes de graphe P1
igraph Graphes performants P2
Graphviz Rendu P0
Gephi Analyse visuelle externe Export
Cytoscape Analyse visuelle externe Export
OpenCTI Référence de modèle Référence
MISP Référence dindicateurs Référence
Aleph Recherche documentaire et entités P1
OpenSanctions Entités et sanctions publiques P1
FollowTheMoney Modèle de relations P1
Neo4j Community Base graphe externe P3
OSINTBuddy Graphe denquête Surveillance

Labfy conserve son propre modèle de données.

J. Géolocalisation

Outil Usage Priorité
geopy Géocodage configurable P2
Nominatim Géocodage OpenStreetMap P1
OSMnx Réseaux géographiques P3
Overpass API Données OpenStreetMap P2
QGIS Analyse externe Export
SunCalc Position du soleil P2
Skyfield Calculs astronomiques P3
ExifTool Coordonnées de médias P0

K. IBAN, entreprises et cryptomonnaies

Outil Usage Priorité
python-stdnum Validation IBAN et identifiants P0
iban4j Validation IBAN P3
OpenSanctions Personnes et organisations P1
FollowTheMoney Relations structurées P1
bitcoin-etl Données publiques Bitcoin P2
ethereum-etl Données publiques Ethereum P2
GraphSense Analyse de blockchains P2
BlockSci Analyse locale Surveillance
mempool Explorateur Bitcoin open source P2
Bitcoin Core Nœud local P3
Geth Nœud Ethereum local P3

Un IBAN ne permet pas didentifier publiquement son titulaire. Labfy se limite à la validation, au pays, à la banque lorsquelle est publique et aux corrélations entre dossiers.


Outils exclus du mode OSINT standard

nmap
masscan
naabu
nuclei
gobuster
ffuf
dirsearch
sqlmap
hydra
metasploit
Sn1per
Nikto
WPScan
scanners actifs Burp
outils dexploitation
outils de credential stuffing
outils de phishing

Décision initiale :

integration_mode = REJECTED
decision = REJECT

Vague prioritaire pour laffaire descroquerie

P0

Sherlock
Maigret
WhatsMyName
Holehe
PhoneInfoga
libphonenumber
GitHub CLI
ExifTool
MediaInfo
ffprobe
Tesseract OCR
Poppler tools
qpdf
oletools
file/libmagic
yt-dlp
waybackurls
gau
ArchiveBox
Browsertrix Crawler
ArchiveWeb.page
warcio
SingleFile
theHarvester
Subfinder
dnstwist
python-stdnum
Graphviz

P1

Blackbird
GHunt
GitFive
h8mail avec sources licites uniquement
gallery-dl
SpiderFoot
Amass
dnsx
URLCrazy
OpenSanctions
FollowTheMoney
Aleph
NetworkX
ImageHash
VirusTotal CLI
urlscan

Audit obligatoire par outil

  1. données envoyées sur Internet ;
  2. domaines et API contactés ;
  3. compte, cookie ou jeton requis ;
  4. compatibilité avec les CGU ;
  5. volume de requêtes ;
  6. accès strictement public ;
  7. capacité de modifier une ressource distante ;
  8. risque de faux positif ;
  9. précision des sources ;
  10. sortie brute conservable ;
  11. reproductibilité ;
  12. commande de version ;
  13. licence et redistribution ;
  14. installation Ubuntu ;
  15. dépendances ;
  16. coût ou API obligatoire ;
  17. activité du projet ;
  18. vulnérabilités connues ;
  19. télémétrie ;
  20. scripts dinstallation distants.

Aucun curl | sh, wget | bash, sudo pip install ou sudo npm install -g ne doit être exécuté sans audit.


Modèle de sécurité dintégration

arguments séparés
aucun shell
utilisateur non privilégié
dossier temporaire
environnement minimal
timeout
limites stdout/stderr
annulation
journal
empreinte du binaire
version
domaines contactés
sortie brute UTC
SHA-256

Valeur probatoire

Labfy doit distinguer :

résultat de loutil
source publique
copie locale
interprétation
corrélation
hypothèse

Chaque exécution doit conserver :

outil
version
commande
arguments
date UTC
source
URL
sortie brute
capture
archive
SHA-256
statut HTTP
notes
niveau de confiance

Un résultat Sherlock, Maigret, Holehe ou PhoneInfoga ne prouve jamais une identité à lui seul.


Phases

Phase 1

Créer le JSON, le CSV et le schéma.

Phase 2

Auditer toute la liste P0.

Phase 3

Auditer la liste P1.

Phase 4

Attribuer note, priorité, mode dintégration, statut juridique et décision.

Phase 5

Produire le rapport des outils retenus, manuels, surveillés et rejetés.

Phase 6

Validation humaine avant tout passage à INTEGRATE.


Contrôles automatisés futurs

  • identifiants uniques ;
  • noms non vides ;
  • dépôt renseigné ;
  • licence vérifiée pour tout outil approuvé ;
  • décision renseignée ;
  • aucune priorité P0 pour un outil rejeté ;
  • aucun outil actif marqué passif ;
  • JSON valide ;
  • CSV généré depuis le JSON ;
  • aucune clé API ;
  • aucun secret ;
  • aucune donnée issue dune enquête réelle.

Critères dacceptation

  • au moins 80 outils ou composants recensés ;
  • toutes les catégories couvertes ;
  • tous les P0 audités ;
  • licences P0 vérifiées ;
  • installation Ubuntu P0 documentée ;
  • qualification juridique P0 ;
  • commande de version P0 ;
  • séparation claire passif/actif/intrusif ;
  • aucun outil rejeté proposé à lutilisateur ;
  • inventaire Markdown, JSON et CSV ;
  • décisions justifiées ;
  • feuille de route dintégration ;
  • document présentable à des enquêteurs.

Suite prévue

#041 — Initialisation asynchrone des dépendances
#042 — Adaptateurs pseudonymes
#043 — Adaptateurs e-mail
#044 — Adaptateurs téléphone
#045 — Documents et métadonnées
#046 — Archivage probatoire du Web
#047 — Domaines et infrastructures passives
#048 — Graphe de corrélation