97 % des équipes de sécurité ignorent si leurs expositions sont exploitables. En faites-vous partie ?Lire le rapport
Filigran
Développement logicielRenseignement sur les menaces

Nouveaux tableaux de bord OCTI : le premier moteur de tableaux de bord graphique pour le modèle STIX

12 min de lecture
New OCTI dashboards: the first graph dashboarding engine for the STIX model

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.

image 9

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 :

image 37

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é :

image 14

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".

image 13

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 :

image 5

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.) :

image 11

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 à :

image 28

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.

image 35

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

image 25

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.

image 30

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 :

image 7

Afficher tous les rapports

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

image

Distribution par auteur

Le résultat sera :

image 12

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).

image 18

Représentation STIX de la victimologie

En termes de filtrage, cela signifie :

image 23

Filtrage de toutes les menaces ciblant l'Europe

Le résultat de la heatmap apparaîtra comme :

image 3

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 :

image 15

Sélection de données des cibles en Europe et aux Amériques

Et le résultat sera le suivant :

image 6

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".

image 17

Sélection de données pour les indicateurs liés à des menaces spécifiques

Ensuite, le résultat de la visualisation sera :

image 33

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".

image 20

Calcul dynamique de la cible des relations

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

image 19

Indicateurs vers Malware avec le label "ransomware"

Résultat dans un graphique en aires :

image 16

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 :

image 26

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.

image 29

Afficher l'entité (c'est-à-dire le malware), source des relations "targets"

Cela conduit au graphique ci-dessous :

image 34

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 :

image 27

Top des malware basé sur le nombre de relations "target"

Cela affiche maintenant le top des malware quelle que soit la victime :

image 22

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 ?

image 10

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 :

image 31

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 :

image 21

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 :

image 24

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

Cela donnera :

image 4

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.

image 8

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).

image 2

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.

image 36

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" :

image 32

Affichage du top des secteurs avec une ventilation par motivation principale des ensembles d'intrusion

Le résultat est donc :

image 1

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