Comment développer une sandbox d'analyse des malware à l'aide d'Elastic Security
Les analystes de la sécurité de l'équipe d'Elastic en charge de la sécurité des informations sont souvent sollicités par des utilisateurs pour savoir s'il est prudent d'ouvrir un fichier spécifique. Autre scénario courant, un utilisateur signale un e-mail frauduleux comprenant une pièce jointe qu'il n'a pas ouvert. Après consultation des logs, nous remarquons que dix autres utilisateurs ont reçu le même message, mais ne l'ont pas signalé et qu'aucune alerte n'a été déclenchée sur leurs systèmes. Les e-mails envoyés avec des pièces jointes ne contenant pas de code malveillant afin de ne pas déclencher d'alertes sont une méthode de phishing courante. Il s'agit d'une tentative d'ingénierie sociale pour voler le mot de passe d'un utilisateur.
Dans ces situations, l'équipe de sécurité doit rapidement identifier les événements survenus sur les systèmes des utilisateurs quand un fichier est exécuté en vue de déterminer s'il a été détecté ou arrêté. Si ce n'est pas le cas, l'équipe doit vite comprendre les actions exécutées sur l'hôte. Dans cette optique, l'équipe de sécurité doit disposer d'une sandbox de machine virtuelle bien instrumentée afin d'exécuter le fichier concerné sans prendre de risque et d'en observer les conséquences. L'équipe d'Elastic en charge de la sécurité des informations repousse toujours les limites à l'aide des produits Elastic dans le cadre de notre approche tout compris pour nos clients. Ainsi, nous avons décidé de développer une sandbox fondée sur les produits Elastic.
Dans cet article, je vous explique comment l'équipe d'Elastic en charge de la sécurité des informations utilise Fleet et Elastic Security en tant que sandbox d'analyse des malware entièrement instrumentée. Les solutions d'Elastic sont idéales pour instrumenter et recueillir des données depuis une sandbox. En outre, elles sont faciles à développer et peuvent être créées en quelques minutes seulement.
Qu'est-ce que l'analyse dynamique des malware ?
L'analyse dynamique des malware consiste à exécuter un élément suspect d'un logiciel au sein d'une machine virtuelle isolée, puis d'observer ce qu'il se passe. L'objectif est de déterminer :
- les processus exécutés par le malware ;
- les modifications apportées à l'hôte ;
- les connexions réseau effectuées ;
- les fichiers téléchargés en vue des étapes suivantes de l'attaque.
Après avoir observé le comportement du malware, vous pouvez utiliser les informations apprises afin de créer de nouvelles détections et défenses ou bien pour identifier d'autres activités malveillantes sur votre réseau.
Pourquoi choisir Elastic ?
Si vous avez déjà créé un environnement de sandbox afin d'observer et d'analyser les malware, vous savez que la configuration de votre sandbox peut être un processus chronophage nécessitant d'installer et de configurer des dizaines d'éléments de logiciels différents. Des logiciels comme Wireshark, Regshot et ProcMon peuvent être requis pour l'exécution manuelle pas-à-pas du malware en parallèle de l'observation et de la documentation des actions effectuées.
Certains systèmes avancés de sandbox d'analyse dynamique des malware, à l'instar de Cuckoo Sandbox, sont dotés de nombreuses fonctionnalités, notamment l'automatisation. Cependant, ils impliquent souvent des temps de configuration plus longs et peuvent ne pas être nécessaires à toutes les équipes en charge de la sécurité des informations. Nombre des exemples de malware utilisés à des fins de phishing que nous avons rencontrés récemment constituent des tentatives d'ingénierie sociale visant à voler des identifiants via des interactions avec les utilisateurs. Dans ces cas, les systèmes automatisés peuvent ne pas recueillir tous les indicateurs de la compromission.
Certains exemples de malware vérifieront l'existence de nombre de ces outils et, s'ils en identifient, en arrêteront l'exécution, ce qui compliquera leur analyse. D'autres malware rechercheront activement ces outils et arrêteront les processus concernés ou écraseront les logs contenus dans la sandbox. Par conséquent, l'analyse dynamique des malware peut s'avérer chronophage lorsque vous travaillez sur un incident actif nécessitant une attention immédiate.
Elastic Endpoint Security est un agent unique qui recueille des informations sur les actions effectuées dans un système et visualise rapidement l'arborescence des processus pour les analystes. Ainsi, il est plus facile et rapide d'investiguer la situation exacte. En outre, vous obtenez les indicateurs adéquats pour améliorer vos détections et protections. La vue Analyzer dans Elastic Security visualise toute l'arborescence des processus et vous indique tous les processus enfant et leurs indicateurs créés par le processus initial du malware.
Création de votre sandbox
Il existe plusieurs raisons pour lesquelles vous pouvez utiliser une sandbox d'analyse des malware. Pour le cas d'utilisation illustré ici, notre objectif consiste à disposer d'un environnement virtuel similaire à la conception standard d'une entreprise, mais également instrumenté avec précision afin d'observer toutes les actions effectuées par le malware.
Lorsque vous créez votre sandbox, il est conseillé de créer deux images pour chaque conception, à savoir une "renforcée" conçue avec les mêmes protections installées au sein de votre entreprise et une "vulnérable" dans laquelle la plupart des protections sont désactivées. Grâce à cette solution, l'image renforcée vous montrera ce qui pourrait se passer dans votre environnement si un utilisateur exécutait le fichier, tandis que l'image vulnérable vous montrera l'exécution complète du malware. Une entreprise suffisamment grande dispose quasiment toujours de systèmes au sein desquels certaines protections sont désactivées. C'est pourquoi nous recommandons d'utiliser les deux méthodes.
Création de systèmes de test
La première étape consiste à créer des machines virtuelles pour exécuter les fichiers. N'importe quel logiciel de visualisation peut être utilisé pour développer les images. La configuration d'un tel logiciel n'est pas abordée ici. Cependant, il est important d'isoler les systèmes du réseau de votre entreprise et votre hôte autant que possible lors de l'exécution du malware. Le scénario décrit ici concerne la conception d'une machine virtuelle sous Windows 10 et d'une image MacOS. Il fonctionne aussi si votre entreprise possède un environnement Linux standard.
Une fois vos machines virtuelles créées, je vous recommande d'installer tous les logiciels couramment utilisés dans votre domaine, comme MS Office, Adobe Reader ou Python. Votre sandbox doit comprendre tous les éléments permettant à vos utilisateurs d'exécuter un fichier. Sur vos machines virtuelles Windows, je vous recommande d'activer le logging PowerShell ScriptBlock. Le logging ScriptBlock enregistrera le texte complet de tout script PowerShell exécuté dans les logs de vos événements Windows qui sont susceptibles d'être collectés à l'aide d'Elastic Agent. Lorsque vous configurerez votre machine virtuelle "vulnérable", vous devrez modifier plusieurs paramètres afin de désactiver toutes les protections intégrées du système d'exploitation. Certains malware Windows avancés vérifieront si l'hôte fait partie d'un domaine avant de télécharger la deuxième étape. Par conséquent, il est recommandé de configurer votre machine virtuelle afin de l'ajouter à un faux domaine au nom similaire à celui de votre entreprise.
Si vous le souhaitez, vous pouvez également recueillir des données Sysmon auprès de l'hôte Windows. L'agent Elastic Endpoint collecte en grande partie les mêmes informations que celles recueillies par Sysmon. Il est donc recommandé de personnaliser la configuration Sysmon afin de ne pas dupliquer les données. Une fois que vous avez installé et configuré Sysmon, Elastic Agent peut envoyer ces événements dans votre cluster à l'aide de l'intégration Windows.
Configuration de votre cluster Elastic Security
Pour effectuer ce test, j'ai utilisé Elastic 7.10 dans Elastic Cloud. Configurer votre cluster dans Elastic Cloud est la méthode la plus facile pour créer un cluster et l'héberger à des fins de tests. En quelques minutes seulement, il peut être opérationnel avec toutes les fonctionnalités de l'abonnement Platinum. Si vous voulez développer une sandbox entièrement isolée, vous pouvez configurer votre propre Suite Elastic sur site. Pour ce faire, vous pouvez suivre ces instructions afin d'installer la Suite Elastic. Tous les aspects abordés dans cet article sont inclus gratuitement dans notre niveau Basic gratuit.
Après avoir créé votre cluster dans Elastic Cloud, vous devez vous connecter et configurer Elastic Security. Pour savoir comment faire en détail, regardez cette vidéo.
Configuration
La première étape consiste à se connecter à Kibana en tant qu'administrateur, à accéder à "Security" (Sécurité) > "Administration" > onglet "Endpoints" (Points de terminaison), puis à cliquer sur le bouton Add Endpoint Security (Ajouter Endpoint Security).
Tout d'abord, vous devez créer une intégration de sécurité. Donnez un nom à votre intégration, puis cliquez sur le bouton Save integration (Enregistrer l'intégration). Vous pouvez créer plusieurs intégrations et politiques d'agent. Toutefois, pour votre sandbox, le plus simple est d'utiliser une seule politique régissant l'ensemble de ses systèmes. Une seule politique couvre vos systèmes Linux, Windows et MacOS.
Sélectionnez votre intégration, puis cliquez sur le bouton Enroll Agent (Enregistrer un agent). Sur l'écran qui s'affiche, cliquez sur Enroll in Fleet pour confirmer que vous souhaitez l'enregistrer dans Fleet. Ainsi, vous pouvez entièrement configurer et contrôler vos agents dans Kibana.
Si vous souhaitez également recueillir les logs des événements Windows, cliquez sur le bouton Add integration (Ajouter une intégration), sélectionnez Windows dans la liste des intégrations préconfigurées, utilisez les paramètres par défaut, puis cliquez sur le bouton Save Integration (Enregistrer l'intégration) afin de recueillir les événements Windows Security, les événements Sysmon, le logging PowerShell Scriptblock et tous les logs des événements Windows configurés pour être transmis.
À présent, vous devriez disposer d'une politique par défaut configurée pour déployer la sécurité aux points de terminaison, le module System et les logs des événements provenant de systèmes Windows.
Vous pouvez maintenant déployer vos agents dans les systèmes de votre sandbox. Cliquez sur l'onglet Agents. S'il s'agit de votre premier agent, vous devez vous connecter en tant qu'administrateur, puis cliquer sur le bouton permettant de créer automatiquement l'utilisateur Fleet dans Kibana. Ensuite, cliquez sur le bouton Add Agent (Ajouter un agent), qui vous permet d'accéder à la page de téléchargement d'Elastic Agent sur laquelle vous trouvez les commandes à exécuter en vue d'installer l'agent sur vos machines virtuelles. Après avoir téléchargé et installé l'agent, il devrait s'afficher automatiquement dans la liste des agents.
Dans Elastic Security, vous devez configurer la politique d'intégration des agents d'Elastic Endpoint. L'option Agent Policy configure la politique pour Elastic Agent tandis que l'option Integration Policy configure la politique pour l'intégration de la sécurité aux points de terminaison déployée par l'agent. Cette politique d'intégration peut être configurée dans l'onglet Administration d'Elastic Security. Cliquez sur Integration Policy en regard de l'un de vos agents afin d'ouvrir la vue correspondante.
La vue des paramètres des intégrations s'affiche. Assurez-vous que l'option Malware Protections Enabled (Protections contre les malware activée) est bien cochée et que, sous Protection Level (Niveau de protection), l'option Detect (Détecter) est cochée et pas l'option Prevent (Prévenir). Si vous avez activé des protections contre les malware en mode détection, des alertes seront déclenchées, mais Elastic Security ne prendra aucune mesure pour arrêter le malware identifié.
La prochaine étape consiste à prendre le temps de configurer votre moteur de détection dans Elastic Security et d'installer toutes les règles de détection d'Elastic prédéfinies intégrées. Cette étape n'est pas nécessaire pour votre sandbox. Cependant, elle est facile à réaliser et permettra souvent de détecter les actions exécutées par un malware, ce qui facilite le tri des alertes. Pour ce faire, sélectionnez l'onglet Detections (Détections) dans Elastic Security, puis cliquez sur le bouton Manage detection rules (Gérer les règles de détection). Ensuite, cliquez sur le bouton Load Elastic prebuilt rules and timeline templates (Charger les règles prédéfinies d'Elastic et les modèles de chronologie). La première fois, vous devez vous connecter en tant qu'administrateur pour réaliser ces actions.
Une fois les règles chargées, vous devez activer celles qui vous intéressent. Pour ce faire, vous pouvez passer en revue les règles et sélectionner celles à activer ou vous pouvez simplement toutes les activer. L'activation de toutes les règles est la méthode la plus simple : cela ne fait pas de mal, même si certaines d'entre elles ne fournissent aucune donnée.
Collecte de trafic réseau (facultatif)
Outre capturer l'activité du malware sur un hôte, il peut être intéressant de recueillir son activité de réseau depuis un hôte externe. Cette opération a plusieurs avantages, notamment la capacité de connaître les données impliquées dans les événements du réseau (et pas simplement les actions en elles-mêmes). Il existe plusieurs méthodes pour atteindre cet objectif. Personnellement, je préfère utiliser une machine virtuelle distincte capable de repérer le trafic réseau au sein du même réseau virtuel.
Dans cette optique, vous pouvez utiliser Packetbeat, qui vous fournit un bon récapitulatif des données sans inonder votre suite d'événements, ou TShark et Filebeat pour envoyer la capture d'un paquet complet dans Elasticsearch. Il est préférable de configurer Packetbeat afin de recueillir les requêtes et les réponses pour la plupart des protocoles, mais aussi les certificats bruts pour l'ensemble du trafic TLS. Les malware réutilisent très souvent les certificats TLS, qui peuvent être de véritables malles au trésor contenant des noms de domaines malveillants.
Votre sandbox d'analyse des malware est maintenant prête à être testée. N'oubliez pas de prendre un snapshot de vos machines virtuelles "propres" avant de commencer à exécuter le malware.
Analyse de malware
Remarque : N'exécutez jamais un malware actif sur votre système hôte. Nous vous recommandons de conserver le malware suspect dans un fichier zip protégé par mot de passe afin d'éviter toute exécution accidentelle. Le cas échéant, téléchargez le malware directement dans le système de votre sandbox. |
Pour le test décrit ici, j'ai utilisé un élément de la famille de malware Emotet. Cet élément spécifique est un document Office malveillant qui oblige l'utilisateur à activer des macros pour être exécuté. Si les protections contre les malware ne sont pas désactivées dans la politique des points de terminaison, Elastic Security mettra immédiatement le malware en quarantaine. Votre test sera donc très court.
Après avoir utilisé le malware Emotet dans votre machine virtuelle, vous pouvez accéder à nouveau à Elastic Security dans Kibana et admirer le résultat. Dans l'onglet "Detections" (Détections), vous verrez probablement un grand nombre de nouvelles alertes déclenchées par l'activité du malware sur l'hôte. Comme vous le montre la capture d'écran ci-dessous, plusieurs alertes de détection des malware ont été déclenchées dès le début. Si la sécurité aux points de terminaison a été configurée de manière à prévenir au lieu de détecter, les malware devraient avoir été bloqués et mis en quarantaine, et vous ne devriez pas voir toutes ces données supplémentaires.
En regard de chaque alerte, vous pouvez cliquer sur l'icône Analyze Event (Analyser l'événement) afin d'ouvrir la vue Analyzer et de visualiser l'activité dans une arborescence.
Dans cet exemple, j'ai décidé de sélectionner l'étrange commande PowerShell afin de déterminer son rôle dans la chaîne d'exécution. Analyzer permet de visualiser de manière interactive l'exécution du logiciel dans une vue hiérarchisée reposant sur le processus parent. Les lignes reliant les processus représentent les écarts entre l'heure de début du processus parent et celle du processus enfant. Si vous regardez un nœud plus particulièrement, vous obtiendrez le nombre d'événements associés au processus concerné.
Pour connaître les actions du processus PowerShell, je peux sélectionner le nœud. Ainsi, je constate que 27 événements distincts sont associés à ce processus spécifique. Ensuite, je peux sélectionner chaque catégorie afin de déterminer les fichiers créés, les connexions réseau réalisées, les entrées de registre modifiées et les bibliothèques que le processus a chargées en mémoire.
Certains malware chargeront uniquement des fonctionnalités spécifiques après un redémarrage. Par conséquent, il est judicieux de redémarrer la machine virtuelle et de rechercher davantage d'alertes en vue d'identifier toute détection supplémentaire éventuelle.
Toutes ces informations sont déjà disponibles dans Elastic. Ainsi, je peux également visualiser ces événements dans toutes les autres applications Kibana à l'instar de Dashboard ou de Discover. Si vous utilisez Packetbeat pour recueillir le trafic réseau, Kibana comprend un grand nombre de visualisations et de tableaux de bord intégrés pour différents protocoles réseau.
Conclusion
Dans cet article, nous vous avons expliqué comment configurer rapidement votre propre sandbox d'analyse des malware à l'aide d'Elastic. En quelques minutes, vous pouvez développer une sandbox qui vous permet d'ouvrir en toute sécurité des fichiers et de les observer tout en envoyant l'ensemble des événements dans votre Suite Elastic afin de réaliser une analyse hors ligne en toute sécurité. Au sein de l'équipe d'Elastic en charge de la sécurité des informations, nous utilisons les informations provenant de ces fichiers pour développer de nouvelles règles de détection et rechercher toute attaque ciblant le réseau qui n'a pas été identifié auparavant.
Prêt à vous lancer ? Commencez un essai gratuit de 14 jours. (Vous n'avez pas à fournir vos coordonnées bancaires.) Ou téléchargez gratuitement nos produits pour votre déploiement sur site.