ExfilGuardian
References

Glossaire technique

Définitions des acronymes, termes techniques et concepts utilisés dans le projet

Réseau et protocoles

TermeDéfinition
DNS (Domain Name System)Système qui traduit les noms de domaine (ex : google.com) en adresses IP. Peut être détourné pour exfiltrer des données en les encodant dans les sous-domaines des requêtes.
TCP (Transmission Control Protocol)Protocole de transport fiable avec connexion (handshake, acquittements). Utilisé par HTTP, TLS, gRPC.
UDP (User Datagram Protocol)Protocole de transport sans connexion, plus rapide que TCP mais sans garantie de livraison. Utilisé par DNS et certains flux temps réel.
ICMP (Internet Control Message Protocol)Protocole de diagnostic réseau (ping, traceroute). Peut être détourné comme canal covert en cachant des données dans le payload.
TLS (Transport Layer Security)Protocole de chiffrement qui sécurise les communications (le « s » de HTTPS). ExfilGuardian ne déchiffre pas le TLS, mais analyse les métadonnées du handshake (certificats, SNI, JA3).
HTTP/HTTPSProtocole de transfert web. HTTPS = HTTP chiffré via TLS. L'exfiltration peut passer par des uploads HTTP vers des services légitimes.
mTLS (Mutual TLS)TLS où les deux parties (client et serveur) présentent un certificat. Utilisé pour authentifier les agents auprès du serveur. Contrairement au TLS classique où seul le serveur prouve son identité, ici l'agent doit aussi prouver la sienne.
gRPC (Google Remote Procedure Call)Framework d'appels de procédures distantes basé sur HTTP/2 et Protobuf. Permet le streaming bidirectionnel. Utilisé pour la communication agent vers serveur.
Protobuf (Protocol Buffers)Format de sérialisation binaire de Google. Plus compact et plus rapide que JSON. Définit la structure des messages échangés entre agent et serveur dans exfil.proto.
REST (Representational State Transfer)Style d'architecture pour les APIs web. Le serveur expose une API REST (via Axum) pour le dashboard, les alertes et les métriques.
RPC (Remote Procedure Call)Appel de fonction exécuté sur une machine distante comme si c'était local. gRPC en est une implémentation moderne.
IPC (Inter-Process Communication)Communication entre processus sur la même machine. Utilisé entre le processus Electron (main) et le rendu Next.js (renderer) via contextBridge.
5-tupleLes 5 éléments qui identifient une connexion réseau : IP source, IP destination, port source, port destination, protocole. Utilisé pour agréger les paquets en flux.
MTU (Maximum Transmission Unit)Taille maximale d'un paquet réseau (typiquement 1500 octets sur Ethernet).
PayloadContenu utile d'un paquet réseau, par opposition aux en-têtes (headers) de contrôle.

Sécurité et menaces

TermeDéfinition
ExfiltrationVol de données d'un réseau vers l'extérieur. Peut utiliser des canaux couverts (DNS, ICMP) ou des services légitimes (WeTransfer, HTTP uploads). C'est la menace centrale que détecte ExfilGuardian.
Canal covert (covert channel)Canal de communication caché dans un protocole légitime. Exemples : données encodées dans des requêtes DNS, payload ICMP surdimensionné, en-têtes HTTP personnalisés.
C2 (Command and Control)Serveur utilisé par un attaquant pour piloter un implant installé sur une machine compromise. Le trafic C2 présente souvent des patterns de beaconing régulier.
ImplantProgramme malveillant installé sur une machine compromise qui communique avec un serveur C2. Aussi appelé backdoor, RAT (Remote Access Trojan) ou agent malveillant.
BeaconingCommunication périodique et régulière entre un implant et son serveur C2. Détectable par le faible coefficient de variation des intervalles entre connexions.
DGA (Domain Generation Algorithm)Algorithme utilisé par les malwares pour générer automatiquement des noms de domaine pseudo-aléatoires (ex : xk3mf9q2.com). Détectable par l'entropie élevée et les patterns non linguistiques.
JA3 / JA3SMéthode de fingerprinting TLS qui génère un hash à partir des paramètres du ClientHello (JA3) ou du ServerHello (JA3S). Permet d'identifier des outils comme Cobalt Strike ou Meterpreter par leur empreinte TLS unique.
SNI (Server Name Indication)Extension TLS qui indique le nom de domaine demandé dans le ClientHello. Un mismatch entre le SNI et le CN du certificat est un indicateur d'anomalie.
CN (Common Name)Champ du certificat TLS qui identifie le nom de domaine pour lequel le certificat a été émis.
DPI (Deep Packet Inspection)Analyse du contenu des paquets réseau au-delà des en-têtes. ExfilGuardian inspecte les protocoles applicatifs (DNS, TLS, ICMP) pour détecter des anomalies.
SignatureRègle de détection qui décrit un pattern connu de menace. Dans ExfilGuardian, les signatures sont écrites en YAML et peuvent être modifiées sans redémarrer le serveur.
Faux positifAlerte déclenchée pour un événement qui n'est pas réellement malveillant. Réduire les faux positifs est un objectif central du scoring par corrélation.
SOC (Security Operations Center)Centre opérationnel de sécurité. Équipe qui surveille les alertes de sécurité et gère les incidents. Public cible d'ExfilGuardian.
MITRE ATT&CKRéférentiel public de techniques d'attaque documentées par catégories (exfiltration, persistance, mouvement latéral...). Les catégories d'ExfilGuardian s'alignent sur ce framework.
CA (Certificate Authority)Autorité de certification qui signe les certificats TLS. Le serveur ExfilGuardian agit comme sa propre CA pour émettre les certificats des agents.
ECDSA (Elliptic Curve Digital Signature Algorithm)Algorithme de signature numérique basé sur les courbes elliptiques. Utilisé (P-256) pour les certificats mTLS du projet. Plus performant que RSA à sécurité équivalente.
EV (Extended Validation)Certificat de signature de code délivré après vérification approfondie de l'identité de l'éditeur. Nécessaire en production pour que le driver Windows soit accepté par le système.

Windows et kernel

TermeDéfinition
Ring 0 / Ring 3Niveaux de privilège du processeur. Ring 0 = mode kernel (accès total au matériel). Ring 3 = mode utilisateur (accès restreint). Le driver tourne en Ring 0, l'agent en Ring 3.
WFP (Windows Filtering Platform)API Windows pour l'interception et le filtrage de paquets réseau au niveau kernel. Le driver s'enregistre comme « callout » WFP pour capturer le trafic.
WDM (Windows Driver Model)Modèle de pilote Windows. Le driver ExfilGuardian est un driver WDM de type callout.
WDK (Windows Driver Kit)Kit de développement Microsoft pour écrire des drivers Windows. Les crates Rust WDK fournissent des bindings sûrs vers ces APIs.
CalloutDans le contexte WFP, fonction enregistrée par un driver qui est appelée par le système à chaque paquet réseau correspondant à un filtre. C'est le mécanisme d'interception du driver.
IRP (I/O Request Packet)Structure kernel Windows qui représente une opération d'entrée/sortie. Le driver utilise un « IRP inversé » : l'agent soumet un IRP qui reste en attente jusqu'à ce qu'un paquet arrive.
IOCTL (Input/Output Control)Mécanisme de communication entre un programme utilisateur et un driver kernel via DeviceIoControl. L'agent envoie des IOCTLs au driver pour recevoir les paquets interceptés.
DKOM (Direct Kernel Object Manipulation)Technique qui modifie directement les structures internes du kernel en mémoire. Utilisée en développement pour positionner le bit Force Integrity sur le driver (nécessaire pour ObRegisterCallbacks sans signature EV).
ObRegisterCallbacksAPI kernel Windows qui permet d'intercepter les demandes d'ouverture de handle sur un processus. Utilisée pour empêcher la terminaison de l'agent (anti-kill).
CmRegisterCallbackExAPI kernel Windows qui intercepte les opérations sur le registre. Utilisée pour protéger les clés de configuration d'ExfilGuardian contre la modification.
NTSTATUSCode de retour standard des APIs kernel Windows. STATUS_SUCCESS (0) = succès, STATUS_ACCESS_DENIED = accès refusé.
SCM (Service Control Manager)Gestionnaire de services Windows. L'agent s'installe comme service Windows auto-start via sc.exe.
pnputilUtilitaire Windows pour installer des drivers. Utilisé lors du déploiement pour charger le driver .sys.
INFFichier d'installation d'un driver Windows. Décrit le matériel supporté, les fichiers à copier et les entrées registre à créer.
CAT (Catalog)Fichier de catalogue contenant les signatures cryptographiques des fichiers du driver. Vérifié par Windows lors du chargement.
PEM (Privacy Enhanced Mail)Format texte encodé en Base64 pour stocker des certificats et clés privées. Utilisé pour les certificats mTLS.

Détection et analyse

TermeDéfinition
Entropie (Shannon)Mesure mathématique du « désordre » ou de l'aléatoire dans une chaîne de caractères. Un nom de domaine normal a une faible entropie (google.com), un domaine DGA ou un tunnel DNS a une entropie élevée (x8k3mq9f2p.com).
BaselineModèle du comportement « normal » du réseau, construit pendant une période d'apprentissage (15 jours). Sert de référence pour détecter les anomalies.
Z-scoreNombre d'écarts-types entre une valeur observée et la moyenne. Un Z-score > 3 signifie que la valeur est très inhabituelle (moins de 0.3% de chances sous une distribution normale).
CUSUM (Cumulative Sum)Algorithme qui détecte les changements progressifs en accumulant les écarts à la moyenne. Complémentaire du Z-score qui ne détecte que les changements brusques.
EMA (Exponential Moving Average)Moyenne mobile qui donne plus de poids aux valeurs récentes. Utilisée pour lisser les variations de volume et détecter les tendances anormales.
Welford (algorithme de)Algorithme pour calculer la moyenne et la variance de manière incrémentale, sans stocker toutes les valeurs précédentes. Permet de maintenir une baseline avec une empreinte mémoire fixe.
Coefficient de variation (CV)Ratio écart-type / moyenne. Un CV faible (< 0.15) des intervalles de connexion indique un beaconing C2 (communications très régulières).
Scoring bayésienMéthode de combinaison de probabilités. La formule P(A∪B) = 1 - (1-P(A)) × (1-P(B)) permet de fusionner les confiances de plusieurs détecteurs indépendants en un score final.
Décroissance temporelleRéduction progressive du poids d'une détection dans le temps. Les détections anciennes contribuent moins au score de corrélation (demi-vie de 5 minutes).
CorrélationRegroupement de détections provenant de plusieurs couches (DPI, signatures, comportemental) sur une même cible pour produire un score de confiance consolidé.
Hot-reloadRechargement des règles de détection YAML sans redémarrer le serveur. Le système surveille le dossier de règles et applique les modifications en temps réel.
Flow / FluxAgrégation de tous les paquets partageant le même 5-tuple (IPs, ports, protocole) dans une fenêtre temporelle. L'unité d'analyse du pipeline.
KPI (Key Performance Indicator)Indicateur clé de performance. Sur le dashboard : paquets traités, menaces détectées, volume réseau, uptime.

Stack technique

TermeDéfinition
RustLangage de programmation système avec garanties de memory safety au compile-time (pas de buffer overflow, use-after-free, data race). Tout ExfilGuardian est écrit en Rust.
#![no_std]Mode Rust sans bibliothèque standard. Obligatoire pour le code kernel car la stdlib Rust dépend de l'OS (qui n'est pas disponible en Ring 0).
CargoGestionnaire de paquets et build system de Rust. Gère les dépendances, la compilation et les tests.
WorkspaceFonctionnalité Cargo qui permet de regrouper plusieurs crates (paquets Rust) dans un même dépôt avec des dépendances partagées.
CratePaquet Rust. Le projet contient 6 crates : analysis, agent, server, installer, certs + le driver (workspace séparé).
ClippyLinter officiel de Rust. Détecte les patterns de code problématiques ou non idiomatiques. Exécuté en CI avec -D warnings (zéro warning toléré).
TonicFramework gRPC pour Rust. Génère automatiquement le code client/serveur à partir du fichier .proto. Supporte le streaming et mTLS nativement.
AxumFramework web Rust pour les APIs HTTP/REST. Utilisé pour le serveur REST (dashboard, alertes, métriques, enrollment).
TokioRuntime asynchrone pour Rust. Gère l'exécution concurrente des tâches (gRPC + REST + analyse) sur un pool de threads.
SerdeFramework de sérialisation/désérialisation Rust. Convertit les structures Rust en JSON, YAML, etc. et inversement.
thiserrorCrate Rust pour définir des types d'erreurs typés dans les bibliothèques. Utilisé dans le crate analysis.
anyhowCrate Rust pour la gestion d'erreurs simplifiée dans les applications. Utilisé dans agent, server, installer.
rcgenCrate Rust pour générer des certificats X.509. Utilisé pour créer la CA et les certificats mTLS.
SQLiteBase de données embarquée (fichier unique). L'agent l'utilise en mode WAL comme file d'attente persistante.
WAL (Write-Ahead Logging)Mode de journalisation de SQLite qui permet des lectures et écritures simultanées. Garantit la durabilité des données même en cas de crash.
ElectronFramework pour créer des applications desktop avec des technologies web (HTML/CSS/JS). Embarque un navigateur Chromium et un runtime Node.js.
Next.jsFramework React pour le rendu côté serveur et le routage. Utilisé dans le shell Electron pour l'interface utilisateur.
ZustandBibliothèque de gestion d'état minimaliste pour React. Plus simple que Redux. Utilisée pour les stores client (métriques, menaces, capture, config).
TanStack QueryBibliothèque de gestion d'état serveur pour React. Gère le cache, la revalidation et la synchronisation des données API.
BiomeLinter et formatteur de code TypeScript/JavaScript. Remplace ESLint + Prettier en un seul outil.
NxOutil d'orchestration de monorepo. Gère les dépendances entre projets, le cache de build et l'exécution parallèle des tâches.
FumadocsFramework de documentation basé sur Next.js. Utilisé pour le site de documentation du projet.
CI/CD (Continuous Integration / Continuous Deployment)Pipeline automatisé qui vérifie le code à chaque push : formatage, linting, tests, build. Implémenté via GitHub Actions.

Abréviations du projet

TermeDéfinition
exfil-analysisCrate bibliothèque contenant tout le moteur de détection : DPI, signatures, comportemental, corrélation. Compile sur toutes les plateformes.
exfil-agentCrate binaire pour le service Windows. Reçoit les paquets du driver et les transmet au serveur.
exfil-serverCrate binaire pour le serveur central. Double serveur gRPC (ingestion) + REST (dashboard).
exfil-installerCrate binaire pour l'installeur Windows. Configure le registre et crée les services.
exfil-certs-genCrate binaire pour la génération de certificats mTLS (CA, serveur, agent).
NetworkPacketMessage Protobuf envoyé par l'agent au serveur. Contient : protocole, IPs, ports, timestamp, payload, token d'authentification.
FlowRecordStructure Rust qui agrège les paquets d'une même connexion (5-tuple). Unité d'entrée du pipeline d'analyse côté serveur.
DetectionRésultat individuel produit par un analyseur (DPI, signature ou comportemental). Contient la catégorie, la confiance et la sévérité.
AlertAlerte finale produite par la couche de corrélation. Regroupe plusieurs détections avec un score de confiance bayésien combiné.
ServerPipelineStructure Rust côté serveur qui orchestre le pipeline complet : réception du paquet, conversion, analyse DPI/signatures/comportemental, corrélation, émission d'alertes.

On this page