Back to Blog

L’Art de la Détection - Partie II: YARA en Pratique

Dans le blog précédent, nous avons abordé les différentes méthodes de détection et leur impact en cybersécurité. Nous avons ensuite approfondi l’une des premières techniques connues : la détection par signature. Bien que cette méthode soit puissante et offre une forte assurance de détection, elle reste insuffisante dans un paysage cyber en constante évolution, où les attaquants développent sans cesse de nouvelles techniques d’évasion.

Aujourd’hui, nous allons explorer en détail une autre technique de détection, qui, contrairement à la détection par signature, se concentre davantage sur l’analyse des caractéristiques spécifiques des fichiers suspects. Il s’agit des règles YARA, une approche efficace permettant d’identifier des menaces en se basant sur des modèles comportementaux et structurels. Alors, plongeons ensemble dans l’univers des règles YARA et découvrons comment elles peuvent renforcer la détection des menaces !

Qu’est-ce qu’une règle YARA ?

Les règles YARA permettent de classer et d’identifier des échantillons de malwares en créant des descriptions de familles de malwares basées sur des modèles textuels ou binaires.

Les règles YARA (Yet Another Recursive Acronym) identifient des motifs récurrents susceptibles d’apparaître dans les logiciels malveillants ou les familles de logiciels malveillants, et donc indiquer la présence de ce type de logiciels. Lorsqu’une règle détecte une caractéristique ou un motif révélateur d’un logiciel malveillant, elle peut alerter un intervenant approprié qui peut alors isoler ou supprimer la menace.

Comment fonctionne la détection par YARA ?

Les règles YARA sont un outil essentiel dans l’analyse et la détection des menaces. Elles fonctionnent comme un langage de programmation spécialisé, permettant de définir des modèles spécifiques à un malware (comme des chaînes de texte, des signatures binaires ou des séquences de code). Concrètement, chaque règle établit un ensemble de variables contenant des motifs caractéristiques retrouvés dans un sample malveillant.

Lorsqu’une règle est appliquée à un fichier ou un processus, elle évalue si certaines ou toutes les conditions définies sont remplies. Si tel est le cas, la règle permet d’identifier avec précision la présence d’un malware. Grâce à cette approche flexible et personnalisable, YARA s’impose comme un atout incontournable pour les analystes en cybersécurité, notamment dans la chasse aux menaces et l’investigation numérique.

Note: en cybersécurité, un sample (ou échantillon) désigne un fichier unique suspect ou confirmé comme malveillant (un malware spécifique, par exemple un exécutable ou un script infecté), utilisé pour l’analyse et la détection des menaces.

Syntaxe des règles YARA

Pour élaborer une règle YARA utile et personnalisée, on doit connaître les différents éléments qui peuvent être utilisés.

Nom de la règle

Toutes les règles YARA doivent commencer par le mot-clé rule, suivi d’un identificateur, c’est-à-dire le nom unique donné à votre règle. L’identificateur est sensible à la casse et ne peut pas contenir d’espace, commencer par une valeur numérique, ni inclure l’un des mots-clés réservés répertoriés dans la documentation sur l’écriture des règles YARA.

Par exemple, le nom de la règle suivante est valide :

Press enter or click to view image in full size

Dans cet exemple, my_first_yara_rule est un identificateur valide car il respecte toutes les règles de nommage et ne contient aucun mot-clé réservé.

Métadonnée

Les métadonnées sont optionnelles et n’affectent pas ce que la règle YARA va rechercher, mais elles fournissent des informations utiles sur la règle elle-même. La section des métadonnées est définie par le mot-clé meta. Les métadonnées peuvent inclure :

  • Auteur: Nom, adresse électronique, nom d’utilisateur Twitter de la personne ou de l’équipe ayant rédigé la règle.
  • Date: Date de création de la règle.
  • Version: Numéro de version de la règle YARA pour le suivi des modifications.
  • Référence: Lien vers un article sur le sample ou le téléchargement du sample, utilisé pour fournir des informations pertinentes sur le sample de malware que la règle est conçue pour détecter.
  • Description: Bref aperçu de l’objectif de la règle et du malware qu’elle vise à détecter.
  • Hachage: Liste des valeurs de hachage (par exemple, MD5, SHA1, SHA256) des samples utilisés pour créer la règle YARA.
Press enter or click to view image in full size

Dans cet exemple, les métadonnées contiennent des informations telles que l’auteur, la date, la version, la référence, la description et les hachages des samples. Ces informations ne modifient pas le comportement de la règle, mais elles permettent de mieux organiser et comprendre le contexte de la règle YARA.

Chaînes

La section strings (chaînes) sert à déclarer une variable et à définir sa valeur. Les variables sont décrites à l’aide du symbole $, suivi de leur nom. Elles sont sensibles à la casse et ne doivent pas contenir d’espace ni commencer par une valeur numérique.

Press enter or click to view image in full size

Condition

La section condition est l’élément clé d’une règle YARA. Elle définit les critères de détection qu’un fichier ou un processus doit remplir pour être identifié comme correspondant à la règle.

Elle permet d’évaluer la présence des chaînes déclarées dans strings, d’appliquer des opérateurs logiques (AND, OR, NOT), d’effectuer des comparaisons numériques, ou encore d’utiliser des fonctions intégrées pour une analyse plus avancée.

Press enter or click to view image in full size

Dans cet exemple, la section condition définit les critères de détection du fichier analysé :

  1. filesize < 500KB : La règle s’applique uniquement aux fichiers dont la taille est inférieure à 500 Ko, excluant ainsi les fichiers trop volumineux.
  2. #text_string > 2 or $hex_pattern or $regex_pattern:
  • La chaîne “malware detected” doit apparaître plus de deux fois, ce qui peut indiquer un comportement répétitif du malware.
  • OU la signature hexadécimale {6D 61 6C 77 61 72 65} (correspondant au mot “malware”) doit être présente dans le fichier.
  • OU le motif correspondant à l’expression régulière /MALWARE[0–9]{2}/ doit être présent, ce qui permet d’identifier des variantes de malware nommées selon un schéma particulier.

Ces conditions permettent une détection plus précise, en combinant analyse de taille et présence de motifs spécifiques.

Comment utiliser YARA

Maintenant que nous avons créé notre règle YARA, il est temps de découvrir comment l’utiliser pour identifier des indicateurs de compromission dans un fichier. Pour ce faire, nous avons créé un fichier nommé malicious.txt, dont le contenu est illustré dans la capture suivante :

Press enter or click to view image in full size

Ensuite, pour lancer l’analyse, il suffit d’ouvrir une invite de commandes (cmd), de se placer dans le dossier contenant rule.yara et malicious.txt, puis d’exécuter la commande suivante :

Press enter or click to view image in full size

Comme vous pouvez le voir, YARA a détecté les occurrences des chaînes définies dans la règle, indiquant ainsi la présence des motifs recherchés dans le fichier analysé.

Les limites de YARA

YARA est sans doute l’un des outils les plus puissants pour la détection de malwares, mais il a ses limites. Par exemple, lorsqu’un malware utilise des techniques d’obfuscation ou de chiffrement, YARA peut avoir du mal à repérer ses signatures. Si un fichier est chiffré ou compressé, les chaînes de texte ou les motifs binaires habituellement recherchés ne seront tout simplement pas visibles. Cela signifie que YARA, qui se base sur des motifs spécifiques, ne pourra pas détecter le malware aussi efficacement dans ces cas-là.

Même si YARA reste un excellent outil pour la détection des malwares, il n’est pas toujours suffisant, surtout dans des scénarios où l’obfuscation ou le chiffrement est utilisé pour dissimuler les signatures. Dans ces cas-là, YARA doit être accompagné d’autres solutions pour être plus efficace. C’est là qu’interviennent des outils comme les règles Sigma, que nous verrons plus en détail dans la troisième partie de ce blog.