tcpcat — reconnaissance réseau hautes performances
et test de visibilité IDS/IPS
Note technique communautaire — v1.0
Statut de ce mémo
Ce document présente tcpcat, un moteur de reconnaissance réseau écrit en Go. Cette note communautaire n'est pas une RFC IETF et ne remplace pas Nmap ; elle décrit une approche complémentaire orientée performances, rapports et évaluation autorisée. Le projet est distribué sous licence Apache-2.0.
Résumé
tcpcat combine un moteur de scan multi-protocoles avec une accélération eBPF/AF_XDP sur Linux. Ses contrôles de variation de paquets et de timing aident les équipes autorisées à évaluer la visibilité de leurs IDS/IPS. Un moteur de détection sandboxé en WebAssembly assure la corrélation avec des bases CVE.
Démarrage rapide
LocalDécouvrir la CLI
go run ./cmd/tcpcat --help
Exporter un rapport
go run ./cmd/tcpcat -sV \
-j report.json 127.0.0.1Compiler depuis les sources
go build -o tcpcat \ ./cmd/tcpcat
1. Introduction et spécifications
§1tcpcat expose l'intégralité de la pile TCP/IP au niveau du pilote réseau. Plutôt que de passer par les sockets BSD, chaque paquet est construit, envoyé et lu directement en espace noyau. Le tableau ci-dessous résume les valeurs mesurées en environnement de test.
- Débit vs. outils classiques
- 23,8×
- Contrôles de variation (phase 4)
- 29 techniques
- Débit crête / cœur
- ≈ 1 000 000 pps
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2. Capacités système
§22.1 Reconnaissance L2–L7
Énumération multi-protocoles (TCP, UDP, ICMP), cartographie de topologie L3/L4 avec empreinte logicielle, et découverte asynchrone DNS / mDNS / NetBIOS.
SYN · ACK · Window · Xmas · FIN scans
2.2 Noyau Linux eBPF / AF_XDP
Accès direct aux paquets au niveau du pilote réseau — contournement complet de la couche socket. Débit filaire sans surcharge CPU notable.
≈1M pps/cœur · Zero-Copy Driver Mode
2.3 Intelligence programmable (WASM)
Moteur de détection sandboxé en WebAssembly. Les dissecteurs de protocoles peuvent être écrits en Rust, C, Go ou AssemblyScript.
Corrélation CVE dynamique · Vulners API · Google OSV
3. Test de visibilité IDS/IPS
§3Des contrôles de variation répartis sur la pile OSI, sélectionnables via --evasion, pour valider la journalisation et les alertes de défenses autorisées.
| Profil | Variation | Usage | Surcharge | Usage recommandé |
|---|---|---|---|---|
| off | Trafic de référence | Inventaire autorisé | 0 % | Cartographie rapide |
| light | Variation limitée | Audit de production | +5 % | Impact réduit |
| moderate | Variation standard | Validation contrôlée | +15 % | Environnements surveillés |
| aggressive | Variation étendue | Plan de test approuvé | +30 % | Laboratoire ou environnement contrôlé |
| stealthy | Variation élevée | Scénario de visibilité | +50 % | Validation encadrée |
- Couche réseau (L3)
- Fragmentation IPv4 et mutation adaptative de la stratégie TTL.
- Couche transport (L4)
- Ajustement de fenêtre TCP, ports éphémères randomisés, crafting de flags.
- Couche session (L5)
- Jitter temporel à coefficient de variance réglable (0.0–1.0).
- Couche application (L7)
- Orchestration distribuée de leurres (decoy swarm) en sockets brutes.
4. Chaîne d'évaluation
FluxLes cibles, services et résultats traversent les contrôles suivants avant de produire des rapports exploitables.
Target input
|
Scope validation (--scope-file)
|
Host discovery and scan engine
|
Service and version detection (-sV)
|
Offline/API CVE correlation
|
JSON / SARIF / JSONL / baseline comparison
5. Benchmark comparatif
§5Énumération des ports 1–1024, même charge réseau et même infrastructure cible.
Résultats de laboratoire indicatifs. Consultez le dépôt pour la méthode, le matériel et les limites de reproductibilité.
Audit autorisé
GuideLe profil safe-production fournit un point de départ prudent pour un périmètre explicitement approuvé. Les rapports JSON, SARIF et JSONL facilitent le suivi et l'intégration aux outils de sécurité.
sudo tcpcat \ --profile safe-production \ --scope-file scope.txt \ -Pn -sT -sV -p 443 \ -j report.json --sarif report.sarif --audit-log audit.jsonl \ 10.42.10.15
Rapports et suivi
Sorties| Format | Utilisation |
|---|---|
-j report.json | Résultats détaillés, services et évaluation CVE. |
--sarif report.sarif | Résultats pour CI/CD et outils compatibles SARIF. |
--audit-log audit.jsonl | Historique append-only d'exécutions autorisées. |
--baseline previous.json --changes delta.json | Nouveaux ports, changements de service et nouvelles CVE. |
Exemples de résultats
RapportsJSON
{
"service": "apache",
"version": "2.4.49",
"risk_severity": "high"
}SARIF
{
"ruleId": "CVE-2021-41773",
"level": "error"
}Évolution
{
"new_open_ports": [
{"port": 443}
]
}Support plateforme
Compatibilité| OS | Support |
|---|---|
| Linux 5.8+ | Scans socket; eBPF/AF_XDP expérimental sur matériel compatible. |
| macOS | Scans TCP Connect; pas d'AF_XDP. |
| Windows | Scans basés sur sockets selon les privilèges disponibles. |
Références
Écosystème6. Référence en ligne de commande
§6sudo tcpcat -sS --top-ports 1000 --rate 100000 target.lan
sudo tcpcat -Pn -sT -p 1-10000 --evasion aggressive --jitter 0.8 --frag --decoy 8.8.8.8,1.1.1.1 target.lan
sudo tcpcat --ebpf -p 1-1000 10.0.0.0/16 -w 128 -T 5
sudo tcpcat -sV -p 22,80,443,3306,5432,27017 192.168.0.0/24 -j report.json
Limites connues
Important- eBPF/AF_XDP nécessite Linux, un noyau et une carte réseau compatibles.
- Une bannière et une version détectées ne constituent pas une preuve de vulnérabilité exploitable.
- Une correspondance CVE
version-basedexige une validation par l'équipe responsable. - Les réseaux, hôtes et protections peuvent filtrer ou modifier les résultats de scan.
- Les fonctions avancées dépendent des privilèges locaux et du chemin réseau.
Contribuer
Open sourceLes contributions sont bienvenues pour les détecteurs de services, signatures CVE hors ligne, tests, documentation et compatibilité plateforme. Exécutez la suite avant une pull request.
go test ./... go build ./cmd/tcpcat
Annexe A. Folklore réseau (informatif, non normatif)
Ann. A« Il n'y a pas d'endroit comme le 127.0.0.1. » — dans la tradition des RFC humoristiques (cf. RFC 2549, RFC 1149).
A.1 — RFC 768, le dilemme du datagramme
« Je te raconterais bien une blague sur l'UDP... mais je ne suis pas certain que tu la reçoives, et honnêtement je me fiche de savoir si tu l'as comprise. »
A.2 — RFC 793, le barman TCP
Un paquet entre dans un bar : SYN — « Je voudrais une bière. » SYN-ACK — « Tu veux une bière ? » ACK — « Oui, une bière. » Le barman répond RST (port 80 fermé).
A.3 — Extension du modèle OSI
Layer 8 exception : erreur critique identifiée entre la chaise et le clavier. « Avez-vous essayé d'éteindre et de rallumer la table de routage BGP ? »
A.4 — Wireshark à 3h du matin
Filtre !(arp or dns or mdns or ssdp) → 0 paquet. « Qui diffuse du SSDP sur le VLAN de prod à 3h du matin ?! »
A.5 — ICMP Echo Request
64 bytes, icmp_seq=1, ttl=116 — la seule relation stable et sans engagement dans ta vie.
A.6 — MTU 1500 vs bit DF
ICMP type 3, code 4 : « Fragmentation Needed and DF bit set. » Le trou noir des paquets orphelins — tcpcat --frag le contourne nativement.
7. Considérations de sécurité
§7autorisé
uniquement
tcpcat est strictement réservé aux audits de sécurité défensifs, tests d'intrusion autorisés et à l'administration d'infrastructures sous mandat explicite. Tout accès ou maintien non autorisé dans un système de traitement automatisé de données est passible de sanctions pénales (art. 323-1 et suivants du Code pénal, CFAA, RGPD). Les auteurs déclinent toute responsabilité en cas d'utilisation illicite.
Le projet est non commercial et ne fournit aucun service de scan hébergé. Les utilisateurs doivent respecter les sanctions, contrôles à l'export et lois applicables. Ce document n'est pas un avis juridique ni une certification de conformité. Voir NOTICE.md.