secubox-deb/docs/wiki/DPI-Exfiltration.md
CyberMind-FR 6cc3546dc2 docs: tracking + wiki for DPI exfil engine + Netrunner report (2026-06-22)
HISTORY/WIP/TODO checkpoint for the session (#687 DPI pipeline, #707 Netrunner
report HTML+PDF, #689/#697 sbxmitm fixes; all merged & live). New wiki page
docs/wiki/DPI-Exfiltration.md + sidebar links (kbin ToolBoX, DPI Exfil + Report).
2026-06-22 13:02:19 +02:00

87 lines
3.7 KiB
Markdown
Raw Permalink 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.

# DPI Exfiltration & le rapport Netrunner
**CyberMind · Gondwana · Savoie** | [Home](Home) | [kbin](Kbin-Toolbox) | [Modules](Modules)
> Voir *qui*, parmi tes appareils derrière le tunnel R3, **envoie des données vers des
> clouds externes** — et lire le tout dans une **fiche de joueur cyberpunk**.
---
## Pipeline DPI (paquet `secubox-dpi`)
```
wg-toolbox (tap R3)
└─ ndpiReader -C (fenêtres 60 s) ← producteur : secubox-dpi-flowcap
└─ secubox-dpi-collector (Go, stdlib) ← scoreur
├─ device = sha256(wg_pubkey)[:16] (wg-peers.json)
├─ SNI → catégorie : cloud · filehost · messaging · ai ·
│ media · game · social · adult
└─ scénarios exfil :
• exfil_volume (≥5 Mo ↑ vers cloud, ↑>↓)
• new_cloud (1ʳᵉ sortie vers un cloud)
• beaconing (cadence 1 s1 h, CV ≤ 0,25)
• unclassified_external
└─ /var/lib/secubox/dpi/state.json (fenêtre live, dashboard)
└─ /var/lib/secubox/dpi/cumulative.json (rollup 7 j, rapport)
└─ GET /api/v1/dpi/exfil
```
- **state.json** = la dernière fenêtre de 60 s (vue *live* du dashboard `/dpi/`).
- **cumulative.json** = rollup glissant **7 jours** par device (utilisé par le rapport
kbin, sinon un appareil inactif afficherait des zéros).
- Catégories *exfil-relevant* (cloud/filehost/messaging/ai) = celles qui déclenchent une
alerte ; media/game/social/adult sont affichées mais jamais alertées (c'est de la
navigation, pas de l'exfiltration).
### Services
| Unit | Rôle |
|------|------|
| `secubox-dpi-flowcap.service` | boucle ndpiReader → collector (Nice 15, MemoryMax 256M) |
| `secubox-dpi.service` | API FastAPI (`/api/v1/dpi/*`, dont `/exfil`) |
Dépend de `libndpi-bin` (fournit `ndpiReader`).
---
## Le rapport kbin — fiche Netrunner
`https://kbin.gk2.secubox.in/report/me/html?mh=<hash>` (HTML) et `/report/me` (PDF).
La même donnée live (exposition, traceurs, DPI cumulatif, pubs bloquées, protections
actives) est réhabillée en **fiche de personnage cyberpunk** :
- **Persona** — classe + emoji depuis le *User-Agent de la requête* (l'appareil qui
consulte), niveau **R3** auto pour un pair wg-toolbox, alignement selon l'exposition.
- **Barres** — 🧬 ICE/intégrité (100 exposition), ☣️ Exposition, ✦ XP (Ko échangés 7 j).
- **Caractéristiques** (pip bars) — 🛡️ Défense · 👁️ Discrétion · ⚔️ Riposte (pubs tuées) ·
🧠 Intel (diversité DPI).
- **Inventaire** — Tor / Cert MITM / WireGuard / Ad-blocker (✓/✗).
- **Bestiaire** — top traceurs. **Quêtes** — alertes exfil.
- **Onglets** (HTML) : Pistage / DPI-Exfil / Overall.
### PDF
Le PDF reprend tout (fiche Netrunner + « En un coup d'œil » + grille de donuts
DPI/MITM/Certs/Pubs + **carto** réseau + tables emoji Traceurs/Pays/DPI). Les graphiques
sont rendus en **PNG matplotlib** embarqués (les donuts vectoriels fpdf2 s'affichaient
en blanc sur iOS/Chrome) ; la grille est **une seule image 2×2**.
---
## Exploitation
```bash
# état live
curl -s --unix-socket /run/secubox/dpi.sock http://localhost/api/v1/dpi/exfil | jq .
# le moteur R3 = Go sbxmitm (PAS la mitmproxy Python)
systemctl status secubox-toolbox-ng-worker@{1,2,3,4} # 10.99.1.1:8091-8094
```
> ⚠️ Le tap DPI ne voit que le trafic R3 (wg-toolbox). Un device doit surfer via le
> tunnel 🧅/🛰️ pour apparaître. SNI absent (IP-only/QUIC) ⇒ non classé (enrichissement
> ASN prévu en Phase 3).
---
*Réf. issues : #687 (pipeline), #707 (fiche Netrunner), #714/#716 (rendu PDF). Voir
[HISTORY 2026-06-22](../../.claude/HISTORY.md).*