通过深度学习(机器学习框架中的一种算法)来进行威胁检测是一个大胆且有效的创新。如今 Microsoft Threat Protection已经成功通过多个基于深度学习的分类器来检测恶意powershell脚本。
在继续探索新颖的检测技术时,来自微软的Microsoft Threat Protection团队和因特尔实验室的研究人员正在合作研究深度学习在恶意软件分类中的应用场景,特别是:
- 利用深度学习技术,尝试通过计算机视觉来进行静态的恶意软件分类
- 根据模型大小优化深度学习技术并利用平台硬件能力改进深度学习在恶意软件检测方面的性能
在合作的第一部分中,研究人员在因特尔已有的静态恶意软件分类模型进行deep transfer learning。并且利用Microsoft的真实数据集来确定机器视觉在而已软件分类问题上的实际可行度。
此项研究的原理是将恶意软件的二进制文件绘制为灰度图像,然后根据图像的纹理和结构模式将该文件有效分类为良性或恶意。并且尝试将恶意的二进制文件聚类到各自的家族。
研究人员使用了一种名为静态恶意软件图像网络分析(STAMINA)的方法来检测Microsoft提供的真实数据集,经过研究结果表明,STAMINA方法可以较高精度的检出恶意软件。
这项研究结果和进一步的细节可以在这里找到。由于该结果较为良好,我们设置了进一步的合作探索。
深度学习在静态分析恶意样本并分类中所起的作用
虽然静态分析通常与传统的检测方法相关联,但它仍然是AI驱动的恶意软件检测的重要组成部分。静态分析对预执行检测类的引擎特别有用,通过静态分析的方法,引擎可以无需运行应用程序或者监控应用程序的行为就完成对代码的分解。
静态分析会产生有关文件的元数据,然后在客户端和云中的机器学习模型会分析元数据是否为恶意文件。通过静态分析的方式,大多数而已软件在还未运行的时候就会被捕获。
面对更复杂的特征则需要动态分析和行为分析,不过这也得以静态分析为基础,通过静态分析,可以建立更全面的检测。因此,寻求大规模且高效的静态分析方法有益于恶意软件的整体检出。
为此,我们此次研究借鉴了计算机视觉领域的知识,尝试构建增强的静态软件检测框架。该框架利用deep transfer learning的方式直接对图像表示的可执行二进制文件进行训练。
分析恶意软件的图像
为了确定STAMINA方法的实用性,该方法假设可以通过对表示为图像的恶意代码进行静态分析来对恶意软件进行大规模分类。该研究主要包括了三个内容,分别是图像转换、transfer learning、评估。
首先,研究人员将二进制文件转换为图像,在此步骤中涉及了像素转换、重塑和调整大小。通过为每个字节分配一个介于0到255之间的值(对应像素强度),将二进制文件转换为一维像素流。接着,通过文件大小确定图像的宽度和高度,将每个像素流转换为二维图像。
第二步是transfer learning,也就是迁徙学习。这是机器学习的一个分支,,它的目的是在获取一定的额外数据或者是存在一个已有的模型的前提下,将其应用在新的且有一定相关性的task。在几种不同的计算机视觉应用程序中,transfer learning已经取得了巨大的成果。
transfer learning无需根据不同的体系结构而去搜索最佳参数,从而大大缩短了训练时间,且模型保持着较高的分类性能。
在本次研究中,研究人员使用Inception-v1作为基本模型。
Microsoft为本次研究提供了220万个恶意样本。
样本以6:2:2的比例分别用于训练、验证和测试。
最后,我们对系统的性能进行了测量,并输出了一分详细的报告。
报告的内容包括特定假阳性范围内的召回率、准确度、F1评分、机器工作曲线(ROC)下的区域。
数据
根据研究表明,将STAMINA应用于真实世界的保留测试数据集,以0.1%的假阳性率实现了87.05%的召回率。以2.85%的假阳性率实现了99.66%的召回率和99.07%的准确性。这个结果表明,将transfer learning用于恶意样本分类毫无疑问是可行的。它绕过了搜索最佳参数的过程,节约了计算时间,可以大大加强训练速度。
此外,该研究还强调了基于样本的方法(如STAMINA)和基于元数据的分类方法各自的优缺点。例如STAMINA可以深入样本并提取可能未在元数据中捕获的其他信息,但是对于尺寸较大的应用程序来讲,要将数十亿个像素转换为JPEG图像然后再调整其大小,毫无疑问STAMINA的效率极低,在这种情况下,使用元数据检测就会更有优势。
结论与未来的工作
将深度学习应用到恶意软件检测中,推动了Microsoft在而恶意软件识别方面的创新。
与因特尔实验室的研究人员合作是微软安全研究人员和数据科学家继续探索新颖方法提高整体安全性的方式之一。
这项联合研究是开展更多协同工作良好的起点,例如研究人员计划在平台加速优化上进一步合作,以使得深度学习模型可在客户端计算机部署而尽可能小的影响客户端机器性能,关于这部分研究内容希望大家静候佳音。