终端防御规避技术-9.病毒扫描器与YARA

进程通知、对象回调、minifilter、WFP、ETW,全是被动接收。扫描器是另一套思路——它不等事件,而是主动去翻文件里到底写了什么。EDR 里负责"这个文件到底坏不坏"的那一环,通常就是扫描引擎加规则库。理解了扫描的触发方式和规则怎么写,才能看清签名检测的边界在哪。

一、扫描器简史

病毒扫描器不是一开始就长现在这样,它的形态是被病毒逼出来的。

  • 1980 年代末:主流是引导区病毒,感染软盘的引导扇区。扫描器做的最简单的事,就是把已知病毒的一段固定字节拿去和文件比对。命中就报警,不命中就放过。
  • 1990 年代:多态病毒出现,每次感染都改自己的字节,固定字符串全部失效。扫描器开始引入通配符、正则,以及仿真(emulation)——把样本放进一个模拟的 CPU 和系统环境里跑几步,看它自己解密出什么。这是后来沙箱和动态分析的前身。
  • 2000 年代:加壳、变形、蠕虫大规模爆发。扫描器加入通用解包器(unpacker)和启发式(heuristics),不再只认已知字节,开始看"像不像"。
  • 2010 年代至今:云查杀(把哈希和特征发到云端比对)、机器学习分类器、行为监控、内存扫描、信誉评分。

一句话概括这条演进:扫描器从"认识坏文件的字节"进化到"认识坏文件的动作"。但只要还依赖已知特征,它就永远落后于最新样本——这是签名检测的结构性短板,不是实现问题。

一个文件被扫描器处理,大致走这条链:

文件落地
   |  引擎读取
   v
解包 / 解码(处理加壳、压缩、编码)
   |
   |  特征提取(哈希、字节序列、字符串、PE 结构)
   v
与规则库匹配
   |
命中 -> 报警 / 隔离 / 上报云端
未命中 -> 放行,可能进入深度分析队列

这条链上任何一环都可以成为规避入口:让文件不落地、让解包失败、让特征变形、让规则匹配不上,或者让扫描根本没机会发生。

二、两种扫描模式

| 维度 | 按需扫描(On-Demand) | 按访问扫描(On-Access) |
|

参与讨论