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

Présentation des possibilités de filtrage avancé dans OpenCTI

6 min de lecture
Introducing advanced filtering possibilities in OpenCTI

Les bases de données CTI sont généralement vastes et composées d'objets complexes et interdépendants ingérés à partir de diverses sources. Dans ce contexte difficile, les analystes cyber doivent cibler de manière précise et facile les données qu'ils souhaitent. Ainsi, les capacités de filtrage sont au cœur de tout outil CTI efficace. OpenCTI offre des fonctionnalités puissantes autour de l'exploration de données, l'investigation et le pivotement, mais ses capacités de filtrage étaient limitées, et des efforts importants ont été nécessaires pour les faire passer au niveau supérieur.


À partir d'OpenCTI 5.12, vous êtes désormais capable de construire des filtres complexes, avec l'introduction de nouveaux opérateurs (comme 'n'est pas vide' ou 'commence par'), la possibilité de basculer entre les modes booléens (et, ou), et bientôt la capacité d'imbriquer des filtres sur presque tous les attributs existants.

image 5

Liste de rapports dans OpenCTI avec quelques filtres appliqués

image 6

Exemple de combinaison de filtres pouvant être réalisée depuis OpenCTI 5.12

Une amélioration nécessaire

Avant OpenCTI 5.12, les capacités de filtrage étaient restreintes.

  • vous ne pouviez ajouter des filtres que sur une liste fixe d'attributs d'entités (comme leur auteur ou leur nom)
  • les modes entre les valeurs ou les filtres étaient statiques ('et' entre les filtres, 'ou' entre les valeurs d'un même filtre)
  • les opérateurs disponibles étaient limités aux tests d'égalité et aux comparaisons numériques
image

Exemple de filtres qui pouvaient être réalisés avant OpenCTI 5.12.

En raison de ces limitations, les filtres suivants étaient tout simplement impossibles à exprimer :

  • (Type de rapport = Rapport de menace) OU (Label = Malware)
  • (Type d'entité = Rapport) ET (Marking est vide)
  • Le nom contient 'blackmail'
  • 'Participants' est vide

De plus, certains filtres étaient interdépendants mais l'interface et le format ne montraient pas clairement cette dépendance. C'était le cas pour certaines combinaisons de filtres de widgets (type de relation et entité liée).

Enfin, l'implémentation sous-jacente ne laissait pas suffisamment de marge d'amélioration. Pas à l'échelle où nous souhaitions voir cette fonctionnalité évoluer.

Les nouvelles possibilités de filtrage dans OpenCTI 5.12

Basculement des modes et/ou

Les modes sont les liens logiques appliqués entre les filtres et les valeurs. L'utilisation de 'et' signifie qu'un objet doit correspondre à toutes les valeurs définies dans le filtre pour correspondre au filtre entier. Avec 'ou', une seule valeur est nécessaire.

image 4

Exemple d'un filtre avec le mode 'ou' entre les valeurs

Si plus d'un filtre est défini, un mode doit également être appliqué entre les filtres : avec 'et', seuls les objets qui correspondent à tous les filtres seront retournés, avec 'ou', les objets correspondant à au moins un filtre seront retournés.

Dans OpenCTI 5.12, vous pouvez désormais changer tous les modes (et/ou) en cliquant directement dessus. Cela permet de combiner les filtres de différentes manières.

image 2
image 9

Exemple de filtre avant et après avoir basculé tous les modes

Plus d'opérateurs

Les opérateurs sont définis dans chaque filtre et représentent la manière dont les valeurs dans les objets sont comparées aux valeurs du filtre (par exemple, les valeurs doivent être 'supérieures' à la valeur du filtre).

OpenCTI 5.12 vous donne accès à davantage d'opérateurs. Par exemple, vous pouvez vérifier si un attribut a une valeur ou non, tester si une chaîne commence par un mot donné ou contient une certaine phrase.

Les opérateurs disponibles sont désormais :

  • pour tout attribut : égal, non égal, vide, non vide,
  • pour les dates et valeurs numériques : supérieur à, supérieur ou égal à, inférieur à, inférieur ou égal à,
  • pour les chaînes : contient, ne contient pas, commence par, ne commence pas par, se termine par, ne se termine pas par.
image 1

Exemple de filtres avec différents opérateurs

Filtres interdépendants

L'interface a été conçue pour permettre l'affichage et la sélection de filtres interdépendants, tels que le nouveau filtre 'en ce qui concerne' qui cible toutes les entités ayant une relation d'un certain type et avec une certaine entité.

image 7

Boîte d'édition pour le filtre 'En ce qui concerne'

Par exemple, 'en ce qui concerne le type de relation = situé-à, avec l'entité = France', retourne toutes les entités situées en France. Consultez la documentation pour plus d'informations sur ce nouveau filtre.

image 3

Exemple d'un filtre 'En ce qui concerne'

Pour toute information complémentaire et plus de détails, veuillez consulter la documentation : Filters knowledge — OpenCTI Documentation.

Prochaines étapes

Nous continuerons à améliorer les possibilités de filtrage dans les mois à venir, avec des fonctionnalités importantes et attendues depuis longtemps.

Filtrer les listes sur n'importe quel attribut dans l'interface

Dans l'API 5.12, vous pouvez filtrer la liste des entités sur n'importe quel attribut que vous souhaitez s'il existe dans la plateforme : la liste des champs disponibles sur lesquels vous pouvez filtrer n'est plus restreinte. Par exemple, si une entité a un champ modified_date il est maintenant possible de créer un filtre sur cette date.

Cette fonctionnalité sera ajoutée dans l'interface utilisateur de la plateforme dans une prochaine version.

Notez que cela ne concerne que le filtrage des listes. Les filtres que vous pouvez choisir dans les flux, déclencheurs, feeds, collections taxii et playbooks sont restreints.

Imbrication de filtres complexes dans l'interface

Il sera également possible d'imbriquer des filtres à différents niveaux et de créer des schémas de filtrage vraiment complexes directement dans l'interface utilisateur.

image 10

Format des filtres et imbrications possibles dans OpenCTI avant et après 5.12

Aperçus techniques

Pour ceux qui sont intéressés par la façon dont nous avons effectué le travail du côté technique, voici quelques détails.

Un nouveau format récursif

L'ancien format était une simple liste de filtres avec une clé (comme 'Type d'entité') et une ou plusieurs valeurs (comme 'Rapport' ou 'Malware'). Les modes étaient implicites : 'ou' entre les filtres et 'et' entre les valeurs d'un filtre donné.

Dans le nouveau format, les filtres sont structurés en groupes de filtres récursifs, chaque groupe contenant des filtres ou des groupes de filtres imbriqués. Les modes booléens et les opérateurs sont explicitement définis dans les filtres et les groupes et peuvent varier, permettant n'importe quelle combinaison.

image 8

Exemple d'une requête avec des filtres imbriqués

Un nouveau moteur logique

Le nouveau format de filtre ouvre beaucoup de possibilités et de combinaisons que nous traitons dans un moteur logique générique. Il peut créer des requêtes elastic à la volée, ou tester les filtres directement contre les objets Stix dans le flux d'événements OpenCTI.

Breaking changes dans l'API

Comme vous pouviez vous y attendre, ces changements n'étaient pas légers. Les filtres sont partout dans OpenCTI, des tableaux de bord et vues de connaissances aux flux Taxii et déclencheurs de notification.

Nous avons mis à jour l'API pour utiliser ce nouveau format, ce qui a naturellement impacté le client python OpenCTI et les différents connecteurs.

Par extension, ces breaking changes impactent également tous les scripts ou codes que vous auriez pu écrire pour travailler avec OpenCTI. Le processus de migration pour 5.12 est documenté et simple.

Un effort continu

OpenCTI 5.12 apporte des améliorations significatives en termes de filtrage de données, avec un tout nouveau format de filtre qui est polyvalent et puissant, à la fois pour les activités quotidiennes et les tâches complexes.

Vous pouvez vous attendre à de nombreuses améliorations dans les prochaines versions car nous maintenons notre effort sur les capacités de filtrage dans OpenCTI !

Nous espérons que cet article vous a aidé à comprendre comment tirer le meilleur parti du nouveau filtrage avancé d'OpenCTI. Si vous avez des questions, commentaires ou retours, n'hésitez pas à nous rejoindre sur Slack !

Lire la suite

Explorez des sujets et analyses associés