证券简称:天融信 证券代码:002212
全天候7x24小时服务: 400-777-0777

人工智能安全|ai安全应用:基于代码语义的恶意代码同源分析-凯发k8国际首页登录

我们在前文[1]中重点介绍了基于图像分类的恶意代码同源分析方法,该方法本质上是根据恶意代码字节流内容的特征进行分类。然而,这种方法从逆向工程的角度来看不具有可解释性。
发布时间:2021-11-01
浏览次数:2760
分享:

1.引言

我们在前文中重点介绍了基于图像分类的恶意代码同源分析方法,该方法本质上是根据恶意代码字节流内容的特征进行分类。然而,这种方法从逆向工程的角度来看不具有可解释性。

众所周知,汇编代码具有较为鲜明的语法可读性。如果先把恶意代码进行反汇编,然后用自然语言处理(natural language processing)技术提取代码语义特征,再进行同源分析,这样的方法就容易解释,这就是本文将介绍的基于代码语义的同源分析方法。当前,这种方法不仅被用于恶意代码检测领域,还被用在代码克隆搜索、代码侵权判定等领域。

本文首先介绍了基于代码语义同源分析的基础知识;其次介绍了基于代码语义的同源分析相关工作;最后,给出了基于代码语义的同源分析技术方案设计,并通过实验验证了方案的有效性。

2.基础知识

基于代码语义的恶意代码同源分析的基础是语义提取。pv-dm和textcnn是nlp领域有关代码语义提取的两种常见的模型, 说明如下:

(1)句向量的分布式记忆模型(distributed memory model of paragraph vectors,pv-dm)

在pv-dm模型中,词向量和句向量相拼接,用来预测文本中的下一个词,通过在句子上的窗口滑动,使句向量记忆句子中所有词的上下文关系。在代码语义提取中使用pv-dm模型,能简单有效地解决向量长度不一致问题(图1).

图1 pv-dm模型

(2)textcnn模型

textcnn通过拼接词向量将文本转化成矩阵,然后应用卷积神经网络发挥深度学习的优势。相比于一般的卷积神经网络模型,textcnn在卷积层中应用多个不同尺寸的卷积核(图2)。textcnn具有网络结构简单、训练速度快并且效果较好等优点。但是,在嵌入层中采用预训练的词向量模型(如word2vec)进行语义提取,因而会有长度不一致的问题。

图2 textcnn模型

3.相关工作

zhang等[2]围绕勒索软件的家族分类问题,提出一种特征提取方法,该方法将样本指令序列转换为不同n值时的n-gram集合,计算每个n-gram的tf-idf(term frequency–inverse document frequency)并选择家族中tf-idf值较高的t个n-gram作为特征。然而,n-gram特征仅仅反映序列化特征,不能提取代码文本的语义信息。

陈等提出一种基于代码语义的恶意代码同源判定方法[3],利用word2vec获取指令的词向量,并利用textcnn进行分类。fang等人则采用了fasttext模型提取javascript代码的词向量[4],fasttext将多个单词及其n-gram作为输入,直接输出模型判定的类别。

ding等提出一种汇编代码的语义模型-asm2vec[5],用于提取指令代码的语义信息。该方法基于句向量的分布式记忆模型pv-dm设计,并考虑了汇编代码格式的适应性问题。由于控制流程图能在一定程度上反映代码的动态顺序信息,一些研究工作先构建代码的控制流程图,再利用图匹配、图神经网络(graph neural network,gnn)等技术评估代码相似性。gnn虽然性能比传统的图匹配更好,但在语义学习上仍有不足。为此,yu等提出一种同时捕捉代码的语义、结构以及顺序的方法[6],利用bert模型进行预测训练以获取语义信息,利用消息传递神经网络(message passing neuralnetwork,mpnn)获取结构信息,利用resnet模型提取顺序信息。

4.方案设计

基于代码语义的同源分析方案主要由语义特征提取和同源分类训练两大部分构成。具体处理流程上,主要包括了如下步骤(图3)

第一步:数据准备。收集样本并标注类别,构建训练数据集;

第二步:反汇编。对可移植可执行的恶意代码文件进行反汇编,获得汇编代码;

第三步:预处理。利用nlp技术对汇编进行分词、关键词筛选等预处理;

第四步:语义提取。构建语义模型,使用训练数据进行训练,并提取出每个样本的语义特征。本文使用了pv-dm以及textcnn中的word2vec作为语义提取模型。

第五步:同源分类。根据语义特征,采用相似性度量或聚类/分类算法分析同源性。本文使用了dnn、kmeans聚类、cnn等技术。

图3 基于代码语义的同源分析流程

5.实验分析

本节通过实验验证两种基于代码语义模型的同源分析方法。实验所用样本来源于网络,包括application、backdoor、generic、trojan、variant、virus及worm等类别(表1)。

表1. 实验数据集

实验一:基于pv-dm模型的同源分析

图4为pv-dm语义模型的训练过程。提取出256维的语义向量,应用神经网络进行分类,按照比例4:1划分训练集和测试集,总体准确率为0.74。另外,对提取的语义特征采用kmeans算法进行了聚类,测试准确率同样是0.74。

图4 基于 pv-dm的dnn模型训练及测试

图5 基于pv-dm的kmeans聚类(accuracy=0.74)

实验二:基于textcnn的同源分析

图6为样本中指令数量的统计,平均指令数量为28,最小为1(195个样本),最大为74(1个样本)。构建textcnn模型,设置不同大小的一维卷积核,将特征图最大池化并拼接,将数据集按照比例4:1划分为训练集和验证集,如图7所示,测试准确率为0.65左右。

图6 指令数量统计

图7 textcnn训练及测试

6.总结

本文通过实验证明了基于代码语义的恶意代码同源分析方法具备一定的可行性。然而,pv-dm、textcnn方法直接应用于提取汇编代码语义时,完全将汇编代码类比成纯文本,语义提取的准确性略低。文献[5]是针对汇编代码而设计的语义提取方法,能够更加精确地提取语义信息,后续将围绕此方法作进一步研究。

参考文献

[1]智能安全研究组 人工智能安全|ai安全应用|基于图像分类的同源分析. 2021.10.15

[2]hanqi zhang, xi xiao.classification of ransome families with machine learning based on n-gram ofopcodes[j]. future generation computer system, 2019(90):211-221.

[3]陈涵泊,吴越,邹福泰 . 基于 asm2vec 的恶意代码同源判定方法 [j]. 通信技术 ,2019,52(12):3010-3015.

[4]yong fang, cheng huang.detecting malicious javascript code based on semantic analysis[j].computer&security, 2020(93):1-9.

[5]steven h h ding, benjamin c mfung. asm2vec: boosting static representation robustness for binary clonesearch against code obfuscation and compiler optimization[c]. s&p,2019:1-18.

[6]zeping yu, rui cao, qiyi tang,et al. order matters:semantic-aware neural networks forbinary code similarity detection[c]. aaai, 2020:1-8.

凯发k8国际首页登录的版权声明

转载请务必注明出处。

凯发k8国际首页登录的版权所有,违者必究。

关键词标签:
天融信 人工智能安全 ai安全应用
在线咨询





在线留言





客户服务热线

400-777-0777
7*24小时服务

联系邮箱

servicing@topsec.com.cn

扫码关注
网站地图