终端防御规避技术-9.病毒扫描器与YARA
进程通知、对象回调、minifilter、WFP、ETW,全是被动接收。扫描器是另一套思路——它不等事件,而是主动去翻文件里到底写了什么。EDR 里负责"这个文件到底坏不坏"的那一环,通常就是扫描引擎加规则库。理解了扫描的触发方式和规则怎么写,才能看清签名检测的边界在哪。
一、扫描器简史
病毒扫描器不是一开始就长现在这样,它的形态是被病毒逼出来的。
- 1980 年代末:主流是引导区病毒,感染软盘的引导扇区。扫描器做的最简单的事,就是把已知病毒的一段固定字节拿去和文件比对。命中就报警,不命中就放过。
- 1990 年代:多态病毒出现,每次感染都改自己的字节,固定字符串全部失效。扫描器开始引入通配符、正则,以及仿真(emulation)——把样本放进一个模拟的 CPU 和系统环境里跑几步,看它自己解密出什么。这是后来沙箱和动态分析的前身。
- 2000 年代:加壳、变形、蠕虫大规模爆发。扫描器加入通用解包器(unpacker)和启发式(heuristics),不再只认已知字节,开始看"像不像"。
- 2010 年代至今:云查杀(把哈希和特征发到云端比对)、机器学习分类器、行为监控、内存扫描、信誉评分。
一句话概括这条演进:扫描器从"认识坏文件的字节"进化到"认识坏文件的动作"。但只要还依赖已知特征,它就永远落后于最新样本——这是签名检测的结构性短板,不是实现问题。
一个文件被扫描器处理,大致走这条链:
文件落地
| 引擎读取
v
解包 / 解码(处理加壳、压缩、编码)
|
| 特征提取(哈希、字节序列、字符串、PE 结构)
v
与规则库匹配
|
命中 -> 报警 / 隔离 / 上报云端
未命中 -> 放行,可能进入深度分析队列这条链上任何一环都可以成为规避入口:让文件不落地、让解包失败、让特征变形、让规则匹配不上,或者让扫描根本没机会发生。
二、两种扫描模式
| 维度 | 按需扫描(On-Demand) | 按访问扫描(On-Access) |
|
参与讨论