MS MarlinSpike Passive OT/ICS Topology Workbench
GrassMarlin modernisé · Open-source · v3.5.0

Atelier de topologie OT/ICS passif

Fournissez du pcap ou du pcapng, maintenez la transmission de paquets à zéro, et examinez la topologie, le contexte d'actifs, les chemins inter-niveaux Purdue, les communications externes suspectes et les rapports JSON portables — avec l'équipe.

Collecte
Passive
Zéro transmission
Déploiement
Docker
1 cœur / 1 Go RAM
Artefact
JSON portable
Contrat moteur ↔ atelier
Modèle équipe
Atelier partagé
Multi-utilisateurs, URL partagée
Dernière version · v3.5.0

Atelier centré sur la carte, graphe relationnel multi-lentilles.

Un canevas de carte persistant avec une barre de lentilles en haut, un inspecteur ancrable à droite, et un tiroir coulissant avec sept onglets de tableaux en bas. Six lentilles re-rendent la carte : Comms, Constats, IOC, ATT&CK, Baseline et Pairs — toutes dérivées d'une seule taxonomie 12 entités / 12 relations.

Mode HP-HMIExtraction sous-PCAPContexte d'actifsChasse IOCMatrice ATT&CKEN / FR
Atelier MarlinSpike centré sur la carte
Principes de conception

Ce que MarlinSpike garantit.

Six principes non négociables issus des réalités de l'analyse OT/ICS passive sur de vrais hôtes d'engagement. Ils façonnent chaque version.

01

Analyse passive uniquement

MarlinSpike ingère des captures de paquets et ne renvoie rien dans l'environnement. Zéro transmission est la règle de base, pas une option de configuration.
PRINCIPLE.01.2026
02

Natif OT, non adapté

Conçu de zéro pour OT/ICS — Modbus, S7, DNP3, IEC 60870-5-104, CIP, MMS, GOOSE, BACnet, OPC UA, PROFINET. Inférence Purdue et empreintes fournisseurs en première classe.
PRINCIPLE.02.2026
03

Atelier partagé, pas mono-utilisateur

Projets, scans, contexte d'actifs, listes IOC et constats voyagent avec l'équipe. Conçu pour les engagements où quatre personnes ouvrent la même URL.
PRINCIPLE.03.2026
04

Le rapport est le contrat

Chaque analyse émet un artefact de rapport JSON portable. Le moteur et l'atelier sont découplés à cette frontière, de sorte que les rapports survivent à l'outil qui les a produits.
PRINCIPLE.04.2026
05

Empreinte déployable sur le terrain

Docker Compose avec proxy inverse, 1 cœur / 1 Go RAM minimum, tourne sur un hôte d'engagement temporaire. JavaScript côté client non requis pour le flux de triage principal.
PRINCIPLE.05.2026
06

Bilingue par défaut

Chaque écran — y compris les catégories de constats, descriptions et remédiations émises par le moteur — bascule entre English et Français. Sélecteur de langue dans la nav, persiste en session.
PRINCIPLE.06.2026
Ce que les équipes font concrètement avec

Trois missions pour lesquelles MarlinSpike a été conçu.

Reconstruction de topologie, triage pour intervenant, et baselines d'actifs longitudinales — dans un seul atelier partagé, alimenté par des captures passives.

Reconstruction de topologie

Captures en entrée, graphe en sortie. Inférence de niveau Purdue, empreintes fournisseurs, indices de rôle, découverte de chemins inter-zones et énumération de chemins en écriture — uniquement depuis le trafic passif.

Triage pour intervenant

Constats classés par sévérité contextuelle, superposition ATT&CK (ICS + Enterprise), chasse IOC sur tous les rapports d'un projet, histogrammes d'anomalies pour les balises C2 / entropie DNS / OPC non sécurisé.

Baselines longitudinales

Cartes de nouveauté par actif, diff de baseline au niveau projet entre captures, dédupliquation sur clé MAC et repli IP. La dérive remonte avant que quelqu'un ait à s'en souvenir.

L'essentiel à comprendre

MarlinSpike n'est pas un analyseur desktop. C'est un atelier temporaire sur site pour les engagements OT — déposez-le sur un hôte d'engagement, partagez l'URL, triez ensemble, transmettez le rapport JSON.

La boucle intervenant, bouclée

Quatre surfaces qui transforment l'atelier a trouvé quelque chose en quelque chose d'actionnable.

La ligne v3.x est conçue pour combler l'écart entre l'analyse et l'action. Chaque version ajoute un nouveau maillon dans la boucle repéré→ouvert.

Défilement temporel + extraction sous-PCAP

L'étape la plus coûteuse de la boucle analyste était la re-découpe manuelle des captures. La frise temporelle + la colonne Extraire la font tenir en un seul geste dans l'atelier.
  • Histogramme adaptatif de débit de paquets sous la barre d'outils de l'atelier
  • Glissez une fenêtre temporelle — chaque volet de conversation filtre en direct sur cette plage
  • Le bouton Extraire par ligne appelle tshark + editcap et télécharge le pcap
  • De repère à ouvert dans Wireshark en deux clics
Volet Statistiques de trafic avec l'histogramme adaptatif de débit et la colonne Extraire par ligne

Contexte d'actifs et sévérité contextuelle

La sévérité est sans sens sans contexte. Le contexte d'actifs monte les constats d'un niveau quand un actif affecté est étiqueté critique et les descend d'un niveau quand tous les actifs affectés sont étiquetés faible.
  • Étiquetez chaque actif avec propriétaire, criticité, zone, fonction métier, notes en texte libre
  • Scope par projet, clé MAC en priorité / repli IP
  • MEDIUM sur un contrôleur de sécurité peut dépasser CRITICAL sur un serveur d'impression
  • Notes par constat (statut + corps) voyagent avec le projet entre les rapports
Éditeur de contexte d'actif montrant criticité, propriétaire, zone, fonction métier et notes

Chasse IOC sur tous les rapports

La page /iocs est un flux coller-et-balayer. L'import STIX / MISP est sur la feuille de route ; le MVP liste-collée est en ligne.
  • Import en masse par collage avec auto-détection IPv4/v6, MAC, OUI, sha256, md5, domaines
  • Balayage des rapports du projet : parcourt chaque rapport — nœuds, conversations, c2, DNS, constats malware
  • Récapitulatifs de sévérité par IOC et localisations de correspondances par rapport
  • Listes scopées par projet, persistées entre les exécutions
Page de gestion IOC avec import en masse par collage et tableau de correspondances par rapport

Matrice ATT&CK en direct depuis les observations passives

La lentille ATT&CK est une projection directe des classifications propres au moteur, pas une superposition marketing. Si le moteur a émis T1040, la lentille affiche T1040.
  • Grille de techniques groupées par tactique (domaines ICS + Enterprise)
  • Alimentée par la sortie du plugin marlinspike-mitre, pas curée manuellement
  • Sous-techniques, mesures d'atténuation et recommandations de réponse par constat
  • Cliquez sur une technique : pivotez vers les constats qui l'ont déclenchée
EN · FR · ··· à venir

Atelier bilingue, d'autres langues à venir

Bilingue EN / FR livré aujourd'hui sur toutes les surfaces de l'atelier. L'architecture i18n est construite pour que les locales supplémentaires soient un ajout de contenu, pas un projet d'ingénierie.
  • Chaque écran bascule entre English et Français — y compris les catégories de constats, descriptions et remédiations émises par le moteur
  • Sélecteur de langue dans la nav, persiste en session, avec repli Accept-Language
  • Couche i18n JSON-dictionnaire maison — sans nouvelle dépendance pip
  • Langues supplémentaires prévues ; la structure du dictionnaire rend les nouvelles langues additives, pas un refactor
Atelier MarlinSpike affiché en anglais — preuve de la capacité bilingue EN/FR
Pour qui

Conçu pour ceux qui font vraiment le triage.

MarlinSpike est le noyau open-source derrière Fathom. Il existe pour être utile aux intervenants OT/ICS en activité, pas seulement aux programmeurs systèmes.

Aux intervenants

Déposez-le sur l'hôte d'engagement, donnez à l'équipe une URL partagée, travaillez le même projet ensemble. L'artefact de rapport survit à l'hôte.

Aux ingénieurs OT

Passif uniquement. Pas de scans actifs, pas d'agents, pas de risque en salle de contrôle. Montages en lecture seule des captures tournantes. Mode HP-HMI pour l'affichage mural en salle de contrôle.

Aux intégrateurs

pip install marlinspike expose create_app et db. Trois surfaces d'extension formelles : moteurs Rust, plugins Python, packs de règles YAML.
La voie à suivre

Commencez par le wiki, déployez une stack Docker, partagez une URL.

Pas de danse de licence, pas d'appel d'intégration fournisseur. Cinq minutes de git clone à un atelier fonctionnel sur 127.0.0.1:5001.