Règles YARA pour la réponse à incident
YARA en réponse à incident : périmètre, écrire une règle à partir d’un échantillon, choisir des chaînes uniques, score de confiance, chasse sur le parc et en mémoire.
Pendant un incident, YARA transforme un artefact analysé en une question posée à toutes les machines : « où d’autre trouve-t-on ceci ? ». Les règles écrites dans l’urgence n’ont pas les mêmes priorités qu’une règle destinée à un dépôt public — vitesse et précision priment sur l’élégance — mais les fondamentaux restent les mêmes.
Périmètre : que scanner
- Fichiers sur disque : charges, droppers, web shells, scripts, outils laissés par l’attaquant.
- Collectes de triage : des collectes ciblées (par exemple avec Velociraptor ou KAPE) sont bien plus petites qu’une image complète et se scannent vite.
- Mémoire : la mémoire des processus, ou une image mémoire complète, révèle les implants déchiffrés à l’exécution, le code injecté et les chargeurs réflectifs.
- Archives et messagerie : pièces jointes de phishing, ZIP et ISO dans les boîtes mail ou les dossiers de téléchargement.
Décidez tôt si une correspondance signifie « confirmer et contenir » ou « investiguer » : cela détermine l’agressivité acceptable de la règle.
Écrire une règle à partir d’un échantillon
- Collecter les chaînes candidates. Passez
strings(ASCII et UTF-16) ou un désassembleur sur l’échantillon. Cherchez noms de mutex, chemins PDB, user agents personnalisés, marqueurs de configuration, noms de commandes, messages d’erreur, exports inhabituels. - Éliminer le bruit. Écartez les chaînes issues du runtime du compilateur, de la bibliothèque standard, des packers ou des frameworks courants : elles toucheront des milliers de fichiers sains.
- Ajouter du code. Quand les chaînes sont chiffrées, ciblez la boucle de déchiffrement, l’analyseur de configuration ou une routine de hachage d’API sous forme hexadécimale, opérandes en joker.
- Structurer la condition. Contrôle de type et de taille d’abord, puis un indicateur très spécifique ou plusieurs indicateurs faibles.
- Tester. Au minimum sur l’échantillon lui-même et sur des fichiers sains de l’environnement touché.
rule MAL_IR_Example_Implant
{
meta:
= "Implant trouvé sur FIN-WKS-07, dossier 2026-042 (exemple)"
= "Équipe IR"
= "2026-09-29"
= "dossier interne 2026-042"
= 80
= "0000000000000000000000000000000000000000000000000000000000000000"
strings:
$x1 = "Global\\svc_backup_sync_mtx" ascii wide
$x2 = "C:\\build\\agent\\Release\\svcagent.pdb" ascii
$s1 = "/api/v2/beacon" ascii
$s2 = "Mozilla/5.0 (Windows NT 10.0; SvcAgent)" ascii
$s3 = { 8B 4D ?? 33 C0 8A 04 0E 34 5A 88 04 0F }
condition:
uint16(0) == 0x5A4D and filesize < 3MB and
(1 of ($x*) or 2 of ($s*))
}
Confiance et score
Toutes les règles ne doivent pas déclencher la même réponse. Consignez votre niveau de confiance :
score(0–100) dans meta : élevé pour un mutex ou un chemin PDB unique, plus bas pour des combinaisons comportementales ;- nommage :
MAL_pour un malware confirmé,SUSP_ouHUNT_pour des pistes de chasse (voir les conventions) ; - tags de routage, comme
memorypour les règles réservées aux scans mémoire.
Chasser sur tout le parc
Diffusez les règles avec l’outil qui atteint déjà vos postes : fonctions d’IOC personnalisés de l’EDR, scanners de type THOR, ou artefacts Velociraptor comme Windows.Detection.Yara.Process (mémoire des processus) et Generic.Detection.Yara.Glob (fichiers correspondant à un glob). Commencez par un petit groupe pilote pour repérer les faux positifs avant un déploiement global, et limitez tailles et chemins pour garder une charge acceptable.
Mémoire ou disque
- En mémoire, les chaînes sont souvent déchiffrées et le code dépaqueté : des règles muettes sur disque peuvent y correspondre, et inversement.
- Les zones mémoire ne commencent pas par un en-tête de fichier : les contrôles
uint16(0) == 0x5A4Det les limitesfilesizene s’appliquent pas de la même façon. Écrivez des règles mémoire dédiées, sans contrôle d’en-tête. - Les images mappées des DLL légitimes sont nombreuses et volumineuses : privilégiez des chaînes très spécifiques.
Documenter et partager
Quand une règle quitte l’équipe de réponse, ajoutez ce dont le prochain analyste aura besoin : description, référence, hashes d’échantillons, date et licence. Choisissez un niveau TLP pour la diffusion interne et une licence comme la Detection Rule License pour une publication ; le guide des jeux de règles publics explique l’effet des licences sur la redistribution.
Boucle de retour rapide
Pour itérer vite sans envoyer de preuve nulle part, collez la règle dans l’éditeur, déposez l’échantillon dans le panneau de test, puis lancez le scanner sur un ZIP de fichiers sains issus du même type de poste. Les deux exécutent YARA-X localement dans le navigateur.
FAQ
- Comment écrire une règle YARA à partir d’un échantillon ?
- Extrayez les chaînes et séquences de code propres à l’échantillon, écartez tout ce qui vient du compilateur, du runtime ou de bibliothèques courantes, combinez quelques indicateurs très spécifiques avec un contrôle de type de fichier, puis testez sur des fichiers sains.
- Faut-il scanner le disque ou la mémoire pendant un incident ?
- Les deux si possible. Le disque révèle fichiers déposés et persistance ; la mémoire révèle les implants qui n’existent déchiffrés que dans les processus.
- Que signifie le champ meta score ?
- C’est une convention, utilisée par YARA Forge et plusieurs scanners, qui exprime de 0 à 100 à quel point une correspondance indique une activité malveillante.