Intégrer la CTI à QRadar #1 – Présentation du projet
Bonjour à tous, nous voici dans une nouvelle série d’articles axée autour de la Cyber Threat Intelligence (CTI) ainsi que de son intégration dans QRadar.
La CTI est une partie très importante dans la sécurité informatique pour se prémunir au mieux des menaces pouvant exister. Sans rentrer dans les détails de cette discipline, voici une brève explication de ce domaine.
La CTI est une technique basée sur le renseignement et l’agrégation d’informations pour connaître au mieux les techniques mais également les IoC (Indice of Compromission) des attaquants. Ces données sont récupérées de diverses manières, après des incidents, après des attaques bloquées…
La finalité est ainsi de pouvoir contrer au mieux les futures attaques en connaissant les traces laissées par ces derniers sur d’autres systèmes de surveillance.
2. Présentation de la solution technique
L’objectif ici est d’intégrer cette technique dans notre supervision QRadar. L’une des pistes possibles, et que nous allons mettre en place, est d’avoir un référentiel contenant la liste des IPv4 catégorisées comme malveillantes avec un score de confiance associé à chacune de ces IPv4.
Ensuite, nous aurons des règles de détection se basant sur ce référentiel, ce qui va nous permettre de détecter d’éventuelles connexions à des IP malveillantes. Nous pourrons également voir si ces IP essaient d’atteindre notre SI.
Avant d’avancer plus en profondeur sur les détails techniques du projet, vous vous demandez certainement : "Comment allons-nous récupérer ces informations ?"
Si vous avez lu sommaire vous avez déjà la réponse, sinon la voici : OpenCTI. Sans expliquer toutes les arcanes de cet outil, voici en une phrase ce qu’est OpenCTI :
Le projet OpenCTI (Open Cyber Threat Intelligence), développé par l’ANSSI en partenariat avec le CERT-EU, est un outil de gestion et de partage de la connaissance en matière d’analyse de la cybermenace (Threat Intelligence).
ANSSI (Agence nationale de la sécurité des systèmes d’information)
Nous allons donc utiliser cet outil OpenSource pour récupérer toutes ces informations sur les menaces actuelles.
3. Présentation des prérequis techniques
Pour mettre en place cette solution, nous allons avoir besoin de plusieurs prérequis sur plusieurs outils.
Premièrement côté QRadar, il va nous falloir les éléments suivants :
- Un référentiel
- Un token
Ensuite, concernant OpenCTI nous aurons besoin de :
- Un accès à l’application que ce soit sur l’instance de démo (https://demo.opencti.io/), ce qui nécessite un compte ou via une instance mise en place en interne chez vous
- Un token
Enfin, pour coordonner toutes les actions nous allons créer un script pour lequel nous aurons besoin des choses suivantes :
- Une machine pouvant accéder au QRadar et à OpenCTI (d’un point de vue réseau)
- Python d’installé sur la machine
Typiquement mon "setup" est le suivant :
- 1 ordinateur portable (16Go / 12 processeurs logiques) avec Python d’installé dessus
- 1 machine virtuelle avec QRadar CE d’installé dessus (pour l’installation je vous renvoie vers cet article : Comment surveiller vos équipements #1 – Mise en place)
- 1 compte sur la plateforme d’OpenCTI (via Google ça fonctionne très bien par exemple)
Maintenant que vous avez réuni tous ces prérequis, nous allons pouvoir passer à la suite des événements.
4. Mise en place de l’algorithme de la solution
Comme il s’agit d’un projet plutôt conséquent, nous allons faire les choses bien et dans l’ordre, à savoir : poser l’algorithme sur le papier pour exprimer tous les besoins. Nous verrons ensuite comment transposer cela d’un point de vue technique.
Si l’on reprend le postulat initial du projet, nous souhaitons récupérer les données dans OpenCTI pour les incorporer dans QRadar. Cela implique donc 2 fonctions :
- Une fonction pour récupérer les informations dans OpenCTI
- Une fonction pour transférer les informations dans QRadar
Chaque IPv4 est associée à un score de pertinence sur OpenCTI, et ce score est régulièrement mis à jour. Afin que les données que nous utilisons soient le plus à jour possible, nous avons également besoin de notre côté de mettre à jour ces données. Cela a pour conséquence de devoir créer ces 3 fonctions :
- Une fonction pour récupérer les informations dans QRadar
- Une fonction pour supprimer les informations dans QRadar
- Une fonction "macro" orchestrant le tout et se basant sur les deux précédentes fonctions
En effet, lors de la vérification des IPv4 dans QRadar, 3 issues vont être possibles :
- L’IPv4 a un score différent de celui enregistré dans QRadar mais tout de même supérieur au score, à partir duquel les IPv4 et leur pertinence sont jugées comme bonne. En conséquence, l’IPv4 est gardée et le score est mis à jour.
- Même car que 1. mais cette fois-ci le score est inférieur. Dans ce cas l’IPv4 est supprimée.
- Rien ne change quant au score. Pour ce dernier scénario, rien n’est touché dans QRadar.
Maintenant que nous avons expliqué les différentes fonctionnalités du programme, nous allons expliquer plus précisément ce qu’il en ressort des interactions avec QRadar et OpenCTI.
a. Récupération des données dans OpenCTI
Premièrement, nous allons voir comment interagir avec OpenCTI. Si l’on se penche sur la documentation, on note qu’il y a bien une section pour l’export de données mais celui-ci n’est malheureusement pas encore documenté 😢
On ne perd pas espoir et on continue nos recherches jusqu’à tomber sur cela :
Une API, nous sommes sauvés ! Qui plus est, nous avons un "playground" qui va nous permettre de tester tout cela jusqu’à obtenir ce que nous voulons.
Nous n’allons pas creuser la partie technique dans cet article puisque c’est impossible d’expliquer – correctement – le fonctionnement mais aussi de quelle manière j’ai réussi à obtenir ce que je souhaitais, en seulement 2/3 paragraphes. C’est donc pour cela que vous aurez un article complet sur le sujet pour devenir un maître en ce qui concerne l’API d’OpenCTI.
b. Manipulation des données dans QRadar
Deuxièmement, nous avons comme objectif d’interagir avec les données de notre instance QRadar. Nous n’allons, bien entendu, pas téléverser les IPv4 manuellement dans notre référentiel !
Comme précédemment, nous allons lire la documentation et voir que QRadar propose une API très bien documentée et facilement utilisable comme vous pouvez les voir ci-dessous.
On voit dans la capture sur le panel de gauche toute l’étendue de ce qui est accessible via l’API. De plus la documentation fournie par IBM ainsi que tous les forums viennent compléter le tout.
Comme pour la partie précédente, je ne vais pas m’étendre sur la partie technique qui composera un article à part entière pour vous donner toutes les clés en ce qui concerne l’API de QRadar.
5. Conclusion
Nous voici déjà à la conclusion de cet article qui, je l’espère, vous a donné très envie de voir la suite en ce qui concerne cette série autour de l’intégration de la CTI dans QRadar.
Dans les deux prochains articles nous verrons en détails la partie technique côté QRadar et OpenCTI, et finalement un dernier article viendra clôturer le tout pour montrer le fonctionnement global du script.
N’hésitez pas à me faire un retour si vous connaissez déjà la plateforme OpenCTI pour partager vos tips and tricks. Pour ceux qui ne connaissent pas, n’hésitez pas à me faire part de votre ressenti ou à poser vos questions si vous en avez.
6. Bibliographie
- Documentation GraphQL fournie par OpenCTI : GraphQL API
- Documentation de l’API QRadar : QRadar REST APIs with Python
- Qu’est-ce qu’OpenCTI : OpenCTI – La solution libre pour traiter et partager la connaissance de la cybermenace