Jadeite:基于行为和深度学习的Java恶意软件检测新方法

VSole2022-09-18 18:40:20

其实不难发现,由于Java本身是一门较为安全的语言,所以针对Java安全相关的研究,如:Java漏洞挖掘和Java恶意代码检测,相对来说比较少,通过现有的检测和分析方法就能够达到一个不错的检测效果。

在恶意代码检测领域,将恶意代码转换成图像,配合图像处理技术进行检测是一种常用的手段。然而,如果直接将恶意代码的二进制文件转换成图像,可能导致代码的语义丢失。

本文提出了一种新的基于行为的Java程序转换方法,用于基于深度学习的恶意软件分类。通过基于字节码级别的过程间API调用静态捕获Java程序的行为,将这些行为转换成图像,利用图像处理模型(CNN)实现对恶意代码的检测。为降低模型受代码混淆等技术的影响,作者还从字节码文件中提取了一组额外的特征。

模型已开源:https://github.com/sridhar-research-lab/jadeite。

图1是Jadeite模型的方法框架。Jadeite以JAR形式的Java字节码作为输入,由3个部分组成:(1)字节码转换引擎,(2)特征提取引擎和(3)基于CNN的分类引擎。

Fig. 1 方法框架

(1)字节码转换引擎

目标是将字节码转换成灰度图。

首先,从JAR文件中提取出字节码,然后使用Soot将字节码转换成Jimple中间语言(一种三地址码);接着基于Heros从Jimple构建过程间控制流图(ICFG)。由于生成的JAR文件的过程间控制流图很大,所以需要对其进行裁剪以降低模型受维数灾难和过拟合问题的影响。具体来说,通过删除如变量赋值、变量初始化等琐碎质量,仅保留API调用指令(尽可能保证API指令的调用顺序),降低ICFG的复杂性。

接着,将ICFG用邻接矩阵表示,矩阵中的每个元素的值存在于[0, 255]中。A[i, j]表示API调用指令i与API调用指令j之间存在一条边。如果A[i, j]的值大于255,表示API调用指令i与API调用指令j之间的边数大于255,则说明可能存在循环或者递归的情况,因此需要将该值设置为255。基于ICFG的邻接矩阵,生成灰度图,图的维数为矩阵的维数。

(2)特征提取引擎

特征提取引擎的框架如图2所示,目标是使用Jarhead从输入的字节码中提取一组额外的特征,减低检测模型受代码混淆技术的影响。

Jarhead主要提取两种特征:混淆特征和行为特征。具体来说,Jarhead从字节码的反汇编代码中提取统计信息来表示混淆特征,如:是否存在Java对象的特定实例,字符串长度等;行为特征包括下载和执行外部文件等。Jarhead从Java直接码中总共提取42个特征,而本文模型梯度推进算法(gradient boosting algorithm)从这42个特征中选择出20个特征,如表1所示。本文所用到的特征可以分为两大类:已知存在漏洞的函数(如:MidiSystem.getSoundbank),下载和执行行为(如:java.net.URL)。

Fig. 2 特征提取引擎框架

Tab. 1 额外特征

(3)基于CNN的分类引擎

基于CNN的分类引擎需要接收字节码转换引擎获得的灰度图和特征提取引擎提取的特征,因此需要对这两种输入进行组合。图3是作者探究的几种不同的输入组合方式。

  • Image Load:仅使用灰度图作为输入;
  • Single Load:同时使用灰度图和特征作为输入,将灰度图展开成1维向量,然后将特征拼接到其后;
  • Double Load:同时使用灰度图和特征作为输入,分别使用不同的网络对二者进行处理,然后将处理的结果进行拼接(这个就类似于推荐系统中的双塔模型)。

Fig. 3 CNN网络构架及输入组合方式

实验结果及混淆矩阵分别如图4和5所示。

Fig. 4 实验结果

Fig. 5 混淆矩阵

深度学习字节码
本作品采用《CC 协议》,转载必须注明作者和本文链接
为降低模型受代码混淆等技术的影响,作者还从字节文件中提取了一组额外的特征。Jarhead主要提取两种特征:混淆特征和行为特征。具体来说,Jarhead从字节的反汇编代码中提取统计信息来表示混淆特征,如:是否存在Java对象的特定实例,字符串长度等;行为特征包括下载和执行外部文件等。Fig. 3 CNN网络构架及输入组合方式实验结果及混淆矩阵分别如图4和5所示。
随着深度学习在计算机安全领域越来越受到重视,不同类型的神经网络已被集成到安全系统中,以完成恶意软件检测,二进制分析,以及漏洞发现等多种任务。然而,神经网络的预测结果难以得到解释,例如难以确定输入数据的哪些特征对预测结果产生贡献,这一定程度上影响到了深度学习方法的应用。已有研究人员通过近似神经网络的决策函数来确定不同特征对预测结果的贡献,如LEMNA方法,并已在不同的安全应用中取得了良好的效果。该方
https://capev2.readthedocs.io/en/latest/安全厂商沙箱二.基于CNN的恶意家族检测前面的系列文章详细介绍如何提取恶意软件的静态和动态特征,包括API序列。接下来将构建深度学习模型学习API序列实现分类。基本流程如下:1.数据集整个数据集包括5类恶意家族的样本,每个样本经过先前的CAPE工具成功提取的动态API序列。
OneEDR 2.5版本让恶意Webshell“现原形”
系统安全第47篇介绍Cape沙箱批量提取动态特征,希望对您有所帮助
人工智能(AI)不断发展,并在过去十年中取得了巨大进步。
对决策者和从业者来说,务实的做法是细致了解哪些任务可以从机器学习中受益,哪些任务不能。
将人工智能应用于恶意加密流量的检测
人工智能(AI)在网络安全、内容安全、数据安全、业务安全、终端安全等细分领域,给安全行业带来了新思路新方法,同时,也在对抗样本、深度伪造等方面给安全行业带来了新的挑战。
网络流量分析是安全威胁检测的一个重要研究方向。当前流量分析主要采取事件特征信息与特征库匹配的方式,然而该方式存在特征库组织简单和更新不及时的缺点。此外,持续攻击技术更新快,容易规避现有规则,从而导致检测的漏报和误报率较高。为此提出并设计了一种网络流量安全智能分析系统。该系统能够自动学习网络流量的特征,智能地识别出异常并进行深度分析,从而可以准确快速定位问题并提高安全防护能力。
VSole
网络安全专家