tcpcat — reconnaissance réseau en espace noyau
et évasion IDS/IPS adaptative
Spécification technique & référence produit — v1.0
Statut de ce mémo
Ce document présente tcpcat, un moteur de reconnaissance réseau écrit en Go, ainsi que son pipeline d'évasion. Il ne définit pas de standard IETF ; sa distribution est libre sous licence Apache-2.0. L'usage de l'outil décrit ici est soumis aux conditions énoncées en §6 (Sécurité).
Résumé
tcpcat combine un moteur de scan multi-protocoles avec un chemin de paquets en espace noyau via eBPF/AF_XDP, contournant la pile socket standard de Linux. Un pipeline d'évasion modulaire (29 techniques, réparties sur les couches L3 à L7) permet d'ajuster la discrétion du scan face aux IDS/IPS. Un moteur de détection sandboxé en WebAssembly assure la corrélation avec des bases CVE.
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×
- Vecteurs d'évasion (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. Pipeline d'évasion modulaire
§329 techniques réparties sur la pile OSI, sélectionnables via un profil unique (--evasion).
| Profil | Risque de détection IDS | Contournement IPS | Surcharge | Usage recommandé |
|---|---|---|---|---|
| off | 60–80 % | Aucun | 0 % | Audits autorisés, cartographie rapide |
| light | 40–50 % | Basique | +5 % | Scans de production (équilibré) |
| moderate | 20–30 % | Stateful | +15 % | Environnements sous surveillance |
| aggressive | 5–15 % | Comportemental | +30 % | Déploiements haute sécurité / SOC stricts |
| stealthy | < 1 % | Durci ML | +50 % | Évasion maximale sous DPI |
- 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. Benchmark comparatif
§4Énumération des ports 1–1024, même charge réseau et même infrastructure cible.
5. Référence en ligne de commande
§5sudo 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
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.
6. Considérations de sécurité
§6autorisé
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.