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

681 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```text
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
```text
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
```text
OPEN_SOURCE
SOURCE_AVAILABLE
OPEN_CLIENT_CLOSED_SERVICE
CLOSED_SOURCE
UNKNOWN
```
### collection_mode
```text
LOCAL_ONLY
PASSIVE_REMOTE
REMOTE_PUBLIC_REQUESTS
AUTHENTICATED_PUBLIC_API
ACTIVE_LOW_IMPACT
ACTIVE_INTRUSIVE
MIXED
```
### legal_status
```text
APPROVED_PASSIVE
APPROVED_WITH_CONFIGURATION
MANUAL_REVIEW_REQUIRED
RESTRICTED_TO_AUTHORIZED_TARGETS
REJECTED
UNKNOWN
```
### integration_mode
```text
DIRECT_CLI
DIRECT_LIBRARY
LOCAL_SERVICE
REMOTE_API
BROWSER_ASSISTED
EXPORT_IMPORT
REFERENCE_ONLY
REJECTED
```
### integration_priority
```text
P0
P1
P2
P3
BACKLOG
REJECTED
```
### decision
```text
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
```text
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 :
```text
integration_mode = REJECTED
decision = REJECT
```
---
# Vague prioritaire pour laffaire descroquerie
## P0
```text
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
```text
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
```text
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 :
```text
résultat de loutil
source publique
copie locale
interprétation
corrélation
hypothèse
```
Chaque exécution doit conserver :
```text
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
```text
#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
```