Qu’est-ce que YARA ? Règles de détection de malwares
YARA expliqué : comment une règle YARA reconnaît des octets dans un fichier ou en mémoire, à quoi elle sert en détection et en réponse à incident, et YARA-X.
YARA est un moteur open source de correspondance de motifs conçu pour l’analyse de malwares. Vous décrivez à quoi ressemble une famille de fichiers — quelques chaînes, des séquences d’octets, un contrôle d’en-tête — et YARA vous dit quels fichiers, images mémoire ou flux correspondent. Créé par Victor Alvarez chez VirusTotal, son langage de règles est devenu le moyen standard d’échanger de la logique de détection sur les fichiers.
Ce guide explique le fonctionnement d’une règle, ses usages, et sa relation avec YARA-X, le moteur qui fait tourner les outils de ce site.
Comment une règle YARA trouve une correspondance
Une règle a deux parties essentielles : des motifs (appelés strings, même quand ce sont des octets) et une condition. YARA recherche d’abord tous les motifs dans les données, puis évalue la condition, qui peut combiner ces résultats avec des propriétés du fichier comme sa taille ou les octets à une position donnée.
rule SUSP_Example_Download_Cradle
{
meta:
= "Commande de téléchargement PowerShell dans un exécutable Windows"
= "yararules.org"
= "2026-09-29"
strings:
$ps = "powershell" ascii wide nocase
$dl = "DownloadString(" ascii wide
condition:
uint16(0) == 0x5A4D and filesize < 5MB and $ps and $dl
}
Lisez-la de bas en haut : le fichier doit commencer par l’en-tête MZ d’un exécutable Windows, faire moins de 5 Mo et contenir les deux chaînes. La section meta documente la règle ; elle n’influence jamais la correspondance. Le guide de syntaxe détaille chaque section.
YARA n’exécute ni ne décompresse rien : il regarde les octets tels qu’ils sont. C’est sa force — rapide, prévisible, sans risque sur des fichiers hostiles — et sa principale limite : un échantillon packé ou chiffré n’expose que les octets de son packer.
À quoi sert YARA
- Classification de malwares : étiqueter des échantillons par famille (« Emotet », « beacon Cobalt Strike ») dans les sandboxes et les bases d’échantillons.
- Threat hunting : balayer partages, postes ou sauvegardes à la recherche d’un outil ou d’un implant vu ailleurs.
- Triage en réponse à incident : scanner une image disque, une collecte de triage ou un dump mémoire (voir règles pour la réponse à incident).
- Analyse mémoire : de nombreux implants n’existent déchiffrés qu’en mémoire ; YARA peut scanner la mémoire des processus là où l’analyse de fichiers échoue.
- Inspection de contenu : passerelles mail, proxys web et chaînes de dépôt de fichiers utilisent YARA pour signaler documents et archives.
- Plateformes de threat intelligence : des services comme VirusTotal exécutent en continu les règles de leurs utilisateurs (voir YARA sur VirusTotal).
YARA face aux autres langages de détection
| YARA | Sigma | Snort / Suricata | |
|---|---|---|---|
| Analyse | Fichiers, mémoire, flux d’octets | Événements de logs (SIEM) | Trafic réseau |
| Format | Langage YARA | YAML | Langage Snort |
| Question type | « Ce fichier appartient-il à la famille X ? » | « Cette séquence d’événements a-t-elle eu lieu ? » | « Ce paquet ou flux est-il malveillant ? » |
| Exécution | Scanners, EDR, sandboxes, plateformes TI | SIEM après conversion | Sondes IDS / IPS |
Ils sont complémentaires dans un SOC : une même intrusion peut être couverte par une règle Sigma sur la ligne de commande suspecte, une règle Suricata sur le trafic de commande et contrôle, et une règle YARA sur la charge déposée.
YARA et YARA-X
YARA 4.x, écrit en C, reste maintenu. YARA-X est son successeur, réécrit en Rust par VirusTotal et déjà utilisé en production (Livehunt, Retrohunt). Il conserve le même langage : la plupart des règles existantes compilent sans modification, mais il est plus strict sur certaines constructions ambiguës et produit des erreurs bien plus lisibles, avec ligne et colonne.
Tous les outils de ce site exécutent YARA-X compilé en WebAssembly dans votre navigateur. Avec le scanner en ligne ou l’éditeur de règles, vos fichiers sont lus localement et jamais envoyés. Le guide YARA-X vs YARA liste les différences qui comptent pour une migration.
Validation avant déploiement
Avant de déployer une règle, validez-la avec YARA-X (yr check rules.yar) ou YARA classique, puis testez-la sur un corpus benign (goodware) pour mesurer les faux positifs. Des outils comme yaraQA ou YARA-CI automatisent ces contrôles ; le guide tests et CI décrit une routine complète.
Limites à garder en tête
- Faux positifs : une règle n’est jamais plus spécifique que ses motifs. Des chaînes courtes ou génériques touchent des logiciels légitimes ; testez sur un corpus de goodware.
- Packing et obfuscation : une charge chiffrée cache ses chaînes. On cible alors le chargeur, la routine de déchiffrement, ou on scanne la mémoire.
- Performance : des motifs sans bon atome ralentissent chaque scan. Le guide performance et le linter aident à les éviter.
- Maintenance : les malwares évoluent. Des métadonnées complètes (auteur, date, référence) indiquent au prochain analyste ce que la règle devait attraper.
Pour continuer
- Découvrez la structure d’une règle dans la syntaxe YARA.
- Choisissez le bon type de motif avec le guide des chaînes.
- Parcourez des exemples réels dans la bibliothèque de règles, avec auteur et licence pour chaque règle.
- Écrivez votre première règle dans l’éditeur en ligne et testez-la sur un fichier, sans rien téléverser.
FAQ
- Qu’est-ce qu’une règle YARA ?
- Un petit fichier texte qui décrit des motifs (texte, octets hexadécimaux ou expressions régulières) et une condition booléenne. Quand la condition est vraie pour un fichier ou une zone mémoire, la règle « matche ».
- YARA est-il un antivirus ?
- Non. YARA est un moteur de correspondance de motifs. Antivirus, EDR, sandboxes et outils de threat hunting l’intègrent, mais YARA se contente d’indiquer quelles règles correspondent à quelles données.
- Quelle différence entre YARA et YARA-X ?
- YARA-X est la réécriture en Rust de YARA par VirusTotal. Il lit le même langage de règles, donne des messages d’erreur plus clairs et est plus rapide sur de nombreux cas ; la plupart des règles existantes fonctionnent telles quelles.