首页> 中国专利> 一种容器内恶意软件静态检测系统及方法

一种容器内恶意软件静态检测系统及方法

摘要

本发明公开了一种容器内恶意软件静态检测系统及方法,包括以下步骤:步骤1:无代理提取容器内待检测软件;步骤2:提取API调用序列;步骤3:构建深度学习检测模型,深度学习检测模型Word2vec网络、LSTM网络和CNN网络;Word2vec网络将API调用序列向量化,LSTM网络提取不定长序列数据的语义特征输出定长语义向量,CNN网络提取定长语义向量的多维局部特征并进行分类,得到分类结果;步骤4:训练深度学习检测模型得到层级恶意软件检测模型;步骤5:将API调用序列输入层级恶意软件检测模型,得到检测结果;本发明分层抽取数据特征来应对插入或修改代码逻辑等混淆攻击,无需修改容器和主机操作系统,可保障容器云平台的可用性和租户的数据安全性。

著录项

  • 公开/公告号CN110008703A

    专利类型发明专利

  • 公开/公告日2019-07-12

    原文格式PDF

  • 申请/专利权人 四川大学;

    申请/专利号CN201910275571.9

  • 申请日2019-04-08

  • 分类号

  • 代理机构成都信博专利代理有限责任公司;

  • 代理人王沙沙

  • 地址 610065 四川省成都市武侯区一环路南一段24号

  • 入库时间 2024-02-19 11:59:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-24

    授权

    授权

  • 2019-08-06

    实质审查的生效 IPC(主分类):G06F21/56 申请日:20190408

    实质审查的生效

  • 2019-07-12

    公开

    公开

说明书

技术领域

本发明涉及虚拟化安全技术领域,具体涉及一种容器内恶意软件静态检测系统及方法。

背景技术

容器作为一种轻量级的虚拟化工具,具有启动速度快、资源消耗少和运行环境一致等特点;然而由于容器技术实现的是操作系统级别的虚拟主机环境,其资源隔离性低和共享内核的特性给容器和云平台引入了新的安全风险;容器中的恶意软件能够通过容器或宿主机的漏洞实施攻击,攻击程序可以篡改容器自身的服务,突破隔离的限制直接攻击共驻容器,甚至可以逃逸至宿主机获得超级用户权限进而威胁整个云平台的安全,故检测容器中的恶意软件对于维护容器云平台可用性和租户数据安全性具有重要的现实意义。

目前,仅有少数检测工具实现了对容器的安全扫描,如Docker SecurityScanning、CoreOS Clair和Twistlock等,然而这类工具都只针对容器镜像中的已知CVE(Common Vulnerabilities and Exposures,公共漏洞和风险)漏洞,并不考虑容器系统内的未知恶意软件。为了提高恶意软件检测模型的泛化能力,多数研究都基于传统机器学习方法进行分类检测,但该方法受特征工程限制。

现有方法多针对Android和Windows软件,较少研究容器环境下恶意Linux软件检测,且在检测精度和复杂度等方面还存在诸多不足。

发明内容

本发明针对现有技术的不足提出了一种无需修改容器和主机操作系统,也不用任何关于容器内系统结构和相应服务的先验知识,可保障容器云平台的可用性和租户的数据安全性的容器内恶意软件静态检测系统及方法。

本发明采用的技术方案是:一种容器内恶意软件静态检测方法,包括以下步骤:

步骤1:无代理提取容器内待检测软件;

步骤2:提取步骤1得到待检测软件的API调用序列;

步骤3:构建深度学习检测模型,深度学习检测模型Word2vec网络、LSTM网络和CNN网络;Word2vec网络将API调用序列向量化,LSTM网络提取不定长序列数据的语义特征输出定长语义向量,CNN网络提取定长语义向量的多维局部特征并进行分类,得到分类结果;

步骤4:训练步骤3得到的深度学习检测模型得到层级恶意软件检测模型;

步骤5:将步骤2得到的API调用序列输入步骤4训练得到的层级恶意软件检测模型,得到检测结果。

进一步的,所述步骤1的提取过程如下:

S11:根据输入的容器镜像或容器的唯一标识,在主机用户层获取待检测容器源数据,从中筛选出Lowerdir和Upperdir路径;

S12:将Lowerdir和Upperdir按照层次关系进行格式拼接得到拼接Lowerdir,并新建一个空的Upperdir;

S13:根据Docker系统信息获取存储驱动类型,得到相应的文件系统类型,将拼接的Lowerdir和空的Upperdir联合挂载到一个处于待测容器外部的临时容器视角目录;

S14:筛选临时容器视角目录下的可执行文件,将其绝对路径传给步骤2。

进一步的,所述步骤2具体过程如下:

S21:划分基本块;

S22:获取基本块间调用关系有向有环图;

S23:合并同一函数内的基本块,对步骤S22中的有向有环图进行部分边的合并,得到每个函数内部的函数调用序列有向有环图;

S24:遍历函数调用序列有向有环图,得到程序整体API调用序列。

进一步的,所述步骤S23具体过程如下:

从ELF文件代码段的起始节点开始遍历基本块调用关系有向有环图,若块起始地址和块所属函数起始地址相同,则该块为所属函数的起始块,得到函数的起始块集合N;遍历起始块集合,以每个块为起始进行深度递归搜索,在递归过程中以遇到N中的块为终止条件;合并同一函数内的基本块,对块间调用关系图进行部分边的合并,得到每个函数内部的函数调用序列有向有环图。

进一步的,所述步骤S24从程序起始函数节点开始执行深度优先遍历函数调用序列有向有环图,在此过程中去除普通函数保留系统API,并设置路径长度阈值、API调用序列长度阈值和每个节点的访问阈值。

进一步的,所述步骤3中Word2vec网络将每个API都映射为固定较低维度的特征向量,按序拼接这些特征向量形成LSTM的输入;LSTM网络采用读取整个不定长序列后产生单个特征输出的循环网络设计模式,提取序列数据的语义特征,将隐藏层输出的定长语义向量作为CNN的输入;CNN网络将定长语义向量通过卷积核沿序列进行卷积计算生成多个Feature Map,然后通过最大池化选取每个Feature Map中最重要的特征,将池化后的特征全连接后接入softmax回归层得到分类结果。

进一步的,所述步骤4训练过程中计算理论类别输出和模型输出的交叉熵,采用Adam优化算法不断更新网络权重,得到层级恶意软件检测模型。

一种容器内恶意软件静态检测的系统,包括待测软件提取模块、特征提取模块、数据建模模块和恶意软件检测模块;

待测软件提取模块输入容器镜像或容器的唯一标识,根据主机存储驱动类型以无代理的方式分层处理输入的各层文件系统内容,提取出待测软件;

特征提取模块对输入的软件进行反汇编,得到基本块调用关系有向有环图,根据代码走向处理基本块之间的调用顺序,通过合并基本块得到每个函数内部的函数调用序列有向有环图,深度优先遍历该图获取程序整体API调用序列作为特征属性;

数据建模模块,构建Word2vec+LSTM+CNN层级网络,训练得到恶意软件检测模型;

恶意软件检测模块提取待测软件的API调用序列,输入构建得到的恶意软件检测模型,得到模型分类结果。

本发明的有益效果是:

(1)本发明深度学习检测模型采用Word2vec+LSTM+CNN的层级网络提取多维特征;分层抽取数据特征来应对插入或修改代码逻辑等混淆攻击;

(2)本发明根据基本块的直接调用关系分析代码走向获取API调用序列特征,限制序列最大长度和每个节点的访问次数解决路径爆炸问题;并可通过保存已分析子序列解决路径重复分析问题;

(3)本发明结合容器底层存储驱动和相应的内核文件系统实现,针对容器镜像、未运行和运行中容器以无代理方式分层处理各层文件。避免了提取过程造成镜像层或容器层文件受损、修改主机内核以及安装代理程序扩大容器攻击面并导致系统可移植性差的问题。

附图说明

图1为本发明检测方法流程示意图。

图2为本发明中Docker和OverlayFS的分层关系示意图。

图3为本发明中保留调用的顺序关系方法图。

图4为本发明中恶意软件检测模型结构示意图。

具体实施方式

下面结合附图和具体实施例对本发明做进一步说明。

如图1所示,一种容器内恶意软件静态检测方法,包括以下步骤:

步骤1:无代理提取容器内待检测软件;

分析容器存储驱动和相应文件系统的层次关系,实现在待测容器外部的主机用户层获取容器视角下的文件系统内容,以无代理提取容器内待测软件;

具体过程如下:

S11:根据输入的容器镜像或容器的唯一标识,在主机用户层获取待检测容器源数据,从中筛选出Lowerdir和Upperdir路径;

S12:将Lowerdir和Upperdir按照层次关系进行格式拼接得到拼接Lowerdir,并新建一个空的Upperdir;

S13:根据Docker系统信息获取存储驱动类型,得到相应的文件系统类型,将拼接的Lowerdir和空的Upperdir联合挂载到一个处于待测容器外部的临时容器视角目录;

S14:筛选临时容器视角目录下的可执行文件,将其绝对路径传给步骤2,待分析完毕后,取消挂载临时目录。

步骤2:提取步骤1得到待检测软件的API调用序列;

具体过程如下:

S21:划分基本块;分块处理ELF(Executable and Linking Format,可执行链接格式)文件的代码段,利用如下原则划分基本块:除了每个块结尾的指令外,保证块内指令不会出现跳转、函数调用和返回等导致程序执行逻辑跳转的指令。

S22:获取基本块间调用关系有向有环图;若块A的最后一个指令是jmp short0x12,而地址IP+0x12在块B中,则建立块A到块B的顺序连接边,以此得到块间调用关系有向有环图。

S23:合并同一函数内的基本块,对步骤S22中的有向有环图进行部分边的合并,得到每个函数内部的函数调用序列有向有环图;分析所有基本块,合并同一函数内的基本块,进而对块间调用关系图进行部分边的合并,在合并过程中,根据代码走向保留被调函数的调用顺序作为有向边,以此得到每个函数内部的函数调用序列有向有环图。

具体过程可如下:

从ELF文件代码段的起始节点开始遍历基本块调用关系图,根据原则:如果块起始地址和块所属函数起始地址相同,则该块为所属函数的起始块,以此筛选出图中所有函数的起始块集合N。

依次遍历N中的块,以每个块为起始进行深度递归搜索,在递归过程中以遇到N中的块为终止条件,以此生成每个函数内部的函数调用序列有向有环图。在该过程中,需处理以下难点:

1)代码中的循环和goto逻辑会导致同一块被重复分析,浪费计算能力,甚至导致无限递归;保存每个已分析块为起始的块调用子图对应的函数调用序列子图,当再次分析到该块时,直接取出对应的函数调用序列子图,避免重复分析。

2)分析块间的直接调用关系,保留顺序调用特性,生成函数间的调用序列关系。基本块调用关系图中,出度为2的块代表有两个代码走向,这两个代码走向分为两种类型:

一、call指向和call后的顺序指向(即call调用执行完毕后,继续顺序执行的代码所在地);

二、条件成立跳转指向和条件不成立跳转指向。

其中,第一种代码走向会改变函数调用的顺序关系,需将“call后的顺序指向”边的源节点修改为“call指向”边的目的节点,以保证call后的函数调用序列在“call指向”边的目的节点之后,进而保留顺序关系,确保函数调用序列的正确性。

3)代码中的循环、goto和递归逻辑会产生环,需解决块间调用关系图中的环问题。循环和goto逻辑发生在函数内部,已通过保存子图的方式解决。递归逻辑发生在函数之间,而在获取函数调用序列时仅关注一个函数内部的控制流,并不会展开分析其他函数,所以此处无须考虑递归逻辑,而需在获取API调用序列时解决该问题。

S24:遍历函数调用序列有向有环图,得到API调用序列;深度优先遍历函数调用序列有向有环图,得到程序整体的API调用序列。

具体过程如下:

遍历函数内部调用序列,采用限制路径最大长度解决函数内循环调用导致的路径爆炸问题;

从程序起始函数节点开始执行深度优先遍历,去除普通函数,只保留系统API,并通过限制API调用序列最大长度解决函数间循环调用导致的路径爆炸问题;

在前两步中,还存在相似路径被输出多次的问题,通过设置每个节点的访问上限,达到减少递归到同一节点的次数,进而降低路径个数。

步骤3:构建深度学习检测模型,深度学习检测模型Word2vec网络、LSTM网络和CNN网络;Word2vec网络将API调用序列向量化,LSTM网络提取不定长序列数据的语义特征输出定长语义向量,CNN网络提取定长语义向量的多维局部特征并进行分类,得到分类结果;

Word2vec网络向量化表示特征属性,利用分析训练样本集获取到的非定长API调用序列集训练一个Word2Vec模型,再利用该模型将每个API都映射为固定较低维度的特征向量,按序列拼接这些特征向量形成LSTM的输入,以此保留数据语义。

LSTM提取不定长序列的语义特征,采用读取整个不定长序列后产生单个特征输出的循环网络设计模式,提取序列数据的语义特征,将隐藏层输出的定义语义向量作为CNN的输入。

CNN提取定长语义序列的多维局部特征并实现分类,针对定长输入,利用多种大小的卷积核沿序列进行卷积运算,生成多个Feature Map,然后通过最大池化选取每个Feature Map中最重要的特征,再将池化后的高级特征进行全连接,最后接入softmax回归层得出分类结果。

通过输入大量标记样本,联合训练LSTM+CNN的层级网络,通过计算理论类别输出和模型输出的交叉熵,应用Adam优化算法不断更新网络权重,进而得到训练好的层级恶意软件检测模型。

步骤4:训练步骤3得到的深度学习检测模型得到层级恶意软件检测模型;

步骤5:将步骤2得到的API调用序列输入步骤4训练得到的层级恶意软件检测模型,得到检测结果。

本发明提出一种基于深度学习的容器内恶意软件静态检测方法,借助于深度学习的特征自提取优势,实现端到端的恶意软件检测,本发明解决了以下问题:

1)无代理提取容器内待检测软件,避免了提取过程造成镜像层或容器层文件受损、修改主机内核以及安装代理程序扩大容器攻击面并导致系统可移植性差的问题;

2)获取具有强区分性的软件分析与检测的特征属性,使用可反映代码片段行为的API调用作为细粒度基本分析单元,保留了API调用之间的顺序特性以正确表征程序运行行为,处理了代码中会导致无限递归的循环和goto等逻辑以及生成程序整体API调用序列时面临的路径爆炸问题。

3)有效地向量化表示特征属性,由于API(Application Programming Interface,应用程序编程接口)调用序列具有高度的语义性和离散性,不能将其表示为任意的向量形式,训练了Wrod2vec模型向量化表示序列特征,做到了保留语义信息的同时降低特征维度。

4)构建可提取多维特征的深度学习模型,虽然深度学习在许多领域都取得了显著效果,但不同模型擅长解决的问题不尽相同。构建的LSTM+CNN层级网络可处理不定长序列,且能充分抽取序列的语义特征以及局部交互关联属性,多维特征的提取还能应对典型的代码混淆技术。

本发明构建了基于Word2vec(用于产生词向量的模型)+LSTM(Long Short-TermMermory,长短期记忆)+CNN(Convolutional Neural Network,卷积神经网络)的深度学习检测模型,根据此提出一种无代理方式的容器内恶意软件检测方法,保障容器云平台的可用性和租户的数据安全性。

一种容器内恶意软件静态检测系统,可用于检测容器镜像、未运行和运行中容器内的恶意软件;主要分为训练和检测两个阶段,训练阶段用于生成恶意软件检测模型,检测阶段利用该模型检测容器镜像或容器内的恶意软件。包括待测软件提取模块、特征抽取模块、数据建模模块和恶意软件检测模块;

待测软件提取模块:输入容器镜像或容器的唯一标识,根据主机存储驱动类型以无代理的方式分层处理输入的各层文件系统内容,提取出待测软件;将其部署在容器外的主机用户层,根据输入容器镜像或容器的唯一标识,分析容器存储驱动和相应文件系统的层次关系,实现无代理的方式分层处理各层文件系统内容,提取出待测软件。

附图2给出了Docker与OverlayFS的分层关系示意图,其中只读镜像层对应Lowerdir,读写容器层对应Upperdir,容器内可见的文件系统为联合挂载点Merged。在内核的处理中,用于挂载的各层之间存在层次关系,主要表现为:上下层同名目录合并、上下层同名文件覆盖和仅存在于Lowerdir的文件写时复制。基于以上分层关系,本发明首先根据输入的容器镜像或容器的唯一标识,在主机用户层获取待测容器元数据,从中筛选出Lowerdir和Upperdir路径,然后将Lowerdir和Upperdir按照层次关系进行格式拼接作为挂载时的Lowerdir,并新建一个空的Upperdir,接着根据Docker系统信息获取存储驱动类型,得到相应的文件系统类型,并将拼接的Lowerdir和空的Upperdir联合挂载到一个处于待测容器外部的临时容器视角目录,最后筛选临时目录下的可执行文件,将其绝对路径传给特征抽取模块,待其分析结束后,取消挂载临时目录。

特征抽取模块:对输入的软件进行反汇编,得到基本块调用关系有向有环图,根据代码走向处理基本块之间的调用顺序,通过合并基本块得到每个函数内部的函数调用序列有向有环图,深度优先遍历该图获取程序整体的API调用序列作为特征属性;

分块处理待测软件的代码段,并获取基本块调用关系有向有环图,然后分析所有基本块,合并同一函数内的基本块,在此过程中根据代码走向保留被调函数的调用顺序作为有向边,以此得到每个函数内部的函数调用序列有向有环图,最后深度优先遍历函数调用序列有向有环图,得到程序整体的API调用序列。

附图3给出了合并同一函数内的基本块时,根据代码走向保留被调函数的调用顺序作为有向边的方法。

数据建模模块:结合LSTM和 CNN构建层级网络,使用Word2vec网络将序列特征转化为向量表示,以保留数据的语义信息,将特征向量和对应的标签输入层级网络,训练得到恶意软件检测模型。

附图4给出了Word2vec+LSTM+CNN的深度学习检测模型结构。数据建模模块利用分析训练样本集获取到的API调用序列训练该深度学习检测模型,先利用Word2vec向量化表示特征,再利用LSTM提取不定长序列的语义特征,最后利用CNN提取定长语义序列的多维局部特征,输出分类结果,通过计算理论类别输出和模型输出的交叉熵,应用Adam优化算法不断更新网络权重,进而得到训练好的恶意软件检测模型。

恶意软件检测模块:提取无代理获取的容器内待测软件的API调用序列,利用Word2vec模型向量化表示特征属性,并输入训练阶段已构建好的检测模型中,得到模型分类结果,将检测出的恶意软件和具体的容器及目录信息输出到容器检测日志中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号