瑞星安全研究院院长叶超
我们所面对安全问题的规模越来越大,全球恶意软件规模呈不断上涨的趋势,目前年增量已接近2亿,新增恶意软件每月在1千万左右,而这仅仅是AVTEST的公开数据,实际数量更大。
每月新增恶意软件在1千万左右
面对如此困难的挑战,人们作出了不同的选择。有的人选择把问题缩小,只应对其中一小部分;有的人选择把问题简单化,用巨大的哈希库跟随;还有的人选择把问题抛给别人,买一个能解决这个问题的。
面对来势汹汹的恶意软件,我们到底该如何应对?
瑞星的秘密武器是三大核心引擎+工业化运营+人工智能赋能。所谓的三大核心引擎即睿擎、云脑、鱼雷。“睿擎”是一款由纯C++编写的恶意软件检测引擎。它具备良好的平台兼容性、丰富的文件格式支持能力和强大的恶意软件检测能力。“云脑”是一个在线的恶意软件检测服务,通过HTTPS方式进行访问获取服务。“云脑”不直接接受文件,而是接受经过其配套的本地组件提取的文件摘要,网络数据交互量极小。而“鱼雷”是一款小巧的面向网络流的恶意软件检测引擎,具备内存占用小、速度快的特点,是网络侧提供基础的恶意软件检测能力的绝佳方案。通过工业化及智能化后的效果表明,每日新增非PE类恶软检出对比结果显示检出数 / 检出最大值呈现快速增长趋势,而病毒库大小只需要20~30M,参与运营人力仅为一人。
引擎的工业化运营 :获得极致的运营效率
恶意代码研究是门技术活,恶意代码检测也更像是手艺活,“手工”依然是流行的恶意代码检测引擎的运营方式。“手工制作”有它的优势,它可以将人的智慧体现出来,会出现质量极好的“特征”。但“手工制作”的劣势也十分明显,低下且与对手发展趋势不匹配的效率,不可控的误报概率且太依赖于人的智慧、经验,否则如同“垃圾”。
2008年至今,大多数公司均在采用的技术,用一套强大的后台系统鉴定每日新产生的恶意软件,将恶意软件的哈希值或指纹,送到云端。云端运行着一个巨大的哈希库,客户端联网查询过的目标对象是否是恶意的结果。从捕获样本到能检测,通常在分钟级。云端可收录无限黑白文件,且不用担心分发问题。但检测手段有限,通常只能使用哈希类,对未来出现的恶意代码缺乏前瞻性。大多数公司的云引擎更专注于二进制恶意软件,无法很好地应对离线环境、低资源环境,核心能力是捕获能力和云端数据库规模。
通过一系列的自动化运营过程的研发,我们在两年内完成了引擎的无人运营。做到了“手工”无法企及的:
●高效率:吞吐量在每日百万级,且可简单扩展
●不间断:全球零时差,7*24小时
●高可靠:全程白名单压制,误报率可量化
以及传统云引擎无法比拟的:
●高质量:通常具备1比50的检出比
●小尺寸:产出为共性特征以及逻辑特征
引擎的AI赋能:获得领先对手一步的能力
2012年至今瑞星一直在持续地研究,严谨地使用。不断尝试跨过机器学习在恶软检测领域应用的最大障碍:不可控的误报问题。2017年,我们推出了针对 Windows 可执行文件AI引擎,使用随机森林模型,训练于亿级样本,我们称之为RDM+引擎。随机森林通常仅对训练集合表现优异,在训练集足够大的情况下,这恰恰是优点。在生产环境中使用特征向量的哈希值来标注误报,在预测前返回正确结果,等待下次预测模型更新。在各阶段训练过程中,优选黑、增加白都可以使整个模型倾向于“非黑”的预测结果。结合其他各类遥感数据途径,以最快的速度发现潜在的误报,并进行遮蔽和训练集更新。
目前所有采用人工智能技术的厂商,他们都只给出“是不是”,或置信度,而不是恶软的家族名。而我们尝试给出更好地答案,即特征向量哈希映射到恶软家族名,向量值稍变,则无效。将特征向量用于另一个过程是最邻近搜索(NNS),并把问题转化为在海量已命名向量中极快地找出最相似的向量。最终将AI技术应用于云端,创造出更具智能化的云引擎。
从2015年开始,恶意代码检测的算法,均优先考虑面向顺序IO,而不是传统的随机IO。
对此我们推出了针对Windows/Linux二进制程序文件:放弃AC等基于状态机的算法,采用多路哈希算法,损失部分性能从而获得极致的空间利用率;从敏感点指纹自动化运营中,自动抽取被标记为恶意的区域,形成二进制特征串。让其成为睿擎工业化运营的副产品;不定长二进制特征串被压缩为复合哈希值,仅需少量空间便可存放数千万特征。
针对脚本/网页等文本类恶意代码,与本地引擎中的检测机制完全一致:基于顺序IO,基于状态机的文档结构解析和代码主干提取;恶意代码特征同样来自于工业化运营,无需人工参与;代码主干同样被压缩为复合哈希,以小空间容纳大规模特征;匹配采用二分查找,速度极快。
现在的瑞星选择直面问题,转变思路,求索验证。快速完成了检出能力的激增,几乎实现了全线无人化运营,误报概率已远低于人工运营。
(本文根据瑞星安全研究院院长叶超在2019第四届中国网络信息安全峰会上的演讲内容整理,未经本人确认。)