导语:今天,机器学习使用主机,网络和基于云的反恶意软件组件上的各种数据来增强恶意软件检测。
1、恶意软件检测的基本方法
高效,强大且可扩展的恶意软件识别模块是每个网络安全产品的关键组成部分。 恶意软件识别模块根据它们在其上收集的数据来确定对象是否是威胁。 可以在不同阶段收集这些数据:
·预执行阶段,是您可以在不执行文件的情况下判断文件的任何内容。 这可以包括可执行文件格式描述,代码描述,二进制数据统计,文本串和通过代码仿真提取的信息以及其他类似数据
·执行后阶段,数据传达有关系统中的过程活动引起的行为或事件的信息
在网络时代的早期阶段,恶意软件威胁的数量相对较低,简单的手工制作预执行规则通常足以检测威胁。 但伴随着时间的推移,恶意软件流的巨大增长不允许反恶意软件解决方案仅依赖昂贵的手动创建检测规则。
AV-TEST 2017~2018年,最近10年的恶意软件数量
反恶意软件公司很自然地开始使用机器学习来增强其恶意软件检测和分类,这是一个在图像识别,搜索和决策方面取得巨大成功的计算机科学领域。 今天,机器学习使用主机,网络和基于云的反恶意软件组件上的各种数据来增强恶意软件检测。
2、机器学习
机器学习算法发现并形式化了它所看到的数据的基础原理。 有了这些知识,算法就可以推算出以前看不见的样本的属性。 在恶意软件检测中,以前看不见的样本可能是一个新文件。 它的隐藏属性可能是恶意软件或良性。 数据属性的数学形式化原则集称为模型。
无人监督的学习
一种机器学习方法是无监督学习。 在此设置中,我们只给出一个没有正确答案的数据集。 目标是发现数据结构或数据生成规律。 一个重要的例子是聚类。 群集是一项包括拆分的任务将数据集合成类似对象的组。 另一项任务是表示学习 – 这包括基于对象的低级描述(例如,自动编码器模型)为对象构建信息性特征集。
网络安全供应商可以使用大量未标记的数据集和成本他们的专家手动标签很高 – 这使得无监督学习对于威胁检测很有价值。 聚类可以帮助优化手动标记新样品的工作量。 通过信息嵌入,我们可以减少在我们的管道中使用下一个机器学习方法所需的标记对象的数量:监督学习
监督学习
监督学习是在每个对象的数据和正确答案都可用时使用的设置。 目标是使模型适合为新对象产生正确答案。
监督学习包括两个阶段:
·训练模型并将模型拟合到可用的训练数据。
·将训练后的模型应用于新样本并获得预测。
任务:
·我们获得了一组对象
·每个对象都用特征集X表示
·每个对象都映射到正确答案或标记为Y.
在训练阶段使用该训练信息,此时我们搜索最佳模型,该模型将为给定特征集X'的先前未见过的对象产生正确的标签Y'。
在恶意软件检测的情况下,X可以是文件内容或行为的一些特征,例如,文件统计和使用的API函数的列表。 标签Y可能是“恶意软件”或“良性”,甚至是更细粒度的分类,例如病毒,特洛伊木马 – 下载程序或广告软件。
在“训练”阶段,我们需要选择一些模型族,例如神经网络或决策树。 通常,系列中的每个模型都由其参数决定。 训练意味着我们使用一组特定参数从所选族中搜索模型,该参数根据某个度量为列车对象提供最准确的答案。 换句话说,我们“学习”定义从X到Y的有效映射的最佳参数。
在我们训练模型并验证其质量后,我们已准备好进行下一阶段 – 将模型应用于新对象。 在此阶段,模型的类型及其参数不会更改。 该模型仅产生预测。在恶意软件检测的情况下,这是保护阶段。 供应商通常会向用户提供经过培训的模型,产品会根据模型预测自主决策。 错误可能会给用户带来毁灭性后果 – 例如,删除操作系统驱动程序。 供应商正确选择模型系列至关重要。 供应商必须使用有效的培训程序来找到具有高检测率和低误报率的模型。
深度学习
深度学习是一种特殊的机器学习方法,有助于从低级数据中提取高级抽象的功能。 深度学习在计算机视觉,语音识别,自然语言处理和其他任务。 当您希望机器从低级数据推断出高级含义时,它最有效。 对于像ImageNet这样的图像识别挑战,基于深度学习的方法已经超越了人类
网络安全供应商尝试应用深度学习来识别低级数据中的恶意软件是很自然的。 深度学习模型可以学习复杂的特征层次结构,并将恶意软件检测管道的各个步骤合并到一个可以端到端训练的实体模型中,以便同时学习模型的所有组件。
3、机器学习在网络安全中的应用
要求有庞大的具有代表性数据集
重要的是要强调这种方法的数据驱动特性。 创建的模型在很大程度上取决于它在训练阶段看到的数据,以确定哪些特征在统计上与预测正确的标签相关。 我们将解释为什么制作具有代表性的数据集如此重要。 想象一下,我们收集了一套训练集,而且我们忽略了这样一个事实:偶尔所有大于10 MB的文件都是恶意软件而不是良性文件,对于真实世界文件来说肯定不是这样。 在训练时,模型将利用数据集的此属性,并将了解任何大于10 MB的文件都是恶意软件。 它将使用此属性进行检测。 当此模型应用于现实世界数据时,会产生许多误报。 为了防止这种结果,我们需要将更大尺寸的良性文件添加到训练集中。 然后,该模型将不依赖于错误的数据集属性。
概括一下,我们必须在一个数据集上训练我们的模型,该数据集正确地表示模型在现实世界中的工作条件。 这使得收集代表性数据集的任务对于机器学习至关重要。
训练的模型必须是可以解释的
现在使用的大多数模型系列,如深度神经网络,被称为黑盒模型。 黑盒模型被赋予输入X,它们将通过难以解释的复杂操作序列产生Y. 一个人。 这可能会在现实应用中造成问题。 例如,当发生误报时,我们想了解它为什么会发生,我们会问:训练集或模型本身有问题吗? 模型的可解释性决定了我们管理它,评估其质量和纠正其操作的容易程度。
误报率必须足够低
当算法错误地将恶意标签用于良性文件时,会出现误报。 我们的目标是使误报率尽可能低,或“零”。这对于机器学习应用来说是不典型的。 这很重要,因为即使一百万个良性文件中的一个误报也会给用户带来严重后果。 由于世界上有很多干净的文件,它们不断出现,这很复杂。 为了解决这个问题,重要的是对机器学习模型和将在培训期间优化的指标提出高要求,明确关注低误报率(FPR)模型。
模型多样化
这仍然是不够的,因为之前看不到的新的良性文件有时可能被错误地检测到。 我们将此考虑在内并实施灵活的模型设计,使我们能够即时修复误报,而无需对模型进行完全重新训练。 这方面的示例在我们的执行前和执行后模型中实现,这些模型将在以下部分中介绍。
算法必须快速适应恶意软件编写者的对抗行为
在恶意软件检测域之外,机器学习算法在固定数据分布的假设下定期工作,这意味着它不会随时间变化。 当我们有足够大的训练集时,我们可以训练模型,以便有效地推理测试集中的任何新样本。 随着时间的推移,模型将继续按预期工作,在将机器学习应用于恶意软件检测之后,我们必须面对这样一个事实,即我们的数据分布不是固定的:
·主动攻击者(恶意软件编写者)不断致力于避免检测和发布新版本的恶意软件文件,这些文件与在培训阶段看到的版本大不相同。
·成千上万的软件公司生产新型的良性可执行文件,这些可执行文件与以前已知的类型有很大不同。 关于这些类型的数据在训练集中缺乏,但该模型需要将其识别为良性。
这导致数据分布的严重变化,并且在任何机器学习实现中引起检测率随时间降低的问题。 在反恶意软件解决方案中实施机器学习的网络安全供应商面临着这个问题,需要克服它。 该架构需要灵活,并且必须允许在再培训之间“即时”进行模型更新。 供应商还必须拥有有效的流程来收集和标记新样本,丰富培训数据集并定期重新培训模型。根据数据验证,在一个月以后模型的准确率降低到65%
4、我们的方法
使用相似性散列检测预执行中的新恶意软件
在反病毒行业兴起之际,计算机上的恶意软件检测基于启发式功能,通过以下方式识别特定恶意软件文件:
·代码片段
·哈希的代码片段或整个文件
·文件属性
·以及这些功能的组合。
主要目标是创建一个可靠的指纹 – 一系列功能 – 可以快速检查的恶意文件。 此前,此工作流程需要手动创建检测规则,方法是仔细选择代表性的字节序列或发送恶意软件的其他功能。 在检测期间,产品中的抗病毒引擎检查文件中是否存在恶意软件指纹,以防止存储在防病毒数据库中的已知恶意软件指纹。但是,恶意软件编写者发明了服务器端多态等技术。 这导致每天发现数十万个恶意样本。 同时,使用的指纹对文件中的微小变化很敏感。 现有恶意软件的微小变化使其无法发挥作用。 之前的方法很快变得无效,因为:
·手动创建检测规则无法跟上新出现的恶意软件流程。
·针对已知恶意软件库检查每个文件的指纹意味着在分析人员手动创建检测规则之前,您无法检测到新的恶意软件。
我们对能够抵御文件中的小变化的功能感兴趣。 这些功能可以检测恶意软件的新修改,但不需要更多资源进行计算。 性能和可伸缩性是反恶意软件引擎处理的第一阶段的关键优先级。
为了解决这个问题,我们专注于提取可能的功能:
·快速计算,例如从文件字节内容或代码反汇编得到的统计信息,
·直接从可执行文件的结构中检索,如文件格式描述。
深度学习对抗罕见的攻击
通常,当在训练集中多次表示恶意和良性样本时,机器学习面临任务。 但是有些攻击非常罕见,我们只有一个用于培训的恶意软件示例。 这是高调目标攻击的典型特征。 在这种情况下,我们使用非常特定的基于深度学习的模型架构。 我们将此方法称为示例网络(ExNet)
这里的想法是我们训练模型以构建输入特征的紧凑表示。 然后我们使用它们来同时训练多个每个示例分类器 – 这些是检测特定类型恶意软件的算法。 深度学习允许我们将这些多个步骤(对象特征提取,紧凑特征表示和本地或每个示例,模型创建)组合到一个神经网络管道中,该管道为各种类型的恶意软件提炼出辨别特征。 该模型可以有效地概括有关单个恶意软件样本和大量干净样本的知识。 然后,它可以检测相应恶意软件的新修改。
深度学习检测行为
在执行前阶段的静态分析具有许多显着优点。 主要优点是对用户来说是安全的。 可以在开始对真实用户的计算机执行操作之前检测对象。 但它面临着高级加密,混淆技术以及各种高级脚本语言,容器和无文件攻击场景的使用问题。 这些是执行后行为检测发挥作用的情况。
我们还使用深度学习方法来解决行为检测的任务。 在执行后阶段,我们正在处理威胁行为引擎提供的行为日志。 行为日志是在流程执行期间发生的系统事件序列,以及相应的参数。 为了检测观察到的日志数据中的恶意活动,我们的模型将获得的事件序列压缩为一组二进制向量。 然后,它训练深度神经网络来区分干净和恶意日志。
1、日志转换为二分行为图。该图包含两种类型的顶点:事件和参数。 在每个事件和参数之间绘制边缘,它们一起出现在日志中的同一行中。 这种图表表示比初始原始数据紧凑得多。 它对通过跟踪相同多处理程序的不同运行或分析过程的行为混淆所导致的任何线条排列保持稳健。
2、之后,我们会自动从此图中提取特定的子图或行为模式。 每个模式包含与过程的特定活动相关的事件子集和相邻参数,例如网络通信,文件系统探索,系统寄存器的修改等。
3、我们将每个“行为模式”压缩为稀疏二进制向量。此向量的每个组件负责在模板中包含特定事件或参数的标记(与Web,文件和其他类型的活动相关)。
4、训练的深度神经网络将行为模式的稀疏二进制向量转换为称为模式嵌入的紧凑表示。 然后通过采用元素最大值将它们组合成单个向量或对数嵌入。
5、最后,基于日志嵌入,网络预测日志的可疑性。
所使用的神经网络的主要特征是所有权重的正面性和所有激活函数的单调性质。 这些属性为我们提供了许多重要的优势:
·我们的模型的怀疑分数输出仅在从日志处理新行时随时间增长。 因此,恶意软件无法通过与其主要负载并行执行额外噪声或“干净”活动来逃避检测。
·由于模型的输出在时间上是稳定的,因此我们可能会受到保护,以防止在扫描干净日志时预测的波动引起的最终误报。
·在单调空间中处理日志样本使我们能够自动选择导致检测的事件并更方便地管理错误警报。
这样的方法使我们能够训练能够使用高级可解释行为概念进行操作的深度学习模型。 这种方法可·安全地应用于整个用户环境的多样性,并在其体系结构中包含虚假警报修复功能。 总而言之,所有这一切为我们提供了行为检测最复杂的现代威胁的有力手段。
5、在云端基础架构中的应用
聚类传入的恶意软件样本
每天有数十万个样本进入公有云以及手动注释新类型样本的高成本,减少分析师需要查看的数据量成为一项至关重要的任务。 使用高效的聚类算法,我们可以从难以忍受的单独的未知文件数量转换为合理数量的对象组。 这些对象组的一部分将根据其中已注释的对象的存在自动处理。
所有最近收到的传入文件都通过我们的实验室内恶意软件检测技术进行分析,包括执行前和执行后。 我们的目标是尽可能多地标记对象,但某些对象仍然是未分类的。 我们想要标记它们。 为此,所有对象(包括标记的对象)都由多个特征提取器处理。 然后,它们通过几种聚类算法(例如K-means和dbscan)一起传递,具体取决于文件类型。 这会产生类似对象的组。
此时,我们面临四种不同类型的带有未知文件的结果集群:
1)包含恶意软件和未知文件的集群;
2)包含干净和未知文件的集群;
3)包含恶意软件,干净和未知文件的集群
4)仅包含未知文件的集群。
对于类型1-3的聚类中的对象,我们使用其他机器学习算法(如置信传播)来验证未知样本与分类样本的相似性。 在某些情况下,即使在类型3的集群中,这也是有效的。这允许我们自动标记未知文件,仅为人类留下类型4和部分类型3的集群。 这导致每天所需的人类注释急剧减少。
蒸馏检测手段
我们在实验室中检测恶意软件的方式与针对用户产品的最佳算法不同。 一些最强大的分类模型需要大量资源,如CPU / GPU时间和内存,以及昂贵的功能提取器。
在实验室中保持和运行那些“重型”模型更有效。 一旦我们知道某个特定文件是恶意软件,我们就会使用从模型中获得的知识来训练一些可以在我们的产品中使用的轻量级分类器。
训练过程:
良性样本/恶意样本 -> 耗时的原始数据提取(sandbox logs/disassembler log )-> 训练->大规模预测模型
升级检测过程:
未知样本->使用大规模预测模型->判断出良性/恶意样本-> 轻量级功能提取(文件结构,内容统计,API等)->训练轻量模型
1.在我们的实验室中,我们首先从标记文件中提取一些耗时的功能,并在其上训练“重型”实验室模型。
2.我们采用一组未知文件,并使用我们的“重型”实验室模型来标记它们。
3.然后,我们使用新标记的文件来增加训练集轻量级分类模型。
4.我们为用户产品提供轻量级模型。
通过蒸馏流程,我们可以有效地向用户输出有关新的和未知威胁的知识。
5、总结
拥有正确的数据。这是机器学习的动力。数据必须具有代表性,与当前恶意软件格局相关,并在需要时正确标记。我们成为了提取和准备数据以及训练算法的专家。我们用数十亿个文件样本进行了充分的收集,以促进机器学习。
了解理论机器学习以及如何将其应用于网络安全。我们了解机器学习的总体运作方式,并了解该领域出现的最先进的方法。另一方面,我们也是网络安全方面的专家,我们预见到每种创新理论方法对网络安全实践的价值。
了解用户的实际需求,并成为将机器学习应用于帮助用户满足其需求的产品的专家。我们有效,安全地进行机器学习。我们构建了主要由网络安全市场所需的创新解决方案。
获得足够的用户群。这引入了“众包”对检测质量的影响,并为我们提供了反馈,如果我们对或错,我们自己要知道。
保持检测方法的多层次协同作用。只要今天的高级威胁攻击载体非常多样化,网络安全解决方案就应该在多个层面提供保护。在我们的产品中,基于机器学习的检测与现代网络安全保护的多层次控制中的其他检测协同工作。