YARA 规则匹配思路是什么
YARA 用字符串与字节特征标识样本族,规则由元信息、特征字符串与匹配条件三段组成。写好规则的关键是选样本中稳定且罕见的特征:用编译器自带的通用字符串,会让命中结果迅速失去参考价值。
基本信息
| 用途 | 样本归类与批量扫描 |
|---|---|
| 结构 | meta、strings、condition 三段 |
| 特征选择 | 稳定、罕见、与功能相关 |
| 验证 | 先用正样本与小规模负样本集测试 |
典型使用场景
- 把一次事件中发现的样本特征沉淀成规则
- 在内网批量扫描同族样本
- 与情报中的家族命名对应,便于沟通
- 从内存镜像里匹配无文件落地的样本
- 规则版本管理,支持回溯某次扫描使用了哪版规则
- 把规则命中结果与端点文件清单交叉,确认样本分布范围
基础规则
基础规则
rule family_marker {
meta:
author = "ir-team"
reference = "case-2026-10-12"
strings:
$a = "UniqueC2Tag" ascii
$b = { 4D 5A 90 00 03 00 00 00 }
condition:
$a and $b
}编写要点
| 要点 | 做法 | 常见错误 |
|---|---|---|
| 特征选择 | 选样本中稳定且罕见的字符串 | 使用文件头、通用提示语这类大众串 |
| 条件组合 | 多条件与区间限制降低误报 | 单字符串命中即报警 |
| 验证 | 正样本必中、负样本集不中 | 只测一个样本就发布 |
| 版本管理 | 规则编号与变更留痕 | 规则被改后无法回溯依据 |
规则命中是强线索,但仍要人工核对命中文件的上下文(路径、数字签名、是否企业自研程序),短字符串规则尤其如此。
加壳样本的明文特征被压缩或加密,需要配合内存特征或多条件规则,单靠文件特征容易漏检。
字符串特征建议加上偏移或长度修饰,并优先选样本中稳定出现多次的特征,这样对变形样本的漏检更少。
规则发布前先用历史样本集回测一遍,能提前暴露误报与漏报,比上线后被动调整成本低得多。