Les playbooks sont une fonctionnalité puissante qui nous permet de créer des workflows personnalisés pour des événements réels. Dans cet exercice, nous utiliserons une source d’intelligence tierce – VirusTotal – pour nous aider à décider si une détection de fichier suspect constitue probablement une menace. En fonction des résultats, nous ajusterons le verdict si nécessaire et enverrons une notification. Si vous n’êtes pas familier avec l’interface des Playbooks, vous pouvez trouver une introduction ici. Remarque : La section à la fin explique comment déboguer votre Playbook. Cette fonctionnalité fournit une vue très utile du comportement de votre Playbook et peut aider à identifier et à corriger tout problème de workflow ou de syntaxe.
Comment commencer Ce playbook sera spécifique à un espace de travail. Dans le coin supérieur droit de la page des playbooks de l’espace de travail, cliquez sur Nouveau Playbook. Comme il s’agira de vérifier une détection avec VirusTotal, appelons-le VirusTotal Lookup, utilisons le type de menace par défaut Fichier, et sélectionnons Créer pour commencer.
Notre playbook a maintenant son premier élément, et nous avons besoin d’un déclencheur pour démarrer le flux de travail. Cliquez donc sur WS VirusTotal Lookup pour ouvrir l’onglet de l’inspecteur et modifier ses propriétés. Lorsque le panneau des propriétés est affiché, vous pouvez déplacer le rectangle de l’élément WS VirusTotal Lookup vers la droite s’il est partiellement masqué. Pour définir le déclencheur qui initiera le playbook, sélectionnez + Ajouter un groupe de conditions.
Définissez la condition du déclencheur sur Gravité, changez le test en Supérieur ou Égal, et définissez la valeur du déclencheur sur Suspect. Veillez à cliquer sur Enregistrer une fois terminé.
Source de renseignement sur les menaces Remarque : Pour continuer, vous aurez besoin d’un compte VirusTotal : vous pouvez vous inscrire sur www.virustotal.com. Avec un compte, vous avez accès à l’API VirusTotal que nous utiliserons pour notre recherche (vous pouvez en savoir plus sur l’API VT ici).
Ensuite, nous allons configurer la façon dont nous utiliserons VirusTotal pour nous aider à évaluer la menace potentielle. Dans la liste des éléments disponibles, cliquez et faites glisser Source de renseignement sur les menaces sous notre élément WS VirusTotal Lookup.
Sélectionnez votre nouvel élément Source de renseignement sur les menaces et saisissez un nouveau nom, par exemple VirusTotal Lookup.
Construction de l’appel API La méthode que nous utiliserons est GET par défaut, et nous passerons à VirusTotal le hash du fichier que nous examinons, comme spécifié dans leur documentation API. Plus précisément, l’appel que nous allons construire, comme indiqué dans la documentation de l’API VirusTotal, est le suivant :
Pour commencer, saisissez l’URL source comme suit : https://virustotal.com/api/v3/files/{{Incident: Sha1}}
Notez que lors de la saisie de l’URL ci-dessus, dès que les premières accolades {{ sont entrées, une boîte de dialogue apparaît vous permettant de sélectionner la variable que vous souhaitez utiliser, dans ce cas : Incident: SHA-1.
Définissez le type d’authentification sur En-tête HTTP, saisissez x-apikey comme en-tête d’authentification, et pour la valeur de l’en-tête, utilisez la clé API de votre compte VirusTotal :
La dernière partie de notre requête spécifie le format souhaité pour la réponse. Nous utiliserons JSON, donc dans Headers, sélectionnez + Ajouter un en-tête, et saisissez le nom de l’en-tête accept et la valeur application/json.
Formater la réponse Dans la section Mappage des données, à partir de la réponse à notre requête, nous définissons deux variables que nous utiliserons dans le workflow de notre playbook :
Pour filtrer les résultats des éditeurs d’antivirus (engine_name) ayant marqué le fichier comme malveillant, nous définissons la variable vt_engines, et créons une liste avec Ajouter au tableau (String) en utilisant les valeurs extraites via JsonPath avec la requête : $.data.attributes.last_analysis_results..[?(@.category == 'malicious')].engine_name
Nous définissons vt_id avec la requête JsonPath $.data.id : cela permettra de déterminer si VirusTotal possède un enregistrement pour ce hash de fichier.
Le mappage des données décrit ci-dessus est saisi comme suit :
Sélectionnez Enregistrer pour compléter l’élément VirusTotal Lookup, puis cliquez de nouveau sur la zone principale du workflow. Nous relions maintenant l’élément VirusTotal Lookup (début) du playbook à l’élément VirusTotal Query (Source de renseignement sur les menaces) en cliquant sur VirusTotal Lookup et en faisant glisser la flèche droite jusqu’à l’élément VirusTotal Query. Il peut être nécessaire de déplacer les deux éléments vers la droite pour disposer de l’espace nécessaire pour réaliser cette étape.
Cliquez sur la flèche droite pour rejoindre l’élément suivant et démarrer le workflow.
Les éléments du playbook ont été reliés pour former un workflow.
Tests de conditions Avec la réponse de VirusTotal, nous pouvons déterminer si le fichier doit être considéré comme malveillant en utilisant quelques éléments Condition. Les conditions que nous pouvons tester, basées sur la réponse formatée que nous avons obtenue, sont :
Si VirusTotal possède un enregistrement de ce fichier. Nous l’avons testé en créant une variable locale (vt_id) mappée à VirusTotal $.data.id. Si elle existe, VirusTotal a déjà vu ce fichier.
Quels fournisseurs (vt_engines) ont marqué le fichier comme malveillant. Cela peut être utile pour déterminer le risque associé aux fichiers signalés par seulement quelques fournisseurs, car nous pouvons choisir quelles opinions de fournisseurs nous valorisons le plus. Notez qu’un nombre élevé est un bon indicateur d’un fichier malveillant, tandis qu’un nombre faible suggère, mais ne garantit pas, qu’un fichier n’est pas malveillant. Bien sûr, Emsisoft a déjà détecté le fichier.
Le premier test est créé en faisant glisser l’élément Condition sous notre VirusTotal Lookup, et nous déterminons si VirusTotal possède un enregistrement du fichier en testant si vt.id > 0.
Notre prochaine condition testera quels fournisseurs (vt_engines) ont signalé le fichier comme malveillant.
Par exemple : La liste des fournisseurs signalant le fichier comme malveillant inclut nos 3 principaux fournisseurs de confiance (hors Emsisoft), c’est-à-dire vt_engines contient (vendorA ET vendorB ET vendorC).
Créons une deuxième condition sous la première, en faisant à nouveau glisser l’élément Condition sous la première condition. Nous testons contre des fournisseurs spécifiques et saisissons 3 tests comme indiqué ci-dessous, où les valeurs choisies pour vendorA/vendorB/vendorCproviennent du tableau des fournisseurs VirusTotal. Gardez à l’esprit que la liste est susceptible de changer lorsque de nouvelles solutions antivirus sont ajoutées ou que des solutions existantes changent de nom, donc les playbooks faisant référence aux fournisseurs peuvent nécessiter des mises à jour futures.
Mise à jour de l’incident Si l’une des conditions que nous avons créées est fausse, nous mettrons à jour l’incident pour qu’il soit considéré comme un Faux positif afin de refléter cela. Faites glisser un nouvel élément Incident Update sous et à gauche du test de condition le plus bas, nommez-le False Positive, sélectionnez + Ajouter un champ et attribuez un Verdict de Faux positif.
Créez un deuxième élément Incident Update sous et à droite du test de condition le plus bas, nommez-le Confirmed Malicious, et sélectionnez + Ajouter un champ comme décrit ci-dessus, cette fois avec un Verdict de Confirmed Malicious.
Notification Enfin, nous allons créer une notification par e-mail concernant la détection malveillante. Faites glisser l’élément Notification à droite du précédent Incident Update, spécifiez une notification par e-mail et donnez-lui un nom tel que “VT Positive Detection”. Indiquez un objet et le(s) destinataire(s).
Pour le corps de l’e-mail, nous pouvons utiliser des variables pour rendre une partie du contenu dynamique. Pour commencer, essayez ce qui suit, en notant que la dernière ligne doit être exactement telle qu’elle est affichée pour que la variable soit correctement référencée. Exemple :
Playbook VirusTotal Lookup a confirmé la détection suivante :
Plusieurs moteurs antivirus ont retourné des résultats positifs.
VirusTotal a retourné la réponse : {{vt_engines}}
Tout connecter Pour compléter le workflow, cliquez sur l’élément VirusTotal Query, et en utilisant la flèche à droite du rectangle, connectez-le au premier élément Condition. Répétez ce processus jusqu’à obtenir le workflow ci-dessous, en notant que les éléments Condition prennent en charge les workflows TRUE et FALSE.
Débogage de votre Playbook Enfin, testez le workflow avec le débogueur intégré. Accédez au débogueur via l’icône en haut à droite du diagramme du workflow, comme indiqué dans la capture d’écran ci-dessus. La barre latérale du débogueur s’ouvre sur le côté droit de la fenêtre. Vous pouvez augmenter la largeur de votre fenêtre pour disposer de l’espace nécessaire.
Sélectionnez un incident de test, par exemple une détection précédente de ce workspace. S’il n’en existe pas, vous pouvez télécharger un fichier de test EICAR et lancer un scan dessus ; soyez cependant prudent lors du téléchargement de fichiers !
Une fois l’incident sélectionné, cliquez sur Run debug pour voir le résultat de votre workflow. Notez que vous pouvez Développer l’affichage et consulter les pages Context ou Log pour voir les détails du résultat. Le bouton change en Stop debug pendant l’exécution du workflow et revient à Run debug une fois terminé.
Le résultat du débogage de ce workflow est montré ci-dessous, où vous pouvez voir les variables personnalisées que nous avons créées (vt_engines et vt_id).
Exécution Les playbooks sont exécutés dans l’ordre dans lequel ils apparaissent sur votre page de playbooks, seul le premier playbook correspondant aux critères d’exécution étant lancé. Vous pouvez cliquer et faire glisser vos playbooks pour les réorganiser selon vos priorités. Une fois que vous êtes satisfait de l’exécution du playbook, n’oubliez pas d’activer Autorun !