Syntaxe des règles YARA
Chaînes, conditions et métadonnées.
Syntaxe des règles YARA est une leçon Cyber Security Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cyber Security Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cyber Security Academy comprend 4 leçons au total.
Les trois sections
Une règle YARA possède un nom et jusqu'à trois sections : meta, strings et condition. La condition est la seule section obligatoire, mais les règles réelles utilisent les trois.
rule Example_Malware
{
meta:
author = "analyst"
description = "Detects Example family"
strings:
$a = "EvilConfig"
$b = { 6A 40 68 00 30 00 00 }
condition:
$a and $b
}La section meta
meta contient des métadonnées descriptives qui n'influencent pas la correspondance, mais qui sont essentielles au triage et à la maintenance.
author,date,descriptionreference— lien vers un rapport ou un avishash— échantillon(s) à partir duquel ou desquels la règle a été crééetlp— classification du partage
Les valeurs sont des chaînes, des entiers ou des booléens. Considérez meta comme de la documentation : le prochain intervenant s'appuiera dessus.
Chaînes de texte
La section strings définit des identifiants (commençant par $) associés à des motifs. La forme la plus simple est une chaîne de texte entre guillemets.
Les modificateurs affinent la correspondance :
nocase— insensible à la cassewide— UTF-16 (deux octets par caractère, courant sous Windows)ascii— ASCII (valeur par défaut ; combinez-le avec wide pour faire correspondre les deux formats)fullword— correspondance uniquement avec un mot entier
strings:
$s1 = "cmd.exe /c" nocase
$s2 = "InjectDll" wide ascii
$s3 = "admin" fullwordChaînes hexadécimales
Pour les motifs binaires, utilisez une chaîne hexadécimale entre accolades. Elle fait correspondre les octets bruts, ce qui est idéal pour les opcodes, les nombres magiques et les structures.
Les chaînes hexadécimales offrent une certaine flexibilité :
??— quartet/octet générique[n-m]— saut de n à m octets quelconques( A | B )— alternatives
strings:
$h1 = { 4D 5A 90 00 }
$h2 = { E8 ?? ?? ?? ?? 83 C4 04 }
$h3 = { 6A 00 [2-6] FF 15 ?? ?? ?? ?? }
$h4 = { ( B8 | B9 ) 00 00 00 00 }Expressions régulières
YARA prend en charge les motifs d'expressions régulières délimités par des barres obliques, avec les mêmes modificateurs que les chaînes de texte. Utilisez les expressions régulières lorsqu'un motif varie tout en suivant une structure, comme un marqueur de configuration ou un nom de mutex généré.
Les expressions régulières sont puissantes, mais coûteuses ; préférez les chaînes fixes ou l'hexadécimal lorsque c'est possible, et ancrez étroitement les expressions régulières pour éviter d'analyser tout le fichier.
strings:
$re1 = /mutex_[a-f0-9]{8}/ nocase
$re2 = /https?:\/\/[a-z0-9]{12,20}\.top\// asciiSection condition
condition est une expression booléenne qui détermine une correspondance. Référencez directement les identifiants de chaînes ; un $a isolé est vrai si la chaîne a été trouvée.
Combinez-le avec and, or, not et des parenthèses. C'est ici que vous encodez la logique qui distingue la détection d'une véritable famille d'une simple coïncidence.
condition:
$a and ($b or $c) and not $benignComptage et ensembles
YARA propose des quantificateurs expressifs sur les ensembles de chaînes :
any of them/all of them2 of ($s*)— au moins deux éléments d'un groupe#a > 3— le nombre de correspondances de $a dépasse 3
Ils vous permettent d'exiger, par exemple, trois marqueurs de famille sur cinq, en équilibrant sensibilité et faux positifs.
condition:
3 of ($str*) and #marker >= 2Décalages et taille du fichier
Les conditions peuvent faire référence à l'endroit où une correspondance se produit et à la taille du fichier :
$a at 0— la correspondance doit se trouver au décalage 0$a in (0..1024)— dans une plage d'octetsfilesize— taille totale, par exemplefilesize < 200KBuint16(0) == 0x5A4D— lire un entier à un décalage donné (ici, l'en-tête MZ)
Ancrer les correspondances à une position réduit considérablement les faux positifs et accélère l'analyse.
condition:
uint16(0) == 0x5A4D and filesize < 500KB and $payloadModules
Les modules YARA exposent des données structurées adaptées au format, afin que les conditions puissent s'appuyer sur des champs analysés plutôt que sur des octets bruts.
pe— imports PE, sections, point d'entrée, signatures, imphashhash— calculer le md5/sha256 de régionsmath— entropy et statistiqueself,dotnet,magic
Importer pe, par exemple, permet de faire correspondre des fonctions importées ou un imphash spécifique, de façon bien plus robuste qu'avec une chaîne littérale.
import "pe"
condition:
pe.imphash() == "a1b2c3d4e5f6..." and
pe.imports("kernel32.dll", "VirtualAllocEx")Parcours des ensembles
Pour une logique plus riche, YARA prend en charge les boucles sur les collections avec for. Vous pouvez exprimer des conditions telles qu'au moins deux de ces décalages vérifient une propriété, ou qu'un nom de section corresponde à un motif.
C'est essentiel lorsque vous travaillez avec des données de module telles que les sections PE ou les imports, car vous devez examiner une liste de longueur variable plutôt qu'une valeur unique.
import "pe"
condition:
for any i in (0..pe.number_of_sections - 1) : (
pe.sections[i].name == ".evil"
)Globaux, privés et balises
Les mots-clés au niveau de la rule organisent un ensemble de règles :
global rule— sa condition régit toutes les autres règles du fichier (par exemple, analyser uniquement les fichiers PE)private rule— bloc de construction réutilisable, qui n'est pas signalé seul mais peut être référencé par d'autres règles- les balises placées après le nom de la rule classent les détections (par exemple pour filtrer les résultats)
global private rule IsPE { condition: uint16(0) == 0x5A4D }
rule Dropper : trojan dropper {
strings: $a = "drop_payload"
condition: $a
}Vérification rapide
Évaluez la robustesse d'une condition.
Récapitulatif
La syntaxe d'une rule YARA en un coup d'œil :
- Une rule =
meta+strings+condition - Chaînes de texte avec les modificateurs sans distinction de casse, large et ASCII
- Chaînes hexadécimales avec jokers
??, sauts[n-m]et alternatives - Expressions régulières pour les motifs variables structurés (à utiliser avec parcimonie)
conditioncombine les chaînes avec and/or/not- Quantificateurs : n'importe quelle chaîne, toutes les chaînes ou N chaînes, ainsi que le comptage
#a - Ancrage : at, in, filesize et lectures avec uint
- Les modules (pe, hash, math) font correspondre des données structurées et un imphash
global,privateet les balises organisent les ensembles de règles
Ensuite : recherche pratique avec les chaînes et l'hexadécimal.
Questions Fréquemment Posées
La leçon « Syntaxe des règles YARA » est-elle gratuite ?
Oui — le texte complet de « Syntaxe des règles YARA » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cyber Security Academy, passe à CoddyKit PRO. Le cours Cyber Security Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Syntaxe des règles YARA » ?
Chaînes, conditions et métadonnées. Tu pratiques Cyber Security Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cyber Security Academy ?
Aucune expérience préalable n'est requise. Cyber Security Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Syntaxe des règles YARA » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cyber Security Academy ?
Oui. Chaque leçon Cyber Security Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- À quoi sert YARA
- Syntaxe des règles YARA
- Rechercher avec des chaînes et de l’hexadécimal
- Mettre les analyses à l’échelle et les automatiser