Nouveaux tableaux de bord OCTI : le premier moteur de tableaux de bord graphique pour le modèle STIX
Lorsque nous avons commencé à travailler sur les indicateurs clés de performance (KPI), la modélisation des tendances et la représentation graphique des connaissances en matière de Cyber Threat Intelligence ainsi que des données opérationnelles stockées dans la plateforme, la plupart des gens pensaient qu'il était plus facile d'intégrer quelque chose qui existe déjà dans la stack technologique comme Kibana, OpenSearch dashboards ou Grafana. Mais la vérité est qu'aucun des systèmes existants n'est capable de générer des requêtes qui parcourent le graphe de connaissances et d'aider la communauté OpenCTI avec des cas d'usage attendus depuis longtemps.

Dans la branche OpenCTI 5.5, nous avons introduit un tout nouveau moteur de tableaux de bord mais cette première version peut être difficile à appréhender pour les analystes ou les parties prenantes qui ne sont pas familiers (ou même experts 😊) avec le modèle STIX. Si l'expérience utilisateur de création de widgets sera améliorée dans les prochaines versions, la logique sous-jacente restera la même et cet article vise à l'expliquer et à illustrer la puissance de cette implémentation en répondant à plusieurs questions, des plus basiques aux plus complexes.
Nouveau workflow de création de widget
Tout d'abord, lors de la création d'un nouveau widget, le workflow est désormais le suivant :

Workflow de la création de widget de tableau de bord
Selon la sélection, la configuration du widget peut changer ainsi que le nombre de jeux de données à afficher. Dans le nouveau moteur, le nombre de types de visualisation disponibles a été largement augmenté :

Types de visualisation disponibles
Pour la sélection de perspective, pensez graphe de connaissances
Après avoir sélectionné le type de visualisation, généralement deux perspectives sont disponibles pour les données à afficher : "Entités" ou "Graphe de connaissances". Pour choisir quel type de perspective doit être utilisé, la question à se poser est simplement : "Ai-je besoin de parcourir des relations pour calculer le jeu de données à afficher ou non ?".
En d'autres termes, si vous souhaitez afficher un sous-ensemble d'entités avec des filtres comme les labels, les auteurs, les marquages, etc., vous avez seulement besoin de la perspective "Entités", mais si vous devez prendre en compte la victimologie (targets), l'attribution (attributed-to), l'utilisation (uses) ou toute autre relation, la perspective sera "Graphe de connaissances".

Sélection de perspective
Afficher des listes d'entités ou des séries temporelles : barres verticales, lignes, chronologie, nombre, etc.
Les premiers exemples de cas d'usage sont assez simples et concernent l'affichage de nombres, de listes ou de graphiques (séries temporelles) en utilisant un sous-ensemble d'entités (perspective "Entités"). Selon le type de visualisation, vous pouvez sélectionner un seul jeu de données ou plusieurs sous-ensembles de données.
Par exemple, si le type de visualisation sélectionné est "Liste", "Nombre" ou "Chronologie", vous ne pouvez sélectionner qu'un seul sous-ensemble de données :

Liste ou nombre de rapports avec TLP:AMBER
Si le type de visualisation "Barre verticale" ou "Ligne" est sélectionné, il est possible d'afficher plus d'un sous-ensemble (plusieurs barres, plusieurs lignes, etc.) :

Graphiques en ligne ou en barres avec plusieurs sous-ensembles de données
Dans le dernier exemple, en utilisant les paramètres par défaut, le graphique généré ressemble à :

Barres verticales avec plusieurs sous-ensembles de données
Dans la dernière étape de la configuration du widget, il est possible d'ajuster les paramètres d'affichage tels que l'intervalle (jour, semaine, mois, etc.), la légende, si le graphique est empilé ou non et également le champ "temps" utilisé pour calculer les séries temporelles (created, created_at, updated, updated_at, etc.) pour chaque sous-ensemble de connaissances.

Par exemple, avec l'intervalle "Mois" et "Graphique empilé" :

Avec la perspective "Entités" et les types de visualisation disponibles pour les listes, nombres ou séries temporelles, il est possible de répondre à des questions telles que :
- Combien d'indicateurs ou de rapports TLP:RED sont ingérés chaque semaine ?
- Quel est le nombre actuel de vulnérabilités avec un label spécifique dans la plateforme ?
- Quelles sont les dernières campagnes avec un label spécifique (sous forme de chronologie) ?
- Combien de rapports contenant un secteur donné ont été ingérés au cours des 12 derniers mois ?
Afficher la distribution des entités : barres horizontales, graphiques circulaires, etc.
Lors de la sélection d'une visualisation qui mène à une distribution de données comme les radars, les graphiques circulaires ou les donuts, vous devrez sélectionner quel est le champ utilisé pour calculer l'agrégation comme un type, un auteur, un marquage, etc.

Sélectionner le champ d'agrégation
Par exemple, après avoir sélectionné une visualisation de type "Barre horizontale" avec une configuration simple comme :

Afficher tous les rapports
Et en sélectionnant le champ "created-by.internal_id" (c'est-à-dire "l'auteur du rapport") :

Distribution par auteur
Le résultat sera :

Distribution des rapports par auteur
Avec la perspective "Entités" et les types de visualisation disponibles pour la distribution et l'agrégation, il est possible de répondre à des questions comme :
- Quelle est la distribution des auteurs pour les rapports avec un label spécifique ?
- Quels sont les 10 principaux types d'indicateurs dans la plateforme au cours des 3 derniers mois ?
- Quels sont les principaux types de malware avec un marquage donné ?
Mais afficher ou représenter graphiquement uniquement des "entités" est limité lorsqu'il s'agit de pouvoir calculer des jeux de données basés sur l'activité tels que les tendances liées à des secteurs, pays, types de menaces spécifiques, etc. C'est pourquoi, dans la plupart des cas, les analystes et les parties prenantes doivent parcourir le graphe pour couvrir des questions telles que :
- Quelles sont les principales familles de ransomware qui ont été signalées sur une période de temps particulière et quelles sont les régions / secteurs / pays impactés ?
- En utilisant la matrice MITRE ATT&CK, quelles sont les X principales techniques d'accès initial utilisées par les attaquants ?
- Quels sont les 10 principaux types d'acteurs de menace signalés sur une période de temps particulière ?
- Quelles sont les familles de malware les plus courantes dans les incidents signalés sur une période de temps particulière et les régions / secteurs / pays associés ?
Afficher des listes ou des séries temporelles du graphe de connaissances : barres verticales, lignes, chronologie, nombre, etc.
Lorsqu'il est nécessaire de parcourir le graphe de connaissances, cela signifie généralement que vous souhaitez compter des relations ou encore mieux, calculer une distribution basée sur des filtres de relations. Prenons quelques exemples ici.
Le premier est simple, nous souhaitons simplement construire une heatmap de toutes les relations "targets" vers la région Europe. Nous devons prendre en considération la nature des relations ainsi que la direction (pour savoir si l'entité concernée est la source ou la cible).

Représentation STIX de la victimologie
En termes de filtrage, cela signifie :

Filtrage de toutes les menaces ciblant l'Europe
Le résultat de la heatmap apparaîtra comme :

Cibles en Europe au cours des 6 derniers mois
Le type de visualisation "Heatmap" supporte plusieurs jeux de données, il est donc possible de l'étendre aux cibles des Amériques :

Sélection de données des cibles en Europe et aux Amériques
Et le résultat sera le suivant :

Cibles en Europe et aux Amériques au cours des 6 derniers mois
Prenons un autre exemple, si nous souhaitons afficher le nombre d'indicateurs au fil du temps pour des menaces spécifiques. Nous choisirons ici le graphique en barres verticales pour afficher le nombre d'indicateurs liés à Turla, APT28, APT41 et Kimsuki. Pour rappel, la relation entre les indicateurs et les menaces est sous la forme "Indicateur" → indicates → "Menace".

Sélection de données pour les indicateurs liés à des menaces spécifiques
Ensuite, le résultat de la visualisation sera :

Indicateurs pour des menaces spécifiques au fil du temps
Mais à ce stade, la plupart des analystes souhaiteraient afficher un graphique non pas pour une liste définie de menaces mais pour une liste dynamique. Cela signifie que "l'entité cible" est définie avec des filtres et n'est pas une entité particulière. C'est pourquoi OpenCTI 5.5 a introduit un nouveau concept appelé "source dynamique" ou "cible dynamique" lors du listage / comptage des relations.
Disons que nous souhaitons afficher graphiquement les indicateurs pour tous les malware avec le label spécifique "ransomware".

Calcul dynamique de la cible des relations
Dans la configuration du tableau de bord, cela signifie pouvoir filtrer sur la "cible" des relations :

Indicateurs vers Malware avec le label "ransomware"
Résultat dans un graphique en aires :

Tendances pour les indicateurs vers Malware avec le label "ransomware"
Les sources / cibles dynamiques de relations associées à tous les filtres disponibles pour les relations elles-mêmes constituent une fonctionnalité très puissante qui permet presque tous les types de visualisation de jeux de données pour les séries temporelles, les listes et les nombres.
Avec la perspective "Graphe de connaissances" et les types de visualisation disponibles pour les listes, nombres ou séries temporelles, il est possible de répondre à des questions comme :
- Combien d'indicateurs liés à des menaces spécifiques ou à un sous-ensemble de menaces ont été ingérés au cours des 12 derniers mois ?
- Combien d'incidents de ransomware (incidents uses un malware de type ransomware) se sont produits chaque mois ?
- Quelles sont les dernières vulnérabilités ciblées par un sous-ensemble d'acteurs de menace ? (sous forme de chronologie) ?
Afficher la distribution du graphe de connaissances : barres horizontales, graphiques circulaires, etc.
Enfin, tous les types de visualisation de distribution et d'agrégation sont disponibles pour les perspectives de graphe de connaissances. Prenons un autre exemple pour afficher le top 10 des malware ciblant les États-Unis d'Amérique. Tout d'abord, nous devons sélectionner une visualisation de distribution telle que Barre horizontale, puis ajuster les filtres :

Filtres pour afficher le top des malware ciblant les USA
Ensuite, dans les paramètres de la distribution des relations, il est possible d'afficher soit le type d'entité, soit l'entité elle-même (c'est-à-dire le "nom / valeur"), dans ce cas, nous avons besoin du nom réel de tous les malware ciblant les USA. De plus, comme la relation est "Malware → targets → USA", nous devons cocher "Afficher la source" car le Malware est la source de la relation.

Afficher l'entité (c'est-à-dire le malware), source des relations "targets"
Cela conduit au graphique ci-dessous :

Top des malware ciblant les USA
Pour poursuivre sur ce cas d'usage et comprendre toutes les options disponibles ici, supprimons le filtre "Entité cible = USA". Donc, nous souhaitons simplement afficher la distribution des relations avec une entité source de type "Malware", représentant ainsi graphiquement le top des malware, sans aucun pays ou secteur ciblé spécifique :

Top des malware basé sur le nombre de relations "target"
Cela affiche maintenant le top des malware quelle que soit la victime :

Top mondial des malware
Mais que se passe-t-il si nous basculons simplement le paramètre "Afficher la source" pour afficher la "Cible" (et non la "Source") des relations avec les mêmes paramètres ?

Top des victimes (affichage de la cible et non de la source)
Cela affichera le top des "victimes" (secteurs, pays, régions, etc.) ciblées par des malware :

Top des victimes ciblées par des malware
Il est également possible de cibler un malware ou un ensemble d'intrusion spécifique pour obtenir le top des victimes ciblées par Emotet ou le ransomware Play par exemple. Juste à titre d'information, les sources et cibles dynamiques sont également disponibles ici afin de pouvoir traiter des cas d'usage tels que :
- Quels sont les principaux secteurs ciblés par des ensembles d'intrusion avec des labels spécifiques ?
- Quelle est la distribution des types d'indicateurs (STIX, règles YARA, règles SNORT, règles Suricata, etc.) pour les malware de type "ransomware" ?
- Quelles sont les menaces les plus actives attribuées à la Russie au cours des 3 derniers mois sur la base des indicateurs ou du ciblage ?
Enfin, certains types de visualisation comme les barres horizontales prennent en charge la ventilation au sein de l'agrégation. Cela signifie qu'OpenCTI permet aux utilisateurs de recalculer un sous-ensemble des données en fonction de l'entité dans la barre. Voici un exemple du top des pays ciblés et une ventilation par type de malware :

Jeux de données pour afficher le top des pays ciblés par des malware puis ventilation par type
Ensuite, sélectionnez simplement le champ approprié pour la deuxième dimension de distribution :

Afficher la "cible" (c'est-à-dire les pays) puis ventiler par type dans les barres
Cela donnera :

Top des pays ciblés par des malware avec distribution des types de malware
La capacité de ventilation peut être décrite comme un recalcul basé sur l'entité retournée dans la barre, et peut être une requête complexe à travers les relations si nécessaire. Pour être précis, lorsque "Emotet" est retourné dans la barre, il sera utilisé comme source ou cible de la sous-requête directement.

Sous-requête pour agrégation
Dans la plateforme, vous pouvez choisir si vous souhaitez effectuer une sous-requête avec une perspective "Entités" ou "Relations" (c'est-à-dire Graphe de connaissances).

Ventilation utilisant le re-filtrage des entités ou des relations
Pour terminer cet article et mieux comprendre les capacités de ventilation, prenons un autre exemple : agréger les principaux secteurs puis ventiler par motivation des ensembles d'intrusion.

Top des secteurs ciblés par des ensembles d'intrusion puis ventilation par motivation de l'ensemble d'intrusion.
Avec les paramètres suivants, affichant "Motivation principale" :

Affichage du top des secteurs avec une ventilation par motivation principale des ensembles d'intrusion
Le résultat est donc :

Top des secteurs ciblés par des ensembles d'intrusion avec une ventilation par motivation
Conclusion
Comme mentionné précédemment, l'expérience utilisateur de configuration des widgets sera améliorée dans les prochaines versions. De plus, cet article ne couvre qu'une partie du nouveau moteur de tableaux de bord (ne couvrant pas les chronologies, listes, radars de TTPs, etc.) qui est suffisamment puissant pour répondre aux besoins de la plupart des organisations en termes de KPI et de tendances autour des données dans la plateforme.
Si vous avez encore des questions et souhaitez demander le chemin exact pour pouvoir réaliser un cas d'usage spécifique, n'hésitez pas à rejoindre la communauté Filigran et à le demander !
Lire la suite
Explorez des sujets et analyses associés
Votre SOC n'a pas de problème de données. Il a un problème de coordination.

Workflows d'approbation de l'intelligence : garantir la qualité des données et rationaliser les processus
