05 Initiation aux Automations dans XSOAR : Fonctionnalités, Exemples Réels et Extraits de Code

Introduction

Les automations dans XSOAR sont des scripts et des actions automatisées qui permettent d’incorporer des développements custom dans XSOAR. Elles jouent un rôle crucial en réduisant le travail manuel, en standardisant les processus et en améliorant la réactivité des équipes de sécurité. Dans cet article, nous allons explorer les fonctionnalités des automations dans XSOAR, illustrer leur utilisation avec des exemples réels et fournir des extraits de code pour mieux comprendre leur mise en œuvre.

Qu’est-ce qu’une Automation dans XSOAR ?

Une automation dans XSOAR est un script Python qui peut être executé dans un grand nombre de contextes :

  • task de Playbook
  • règle de pre-processing
  • source de donnée pour un widget de dashboard
  • condition, filter ou transformer personnalisés
  • lors de la modification d’un champs d’un incident
  • ou encore mon préféré, les sections dynamiques de layout d’incident et d’indicateurs

Ces Automations seront exécuté dans XSOAR soit via des tâches de Playbooks ou encore dans la War Room d’un incident. C’est pourquoi il est important de différencier les commandes d’intégrations (ex: !glpi-get-ticket) des noms d’Automations (ex: !Base64Encode) comme expliqués dans l’article précédent.

Paramètres Communs des Automations

Les Automations dans XSOAR incluent plusieurs paramètres communs qui permettent de personnaliser leur comportement.

  • Name : Nom de l’automation pour l’identifier dans le playbook.
  • Description : Description détaillée de ce que fait l’automation.
  • Timeout : Durée maximale pendant laquelle l’automation peut s’exécuter avant de se terminer automatiquement.
  • Inputs : Variables ou données d’entrée nécessaires pour l’automation.
  • Tags : C’est ce qui nous permettra de différencier une Automation servant en tant que filter, transformer, condition ou autres.

Ces informations sont disponibles depuis les paramètres de celle ci, accessible via ce bouton :

Décomposition d’un automation

Commençons par un exemple simple :

import demistomock as demisto  # noqa: F401
from CommonServerPython import * # noqa: F401

array = demisto.args().get('inputArray')
list_name = demisto.args().get('listName')

res = demisto.executeCommand("getList", {"listName": list_name})[0]

for item in array:
if str(item) in res['Contents']:
demisto.results('yes')
break
IsArrayItemInList.py

Laissons deux premières lignes de cette Automation permettent lors de développement de simuler (« mocker« ) les entrées sorties du script afin de l’exécuter localement et de run les tests sans avoir une réelle instance de XSOAR nécessaire.

Concentrons nous sur la 4ème ligne. L’objet demisto appelé est donc l’instance de XSOAR qui expose tout un ensemble de fonctions permettant d’intéragir avec celui-ci. Ici la fonction args() comme son nom l’indique va récupérer un argument inputArray qui sera à passer lors de l’appel à cet automation.

La ligne 7 quand à elle va exécuter la commande getList de XSOAR comme vous le feriez depuis le Playground de XSOAR (!getList) en lui passant en paramètre l’argument listName récupéré ligne 5.

La fonction results() ligne 11 va permettre de retourner des informations à l’analyste/XSOAR, que ce soit sous la forme d’un boolean, d’une str, d’indicateurs ou même d’un fichier. Nous y reviendrons au titre suivant.

En l’occurrence, ici il s’agit d’une automation de condition (avec comme Tag « Condition »), la valeur de retour se devant d’être un boolean. Vous le voyez depuis les paramètres de cette Automation :

Contexte et Outputs

Il existe une norme concernant les valeurs de contextes et d’outputs dans Xsoar :

https://xsoar.pan.dev/docs/integrations/context-and-outputs

Afin d’avoir une plus grande finesse, notamment pour les commandes d’intégration, voici le format utilisé :

demisto.results({
'Type': entryTypes['note'],
'ContentsFormat': formats['json'],
'Contents': anomalies,
'ReadableContentsFormat': formats['markdown'],
'HumanReadable': 'Found Anomalies: ' '\n'.join(anomalies),
'EntryContext': {
'LogAnalysis.Anomalies': anomalies
}
})

Et voici les références obligatoires concernant les outputs de commandes : https://xsoar.pan.dev/docs/integrations/context-standards-mandatory

https://xsoar.pan.dev/docs/integrations/context-standards-recommended

Conclusion

Les automations dans XSOAR offrent une flexibilité et une puissance exceptionnelles pour automatiser et orchestrer les réponses aux incidents de sécurité. En utilisant des scripts personnalisés, des commandes d’automations, et des intégrations avec des API externes, vous pouvez créer des workflows sophistiqués qui améliorent considérablement l’efficacité de votre équipe de sécurité. Les exemples réels et les extraits de code présentés ici illustrent comment tirer parti de ces fonctionnalités pour renforcer votre posture de sécurité.

Chez Alouest IT, nous sommes prêts à vous aider à concevoir et implémenter des automations efficaces pour vos besoins spécifiques. Contactez-nous pour découvrir comment nos services et formations peuvent vous aider à maîtriser XSOAR et à automatiser vos opérations de sécurité.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *