CN107908963B - 一种自动化检测恶意代码核心特征的方法 - Google Patents

一种自动化检测恶意代码核心特征的方法 Download PDF

Info

Publication number
CN107908963B
CN107908963B CN201810013616.0A CN201810013616A CN107908963B CN 107908963 B CN107908963 B CN 107908963B CN 201810013616 A CN201810013616 A CN 201810013616A CN 107908963 B CN107908963 B CN 107908963B
Authority
CN
China
Prior art keywords
image
feature
features
malicious code
malicious
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810013616.0A
Other languages
English (en)
Other versions
CN107908963A (zh
Inventor
王栎汉
宁振虎
薛菲
蔡永泉
梁鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Technology
Original Assignee
Beijing University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN201810013616.0A priority Critical patent/CN107908963B/zh
Publication of CN107908963A publication Critical patent/CN107908963A/zh
Application granted granted Critical
Publication of CN107908963B publication Critical patent/CN107908963B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种自动化检测恶意代码核心特征方法,属于计算机系统安全的总体设计。该方法是一种基于机器学习算法的恶意代码核心特征的方法。通过静态分析,从恶意代码实际安全意义的角度出发,提取恶意代码的图像纹理、关键API调用、关键字符串特征。通过基于归一化双特征库的随机森林树算法对提取的特征进行学习,获得恶意代码家族核心特征库。恶意代码图像特征对于恶意代码来说,具有更好的表现力。因此构建双特征子库,将恶意代码图像特征单独入库。保证每次特征融合,都能够选取到图像特征向量中的某几个特征值用于训练。这样保证了训练得到的分类器,拥有一定的准确率。

Description

一种自动化检测恶意代码核心特征的方法
技术领域
本发明涉及计算机安全领域,尤其涉及一种自动化检测恶意代码核心特征方法,属于计算机系统安全的总体设计。
背景技术
恶意程序是当今互联网中的一个主要威胁,从经典的计算机病毒到网络蠕虫,再到僵尸网络,无一例外的把连接到网络中的计算机系统作为攻击目标。此类威胁主要由黑色产业驱动,通过系统化的利用被入侵主机达到非法目的,比如传播垃圾邮件、获取机密数据等。遗憾的是传统的安全技术,比如防病毒扫描,在恶意程序不断增长的数量及多样性背景下变得不再那么可靠,导致互联网中成千上万的主机面临恶意软件的威胁。如何能够对恶意程序进行自动化处理分析,成为了当前的研究重点。
基于机器学习算法处理恶意代码,为自动化提取恶意代码家族核心特征和检测新的恶意代码家族带来可能。机器学习用于恶意代码的分类处理,成为了当前恶意代码分析的主流。机器学习处理恶意代码主要分为三步进行,首先是对于恶意代码进行特征的提取。第二步是对于提取的恶意代码特征进行清洗和融合,构建低维度的特征。最后则是利用机器学习算法对于构建的特征进行学习,构建分类器用于恶意代码的分类聚类工作,因此特征的选取和融合是重中之重。对于常见的基于机器学习算法的恶意代码特征提取工作而言,为了能让模型的分类性能更好,更多的考虑的是恶意代码样本集中的特征属性,而没有从安全属性角度去提取恶意代码的特征。这种恶意代码特征的选取的方式,仅仅只是在样本集上拥有良好的分类效果,对于分析描述恶意代码来说并不具有实际意义,在未来恶意代码变种的研究分析中缺乏泛化性。
据Symantec统计,大部分新出现的恶意代码及其变种是在原有恶意代码基础上经过一些变换操作得来的。并且现在大多数的恶意代码研究具备了自动变形的能力。由于恶意代码变种数量的爆炸性增加,特征库中特征出现了维度爆炸。仅仅单一特征的构建,很难在恶意代码的特征提取方面取得好的结果。一方面是由于恶意代码针对使用单个特征的检测模型时,会进行相应的绕过和替换。另一方面,单个特征选取会造成模型的泛化能力不强,容易在测试数据集中过拟合,对未来恶意代码的防范分析不具有价值性。
恶意代码特征向量标识了恶意代码的本质特征,良好的特征提取算法是恶意代码变种检测的核心技术。常见的反病毒软件通常使用基于签名的方法来识别恶意代码。对于给定一组恶意代码样本,首先将该恶意代码标注为一个家族。对于同一个家族的恶意代码,应当具有相同的特征。将这些公共的特征提取出来,构建特征库,用于检测未来该恶意代码家族的变种。这些恶意代码的公共特征也称作恶意代码家族核心特征。现如今对于恶意代码家族核心特征的提取,则主要依靠研究人员的人工分析和经验。恶意代码的总体规模和增长速度为研究人员的分析工作带来了挑战,这主要体现在两点:一是如何能够在海量恶意代码数据的情况下,尽量自动或半自动地提取代表恶意代码核心本质的特征向量,为下一步自动分析或人工分析提供更为全面的总体描述信息;二是根据特征如何更为快速地对未知恶意样本进行自动聚类分类,从而提升样本的处理速度和提高人工分析效率。
发明内容
本发明为了解决在恶意代码分类检测过程中,恶意代码家族特征提取困难的问题。
本发明采用的技术方案为一种自动化检测恶意代码核心特征方法,该方法是一种基于机器学习算法的恶意代码核心特征的方法。通过静态分析,从恶意代码实际安全意义的角度出发,提取恶意代码的图像纹理、关键API调用、关键字符串特征。通过基于归一化双特征库的随机森林树算法对提取的特征进行学习,获得恶意代码家族核心特征库。
第一、核心特征提取方法整体架构
使用三种特征提取方法,并通过机器学习算法对三种特征进行学习。最终实现自动化提取恶意代码核心特征,并且保证提取的核心特征不易被混淆,检测效果好。
对于一个恶意代码样本,提取出两份分析文件,一个是经过IDA反汇编的恶意代码操作序列,另一个是恶意代码可执行的二进制文件。恶意代码的反汇编文件记录了恶意代码API接口的调用顺序,以及传递和返回的参数。因此通过分析处理恶意代码的反汇编文件,从中提取出两种恶意代码特征,包括n-gram序列特征和关键字符串特征。这两个特征能够很好地反应出恶意代码的局部敏感信息和实际操作的特征信息。
对于恶意代码二进制执行文件,直接通过统计学方式对特征进行提取很困难。因此考虑将该二进制文件通过分割的形式构建灰度图像,通过对该灰度图像的特征提取,得到一种含有非常丰富信息的恶意代码图像特征。对于三种特征向量,需要利用高斯归一化算法对特征向量进行标准化处理,保证最终三种特征的特征值分布范围相同。
为了能够更好的融合三种特征,采用了随机森林树算法,随机的对训练样本以及三种特征向量进行选择。通过融合出多个特征向量并配合多个训练样本集,对分类器进行训练,提高模型的多样性。考虑到恶意代码图像特征对于恶意代码来说,具有更好的表现力。构建双特征子库,将恶意代码图像特征单独入库。保证每次特征融合,都能够选取到图像特征向量中的某几个特征值用于训练。保证训练得到的分类器,拥有一定的准确率。最终的分类结果,则由分类器集群进行投票表决。
第二、恶意代码图像特征提取
首先通过BM2(Boyer-Mooretwo)算法将恶意代码二进制文件,按每8bit为一长度进行分割,每8bit的二进制可以读取出一个范围为0到255的无符号整形数。固定行宽,产生一个二维数组的向量。向量中的每个原始的取值范围都为0到255。既一个灰度像素,0代表白色255代表黑色。通过这个二维数组,生成一个可视化的灰度图像。图像的宽度和高度则取决于样本文件的大小。映射后的灰度纹理图片将被存储为一个无压缩的PNG图像。由于恶意代码二进制文件中存储的实际是代码运行的过程,因此不同阶段的运行情况对应的映射图片灰度也不一样。
对于上述木马病毒的恶意代码图像文件,其中“.text”部分包含可执行代码,具有细粒度纹理,其余充满黑色,表示末尾填零。“.data”部分包含初始的代码块,未初始的代码块。“.rsrc”部分包含所有模块的资源。这些可能包括应用程序可能使用的图标。考虑如何对恶意代码图像进行特征提取,获取到得到较为稳定、不易受到干扰的图像特征。
图像的特征提取分为几种类型:颜色、形状、关系空间、纹理特征方法。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。考虑到恶意图像代码为无压缩的灰度图像,每个区域相应对应了一个类型的操作,因此提取的特征应当能够体现图像中各个区域的特征,并且在面对翻转、变化、混淆情况下,提取的图像特征不能具有很大的差异性。因此利用灰度共生矩阵(GLCM)对恶意代码图像进行纹理特征的提取,灰度共生矩阵是一种通过计算图像中各个区域的边界,并统计各区域的概率信息反应图像中灰度有关方向和间隔整体信息。
对于图像上任意一点(p,q),(p+Δp,q+Δq)为图像中移动后的另一点。这两点形成了一个点对,(m,n)为该点对的灰度值。即m为点(p,q)的灰度值,n为点(p+Δp,q+Δq)的灰度值。通过固定Δp和Δq,通过移动点(p,q)来确定相应的(m,n)值。则相应灰度值的组合为L2,灰度值的级数为L。通过计算灰度值(m,n)的出现频率,化积分为1,其概率为Pmn。得到灰度共生矩阵即灰度联合概率密度为[Pmn]L×L。灰度共生矩阵并不能直接用于恶意代码图像特征的表述,它反应的是图像灰度关于方向、相邻间隔、变化幅度的综合信息。通过灰度共生矩阵提取出图像的角二阶矩、对比度、灰度一系列纹理特征。通过对恶意图像的分析,为了能够降低特征的维度,提高计算效率。从安全属性相关的角度分析选取了几种恶意图像的纹理特征并通过PCA(Principal Component Analysis)算法对特征进行降维,选取出其中贡献值较高的5种特征,分别为:1)对比度
Figure GDA0002680734730000041
其中|m-n|=s。
2)灰度相关
Figure GDA0002680734730000042
其中σp,σq,μp,μq分别为
Figure GDA0002680734730000043
Figure GDA0002680734730000044
的标准差和均值。
3)熵
Figure GDA0002680734730000045
4)相异
Figure GDA0002680734730000051
5)反差
Figure GDA0002680734730000052
其中,m和n代表两个相邻像素;s=|m-n|表示相邻像素m和n的灰度差;P(m,n)表示相邻像素m和n的灰度差为s的像素分布概率,k是反差系数。第三、n-gram及关键字符串特征提取
从恶意代码实际语义的角度,利用N-gram模型对恶意代码的反汇编文件中操作码进行提取。对于一个“.asm”的反汇编程序,由段落开始标识符、内存中地址、字节码、操作码、参数组成。
反汇编程序片段中的segment表示对应的当前指令所属段落,address表示内存地址,bytes对应的十六进制码,opcode表示操作码,operands则表示传递的参数。对于一个反汇编文件,通过定位“.text”,提取出对应的操作码。对操作码进行n-gram建模,即可得到n-gram特征向量。
本方法还提取了恶意代码的关键字符串特征,通过对恶意代码进行反汇编操作,可以提取出许多直接可以打印出来的字符串。这些字符串展现了恶意代码的一些敏感操作。采用字符长度作为关键字符串特征,该特征提取方法将反汇编文件中所有可打印的字符串,按长度进行划分统计成向量。之所以采取这种方式提取关键字符串特征,是因为这些字符串信息数据当中含有非常多的噪音。对于IP地址,可以通过替换绕过检测。相关字符串信息在混淆处理后,长度却往往是不变的。因此选择统计字符串长度,可以有效消除噪音数据的干扰。
第四、特征归一化
为了能够统一多种特征向量融合的问题,本发明对三种特征向量进行了特征归一化处理。对于提取的多个特征,由于提取方法等因素的不同,导致各个特征的数值范围区间并不相同。传统上机器学习算法认为值越高的数据,占有越重要的比重。如果直接利用得到的特征值进行学习,会导致某些特征值的影响被放大,有些特征值的影响被降低。因此对数据进行规范化非常重要,将所有的特征值通过一定的规则映射到某一特定区间,可以消除因为数值范围不同而对特征学习产生的影响。
本方法主要提取了三种特征,每种特征向量都有多种维度的数据。只需要将这些多维向量都进行归一化操作,即可以消除因为取值不同对特征学习造成的影响。具体的高斯归一化算法描述如下:
1)对于任意一组n维的向量v(n)=(v1,v2,…,vn),首先利用高斯公式计算该多维特征向量集合的均值μn和方差σn
2)将v(n)特征向量归一化至区间[-1,1],从而可以得到归一化的特征向量v(N)
Figure GDA0002680734730000061
其中上标N表示归一化操作后,所有的向量转变为具有N(0,1)分布的向量v(N),使用2σi进行归一化,使得新生成的向量取值范围固定在[-1,1]。
第五、随机森林树构建及核心特征选取。
使用双特征库的随机森林树算法,重点考虑恶意代码图像特征。利用随机选择的方法,可以有效地消除恶意代码的混淆干扰。基于这种提取方法构建的特征库具有更强的抵抗力。
对于三种所提取的特征,虽然每个特征属性都具有自己的安全意义。但是在针对恶意代码的检测过程中,不同的特征面临的干扰、混淆影响是不同的,对恶意代码家族的核心特征来说,能否更好的代表同一家族也是不同的。对于n-gram和关键字符串特征来说,是从恶意代码的实际语义的角度来描述的。这两种特征所面临的干扰和影响也非常的严重。而相较于前两种特征,恶意代码图像特征,则更加的丰富,恶意代码图像特征从相同的执行代码,调用资源的角度来对恶意代码进行描述。因此在对样本特征集进行选择时,应当着重考虑恶意代码图像特征。从安全属性角度出发,提出了一种改进的随机森林树算法。该算法将特征库拆分为两个部分,一个部分为恶意代码图像特征的图像特征库,另一个部分为n-gram和关键字符串特征组成的语义特征库。相较于传统的随机森林树算法,在对特征库中多维特征进行选择的同时,更多的考虑恶意代码图像特征。每次特征提取都会随机在恶意代码图像特征库中随机选择几个特征维度,并另外一个特征库中也进行随机的选取,构建样本特征库。
与现有技术相比较,本发明具有如下有益效果。
1.恶意代码核心特征提取方法。恶意代码核心特征提取是一种新型的恶意代码家族特征的提取方式。该方法能够高效地找到恶意代码的家族核心特征,避免被恶意代码混淆操作所干扰。在未来的恶意代码检测工作当中,具有良好的适用性和高效的检测能力。该模型提取恶意代码的图像纹理、n-gram、关键字符串特征。通过构建归一化双特征库的随机森林树算法模型,对分类器进行训练,从而达到对相同家族恶意代码进行分类。
2.恶意代码核心特征包括:恶意代码n-gram特征,该特征是利用大小为N的滑动窗口对序列进行处理,得到长度为N的连续片段列表,每个列表就是一个特征向量。该特征从恶意代码实际语义的角度出发,对恶意代码进行描述。恶意代码关键字符串特征:是指在恶意代码反汇编文件中,可以直接打印出来的字符串。这些字符串展现了恶意代码的一些敏感操作。恶意代码图像特征:相同家族的恶意代码,在图像的特征方面具有相似性。利用的是相同家族恶意代码会调用类似的资源,或者类似的代码片段。
3.归一化双特征库:通过融合出多个特征向量并配合多个训练样本集,对分类器进行训练,大大提高了模型的多样性。但是在针对恶意代码的检测过程中,不同的特征面临的干扰、混淆等影响是不同的,对恶意代码家族的核心特征来说,能否更好的代表同一家族也是不同的。恶意代码图像特征对于恶意代码来说,具有更好的表现力。因此构建双特征子库,将恶意代码图像特征单独入库。保证每次特征融合,都能够选取到图像特征向量中的某几个特征值用于训练。这样保证了训练得到的分类器拥有一定的准确率。
附图说明
图1:整体模型设计框架图。
图2:木马病毒灰度图像图。
图3:反汇编程序片段。
图4:随机森林树模型。
具体实施方式
本发明采用的技术方案为一种自动化检测恶意代码核心特征方法,该方法是一种基于机器学习算法的恶意代码核心特征的方法。本方法通过静态分析,从恶意代码实际安全意义的角度出发,提取恶意代码的图像纹理、关键API调用、关键字符串等特征。通过基于归一化双特征库的随机森林树算法对提取的特征进行学习,获得恶意代码家族核心特征库。
第一、核心特征提取方法整体架构
现如今恶意代码样本往往会采用多种混淆手段,单一的特征提取方法非常容易被攻破。为了能够使最终提取的核心特征具有良好的抗干扰性,本发明使用三种特征提取方法,并通过机器学习算法对三种特征进行学习。最终实现自动化提取恶意代码核心特征,并且保证了提取的核心特征不易被混淆,检测效果好。
对于一个恶意代码样本,一般可以提取出两份分析文件,一个是经过IDA反汇编的恶意代码操作序列,一个是恶意代码可执行的二进制文件。恶意代码的反汇编文件记录了恶意代码API接口的调用顺序,以及传递和返回的参数。因此通过分析处理恶意代码的反汇编文件,可以从中提取出两种恶意代码,包括特征n-gram序列特征和关键字符串特征。这两个特征能够很好地反应出恶意代码的局部敏感信息和实际操作的特征信息。
对于恶意代码二进制执行文件,很难去直接的通过统计学方式对特征进行提取。因此考虑将该二进制文件通过分割的形式构建灰度图像,通过对该灰度图像的特征提取,可以得到一种含有非常丰富信息的恶意代码图像特征。对于三种特征向量,需要利用高斯归一化算法对特征向量进行标准化处理,以保证最终三种特征的特征值分布范围相同。
本发明为了能够更好地融合三种特征,采用了随机森林树算法,随机的对训练样本以及三种特征向量进行选择。通过融合出多个特征向量并配合多个训练样本集,对分类器进行训练,大大的提高了模型的多样性。考虑到恶意代码图像特征对于恶意代码来说,具有更好的表现力。本发明构建双特征子库,将恶意代码图像特征单独入库。保证每次特征融合,都能够选取到图像特征向量中的某几个特征值用于训练。这样保证了训练得到的分类器,拥有一定的准确率。最终的分类结果,则由分类器集群进行投票表决。整体发明设计框架图1所示。
第二、恶意代码图像特征提取
本发明首先通过BM2(Boyer-Moore two)算法将恶意代码二进制文件按每8bit为一长度进行分割,每8bit的二进制可以读取出一个范围为0到255的无符号整形数。固定行宽,可以产生一个二维数组的向量。向量中的每个原始的取值范围都为0到255,既一个灰度像素,0代表白色,255代表黑色。通过这个二维数组,可以生成一个可视化的灰度图像。图像的宽度和高度则取决于样本文件的大小。映射后的灰度纹理图片将被存储为一个无压缩的PNG图像。由于恶意代码二进制文件中存储的实际是代码运行的过程,因此不同阶段的运行情况对应的映射图片灰度也不一样。图2展示了一种常见的木马病毒图像:
恶意代码图像文件中“.text”部分包含可执行代码,具有细粒度纹理,其余充满黑色,表示末尾填零。“.data”部分包含初始的代码块(粒度比较细),未初始的代码块(黑块)。“.rsrc”部分包含所有模块的资源,如应用程序可能使用的图标。从上述图像可以看出恶意代码的图像包括非常丰富的特征信息,因此考虑如何对恶意代码图像进行特征提取,获取到较为稳定、不易受到干扰的图像特征。
图像的特征提取主要可以分为几种类型:颜色、形状、关系空间、纹理特征等几种方法。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。考虑到恶意图像代码为无压缩的灰度图像,每个区域相应对应了一个类型的操作,因此提取的特征应当能够体现图像中各个区域的特征,并且在面对翻转、变化、混淆等情况下,提取的图像特征不能具有很大的差异性。因此本发明利用灰度共生矩阵(GLCM)对恶意代码图像进行纹理特征的提取,灰度共生矩阵是一种通过计算图像中各个区域的边界,并统计各区域的概率等信息反应图像中灰度有关方向和间隔等整体信息。对于图像上任意一点(p,q),(p+Δp,q+Δq)为图像中移动后的另一点。这两点形成了一个点对,(m,n)为该点对的灰度值。即m为点(p,q)的灰度值,n为点(p+Δp,q+Δq)的灰度值。通过固定Δp和Δq,通过移动点(p,q)来确定相应的(m,n)值。则相应灰度值的组合为L2(灰度值的级数为L)。通过计算灰度值(m,n)的出现频率,化积分为1,其概率为Pmn。可以得到灰度共生矩阵(灰度联合概率密度)为[Pmn]L×L。灰度共生矩阵并不能直接用于恶意代码图像特征的表述,它反应的是图像灰度关于方向、相邻间隔、变化幅度的综合信息。通过灰度共生矩阵可以提取出图像的一系列纹理特征,例如角二阶矩、对比度、灰度相关等。本发明通过对恶意图像的分析,为了能够降低特征的维度,提高计算效率。从安全属性相关的角度分析选取了几种恶意图像的纹理特征并通过PCA(Principal Component Analysis)算法对特征进行降维,选取出其中贡献值较高的5种特征,分别为:
1)对比度
Figure GDA0002680734730000101
其中|m-n|=s。
2)灰度相关
Figure GDA0002680734730000102
其中σp,σq,μp,μq分别为
Figure GDA0002680734730000103
Figure GDA0002680734730000104
的标准差和均值。
3)熵
Figure GDA0002680734730000105
4)相异
Figure GDA0002680734730000106
5)反差
Figure GDA0002680734730000107
第三、n-gram及关键字符串特征提取
本发明从恶意代码实际语义的角度,利用N-gram模型对恶意代码的反汇编文件中操作码进行提取。对于一个“.asm”的反汇编程序,主要由段落开始标识符、内存中地址、字节码、操作码、参数所组成。
反汇编程序片段如图3所示,segment表示对应的当前指令所属段落,address表示内存地址,bytes对应的十六进制码,opcode表示操作码,operands则表示传递的参数。对于一个反汇编文件,可以通过定位“.text”,提取出对应的操作码。对操作码进行n-gram建模,即可得到n-gram特征向量。
本发明还提取了恶意代码的关键字符串特征,通过对恶意代码进行反汇编操作,可以提取出许多直接可以打印出来的字符串。这些字符串展现了恶意代码的一些敏感操作。本发明采用字符长度作为关键字符串特征,该特征提取方法将反汇编文件中所有可打印的字符串,按长度进行划分统计成向量。之所以采取这种方式提取关键字符串特征,是因为这些字符串信息数据当中含有非常多的噪音。例如对于IP地址,可以通过替换绕过检测。相关字符串信息在混淆处理后,长度却往往是不变的。因此选择统计字符串长度,可以有效消除噪音数据的干扰。
第四、特征归一化
为了能够统一多种特征向量融合的问题,本发明对三种特征向量进行了特征归一化处理。对于提取的多个特征,由于提取方法等因素的不同,导致各个特征的数值范围区间并不相同。传统上机器学习算法认为值越高的数据,占有越重要的比重。如果直接利用得到的特征值,进行学习,会导致某些特征值的影响被放大,有些特征值的影响被降低。因此对数据进行规范化非常重要,将所有的特征值通过一定的规则映射到某一特定区间,可以消除因为数值范围不同而对特征学习产生的影响。
本发明主要提取了三种特征,每种特征向量都有多种维度的数据。只需要将这些多维向量都进行归一化操作,即可以消除因为取值不同对特征学习。具体的高斯归一化算法描述如下:
1.对于任意一组n维的向量v(n)=(v1,v2,…,vn),,首先利用高斯公式计算该多维特征向量集合的均值μn和方差σn
2.将v(n)特征向量归一化至区间[-1,1],从而可以得到归一化的特征向量v(N):
3.
Figure GDA0002680734730000111
其中上标N表示归一化操作后,所有的向量转变为具有N(0,1)分布的向量v(N),使用2σi进行归一化,使得新生成的向量取值范围固定在[-1,1]。
第五、随机森林树构建及核心特征选取
本发明使用双特征库的随机森林树算法,重点考虑恶意代码图像特征。利用随机选择的方法,可以有效的消除恶意代码的混淆干扰。基于这种提取方法构建的特征库具有更强的抵抗力,双特征随机森林树算法模型如图4所示。
对于三种所提取的特征,虽然每个特征属性都具有自己的安全意义。但是在针对恶意代码的检测过程中,不同的特征面临的干扰、混淆等影响是不同的,对恶意代码家族的核心特征来说,能否更好地代表同一家族也是不同的。对于n-gram和关键字符串特征来说,是从恶意代码的实际语义的角度来描述的。这两种特征所面临的干扰和影响也非常的严重。而相较于前两种特征,恶意代码图像特征,则更加的丰富,恶意代码图像特征从相同的执行代码,调用资源的角度来对恶意代码进行描述。因此在对样本特征集进行选择时,应当着重考虑恶意代码图像特征。本发明从安全属性角度出发,提出了一种改进的随机森林树算法。该算法将特征库拆分为两个部分,一个部分为恶意代码图像特征的图像特征库,另一个部分为n-gram和关键字符串特征组成的语义特征库。相较于传统的随机森林树算法,在对特征库中多维特征进行选择的同时,更多的考虑恶意代码图像特征。每次特征提取都会随机在恶意代码图像特征库中随机选择几个特征维度,并另外一个特征库中也进行随机的选取,构建样本特征库。

Claims (2)

1.一种自动化检测恶意代码核心特征的方法,其特征在于:该方法是一种基于机器学习算法的检测恶意代码核心特征的方法;通过静态分析,从恶意代码实际安全意义的角度出发,提取恶意代码的图像纹理、关键API调用、关键字符串特征;通过基于归一化双特征库的随机森林树算法对提取的特征进行学习,获得恶意代码家族核心特征库;
第一、核心特征提取方法整体架构
使用三种特征提取方法,并通过机器学习算法对三种特征进行学习;最终实现自动化提取恶意代码核心特征,并且保证提取的核心特征不易被混淆,检测效果好;
对于一个恶意代码样本,提取出两份分析文件,一个是经过IDA反汇编的恶意代码操作序列,另一个是恶意代码可执行的二进制文件;恶意代码的反汇编文件记录了恶意代码API接口的调用顺序,以及传递和返回的参数;因此通过分析处理恶意代码的反汇编文件,从中提取出两种恶意代码特征:n-gram序列特征和关键字符串特征;这两个特征能够很好的反映出恶意代码的局部敏感信息和实际操作的特征信息;
对于恶意代码二进制执行文件,直接通过统计学方式对特征进行提取很困难;因此考虑将该二进制文件通过分割的形式构建灰度图像,通过对该灰度图像的特征提取,得到一种含有非常丰富信息的恶意代码图像特征;对于三种特征向量,需要利用高斯归一化算法对特征向量进行标准化处理,以保证最终三种特征的特征值分布范围相同;
采用随机森林树算法,随机的对训练样本以及三种特征向量进行选择;通过融合出多个特征向量并配合多个训练样本集,对分类器进行训练,提高模型的多样性;构建双特征子库,将恶意代码图像特征单独入库;保证每次特征融合,都能够选取到图像特征向量中的某几个特征值用于训练;保证训练得到的分类器,拥有一定的准确率;最终的分类结果,则由分类器集群进行投票表决;
第二、恶意代码图像特征提取
首先通过BM2(Boyer-Moore two)算法将恶意代码二进制文件按每8bit为一长度进行分割,每8bit的二进制读取出一个范围为0到255的无符号整形数;固定行宽,产生一个二维数组的向量;向量中的每个原始的取值范围都为0到255;即一个灰度像素,0代表白色,255代表黑色;通过这个二维数组,生成一个可视化的灰度图像;图像的宽度和高度则取决于样本文件的大小;映射后的灰度纹理图片将被存储为一个无压缩的PNG图像;由于恶意代码二进制文件中存储的实际是代码运行的过程,因此不同阶段的运行情况对应的映射图片灰度也不一样;
恶意代码灰度图像中“.text”部分包含可执行代码,具有细粒度纹理,其余充满黑色,表示末尾填零;“.data”部分包含初始的代码块,未初始的代码块;“.rsrc”部分包含所有模块的资源;
图像的特征提取分为几种类型:颜色、形状、关系空间、纹理特征方法;特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域;考虑到恶意代码图像为无压缩的灰度图像,每个区域对应一个类型的操作,提取的特征能够体现图像中各个区域的特征,并且在面对翻转、变化、混淆情况下,提取的图像特征不能具有很大的差异性;因此利用灰度共生矩阵(GLCM)对恶意代码图像进行纹理特征的提取,灰度共生矩阵通过计算图像中各个区域的边界,并统计各区域的概率信息反映图像中灰度有关方向和间隔整体的信息;
对于图像上任意一点(p,q),(p+Δp,q+Δq)为图像中移动后的另一点;这两点形成了一个点对,(m,n)为该点对的灰度值;即m为点(p,q)的灰度值,n为点(p+Δp,q+Δq)的灰度值;通过固定Δp和Δq,通过移动点(p,q)来确定相应的(m,n)值;则相应灰度值的组合为L2,灰度值的级数为L;通过计算灰度值(m,n)的出现频率,化积分为1,其概率为Pmn;得到灰度共生矩阵即灰度联合概率密度为[Pmn]L×L;灰度共生矩阵并不能直接用于恶意代码图像特征的表述,它反应的是图像灰度关于方向、相邻间隔、变化幅度的综合信息;通过灰度共生矩阵提取出图像的角二阶矩、对比度、灰度一系列纹理特征;从安全属性相关的角度分析选取了几种恶意代码图像的纹理特征并通过PCA算法对特征进行降维,选取出其中贡献值较高的5种特征,分别为:
1)对比度
Figure FDA0002680734720000021
其中|m-n|=s;
2)灰度相关
Figure FDA0002680734720000031
其中σp,σq,μp,μq分别为
Figure FDA0002680734720000032
Figure FDA0002680734720000033
的标准差和均值;
3)熵
Figure FDA0002680734720000034
4)相异
Figure FDA0002680734720000035
5)反差
Figure FDA0002680734720000036
第三、n-gram及关键字符串特征提取
从恶意代码实际语义的角度,利用n-gram模型对恶意代码的反汇编文件中操作码进行提取;对于一个“.asm”的反汇编程序,由段落开始标识符、内存中地址、字节码、操作码、参数组成;
反汇编程序片段中的segment表示对应的当前指令所属段落,address表示内存地址,bytes对应的十六进制码,opcode表示操作码,operands则表示传递的参数;对于一个反汇编文件,通过定位“.text”,提取出对应的操作码;对操作码进行n-gram建模,即可得到n-gram特征向量;
本方法还提取了恶意代码的关键字符串特征,通过对恶意代码进行反汇编操作,提取出许多直接可以打印出来的字符串;这些字符串展现恶意代码的一些敏感操作;采用字符长度作为关键字符串特征,该特征提取方法将反汇编文件中所有可打印的字符串,按长度进行划分统计成向量;对于IP地址,通过替换绕过检测;相关字符串信息在混淆处理后,长度是不变的,选择统计字符串长度,消除噪音数据的干扰;
第四、特征归一化
为了能够统一多种特征向量融合的问题,对三种特征向量进行了特征归一化处理;对于提取的多个特征,由于提取方法因素的不同,导致各个特征的数值范围区间并不相同;将所有的特征值通过一定的规则映射到某一特定区间,消除因为数值范围不同而对特征学习产生的影响;
本方法提取三种特征,每种特征向量都有多种维度的数据;只需要将这些多维向量都进行归一化操作,即消除因为取值不同对特征学习造成的影响;具体的高斯归一化算法描述如下:
1)对于任意一组n维的向量v(n)=(v1,v2,…,vn),首先利用高斯公式计算该多维特征向量集合的均值μn和方差σn
2)将v(n)特征向量归一化至区间[-1,1],从而可以得到归一化的特征向量v(N)
Figure FDA0002680734720000041
其中上标N表示归一化操作后,所有的向量转变为具有N(0,1)分布的向量v(N),使用2σi进行归一化,使得新生成的向量取值范围固定在[-1,1];
第五、随机森林树构建及核心特征选取
使用双特征库的随机森林树算法,重点考虑恶意代码图像特征;利用随机选择的方法,可以有效地消除恶意代码的混淆干扰;基于这种提取方法构建的特征库具有更强的抵抗力。
2.根据权利要求1所述的一种自动化检测恶意代码核心特征的方法,其特征在于:对于三种所提取的特征,虽然每个特征属性都具有自己的安全意义;但是在针对恶意代码的检测过程中,不同的特征面临的干扰、混淆影响是不同的,对恶意代码家族的核心特征来说,能否更好的代表同一家族也是不同的;对于n-gram和关键字符串特征来说,是从恶意代码的实际语义的角度来描述的;恶意代码图像特征从相同的执行代码,调用资源的角度来对恶意代码进行描述;因此在对样本特征集进行选择时,应当着重考虑恶意代码图像特征;从安全属性角度出发,提出一种改进的随机森林树算法;该随机森林树算法将特征库拆分为两个部分,一个部分为恶意代码图像特征的图像特征库,另一个部分为n-gram和关键字符串特征组成的语义特征库;在对特征库中多维特征进行选择的同时,考虑恶意代码图像特征;每次特征提取都会随机在恶意代码图像特征库中随机选择几个特征维度,并在另外一个特征库中也进行随机的选取,构建核心特征库。
CN201810013616.0A 2018-01-08 2018-01-08 一种自动化检测恶意代码核心特征的方法 Active CN107908963B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810013616.0A CN107908963B (zh) 2018-01-08 2018-01-08 一种自动化检测恶意代码核心特征的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810013616.0A CN107908963B (zh) 2018-01-08 2018-01-08 一种自动化检测恶意代码核心特征的方法

Publications (2)

Publication Number Publication Date
CN107908963A CN107908963A (zh) 2018-04-13
CN107908963B true CN107908963B (zh) 2020-11-06

Family

ID=61871014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810013616.0A Active CN107908963B (zh) 2018-01-08 2018-01-08 一种自动化检测恶意代码核心特征的方法

Country Status (1)

Country Link
CN (1) CN107908963B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109344614A (zh) * 2018-07-23 2019-02-15 厦门大学 一种Android恶意应用在线检测方法

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108717512B (zh) * 2018-05-16 2021-06-18 中国人民解放军陆军炮兵防空兵学院郑州校区 一种基于卷积神经网络的恶意代码分类方法
CN108710797B (zh) * 2018-06-15 2021-08-17 四川大学 一种基于熵信息分布的恶意文档检测方法
CN108920954B (zh) * 2018-06-28 2020-08-04 中国科学院软件研究所 一种恶意代码自动化检测平台及方法
CN109086604A (zh) * 2018-07-05 2018-12-25 成都信息工程大学 基于稀疏贝叶斯模型的安卓恶意行为软件识别方法及系统
CN109033833B (zh) * 2018-07-13 2021-04-09 北京理工大学 一种基于多特征与特征选择的恶意代码分类方法
CN109308413A (zh) * 2018-11-28 2019-02-05 杭州复杂美科技有限公司 特征提取方法、模型生成方法及恶意代码检测方法
CN109614795B (zh) * 2018-11-30 2023-04-28 武汉大学 一种事件感知的安卓恶意软件检测方法
CN109739846A (zh) * 2018-12-27 2019-05-10 国电南瑞科技股份有限公司 一种电网数据质量分析方法
CN109829306B (zh) * 2019-02-20 2023-07-21 哈尔滨工程大学 一种优化特征提取的恶意软件分类方法
CN109858251B (zh) * 2019-02-26 2023-02-10 哈尔滨工程大学 基于Bagging集成学习算法的恶意代码分类检测方法
CN110008363B (zh) * 2019-03-19 2021-10-22 中国科学院国家空间科学中心 一种高级在轨系统的可视化数据分析方法、系统、设备及存储介质
CN110362995B (zh) * 2019-05-31 2022-12-02 电子科技大学成都学院 一种基于逆向与机器学习的恶意软件检测及分析系统
CN110362996B (zh) * 2019-06-03 2021-03-09 中国科学院信息工程研究所 一种离线检测PowerShell恶意软件的方法与系统
CN112395613B (zh) * 2019-08-15 2022-04-08 奇安信安全技术(珠海)有限公司 静态特征库的加载方法、装置及设备
CN110659495A (zh) * 2019-09-27 2020-01-07 山东理工大学 一种恶意代码家族分类方法
CN110765459A (zh) * 2019-10-18 2020-02-07 北京天融信网络安全技术有限公司 一种恶意脚本检测方法、装置和存储介质
CN110826063A (zh) * 2019-10-23 2020-02-21 中国人民解放军陆军工程大学 一种基于api片段的恶意代码检测方法
CN113127863A (zh) * 2019-12-31 2021-07-16 奇安信科技集团股份有限公司 恶意代码的检测方法、装置、计算机设备和存储介质
CN111797397B (zh) * 2020-06-28 2023-08-29 韩山师范学院 恶意代码可视化及变种检测方法、设备及存储介质
CN112883995A (zh) * 2020-12-30 2021-06-01 华北电力大学 基于集成学习的闭源电力工控系统恶意行为识别方法及装置
CN112733144B (zh) * 2021-01-18 2024-05-24 公安部第一研究所 一种基于深度学习技术的恶意程序智能检测方法
CN112989339B (zh) * 2021-02-24 2023-05-02 西安理工大学 一种基于机器学习的gcc编译器恶意代码入侵检测方法
CN113222053B (zh) * 2021-05-28 2022-03-15 广州大学 基于RGB图像和Stacking多模型融合的恶意软件家族分类方法、系统和介质
CN113378165B (zh) * 2021-06-25 2021-11-05 中国电子科技集团公司第十五研究所 一种基于Jaccard系数的恶意样本相似性判定方法
CN113360910A (zh) * 2021-06-30 2021-09-07 中国农业银行股份有限公司 恶意应用的检测方法、装置、服务器和可读存储介质
CN113221115B (zh) * 2021-07-09 2021-09-17 四川大学 基于协同学习的可视化恶意软件检测方法
CN113935032A (zh) * 2021-07-21 2022-01-14 北京天融信网络安全技术有限公司 一种恶意代码的同源分析方法、装置及可读存储介质
CN113742718B (zh) * 2021-07-30 2022-04-19 国家工业信息安全发展研究中心 一种工业互联网设备攻击路径还原方法、相关设备及系统
CN113360912A (zh) * 2021-08-09 2021-09-07 四川大学 恶意软件检测方法、装置、设备及存储介质
CN114861178B (zh) * 2022-04-25 2024-03-29 北京计算机技术及应用研究所 一种基于改进b2m算法的恶意代码检测引擎设计方法
CN115641177B (zh) * 2022-10-20 2023-05-30 北京力尊信通科技股份有限公司 一种基于机器学习的防秒杀预判系统
CN116089951B (zh) * 2023-02-24 2023-07-14 山东云天安全技术有限公司 一种恶意代码检测方法、可读存储介质及电子设备
CN116028936B (zh) * 2023-02-24 2023-05-30 山东云天安全技术有限公司 一种基于神经网络的恶意代码检测方法、介质及设备
CN117972701B (zh) * 2024-04-01 2024-06-07 山东省计算中心(国家超级计算济南中心) 基于多特征融合的抗混淆恶意代码分类方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2535845A1 (en) * 2008-05-27 2012-12-19 Deutsche Telekom AG Unknown malcode detection using classifiers with optimal training sets
CN105897714A (zh) * 2016-04-11 2016-08-24 天津大学 基于dns流量特征的僵尸网络检测方法
CN107180191A (zh) * 2017-05-03 2017-09-19 北京理工大学 一种基于半监督学习的恶意代码分析方法和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103646420A (zh) * 2013-12-12 2014-03-19 浪潮电子信息产业股份有限公司 一种基于自学习算法的智能三维场景还原方法
CN106951782A (zh) * 2017-03-22 2017-07-14 中南大学 一种面向安卓应用的恶意代码检测方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2535845A1 (en) * 2008-05-27 2012-12-19 Deutsche Telekom AG Unknown malcode detection using classifiers with optimal training sets
CN105897714A (zh) * 2016-04-11 2016-08-24 天津大学 基于dns流量特征的僵尸网络检测方法
CN107180191A (zh) * 2017-05-03 2017-09-19 北京理工大学 一种基于半监督学习的恶意代码分析方法和系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
《A Novel Anti-Obfuscation Model for Detecting Malicious Code》;Yuehan Wang;《International Journal of Open Source Software and Processes》;20170630;第8卷(第2期);25-43 *
《Automatic malware classification and new malware detection》;Liu LIU等;《Front Inform Technol Electron Eng》;20171231;第9卷(第18期);1336-1347 *
《可信计算的研究与发展》;蔡永泉等;《计算机技术与应用进展》;20060701;743-747 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109344614A (zh) * 2018-07-23 2019-02-15 厦门大学 一种Android恶意应用在线检测方法

Also Published As

Publication number Publication date
CN107908963A (zh) 2018-04-13

Similar Documents

Publication Publication Date Title
CN107908963B (zh) 一种自动化检测恶意代码核心特征的方法
US9130988B2 (en) Scareware detection
Hashemi et al. Visual malware detection using local malicious pattern
CN109829306B (zh) 一种优化特征提取的恶意软件分类方法
CN111027069B (zh) 恶意软件家族检测方法、存储介质和计算设备
Komatwar et al. Retracted article: a survey on malware detection and classification
Almomani et al. An automated vision-based deep learning model for efficient detection of android malware attacks
CN110704840A (zh) 一种基于卷积神经网络cnn的恶意软件检测方法
Liu et al. A new learning approach to malware classification using discriminative feature extraction
CN106599686A (zh) 一种基于tlsh特征表示的恶意软件聚类方法
CN111832019A (zh) 基于生成对抗网络的恶意代码检测方法
Falana et al. Mal-Detect: An intelligent visualization approach for malware detection
CN110572393A (zh) 一种基于卷积神经网络的恶意软件流量分类方法
CN109033833B (zh) 一种基于多特征与特征选择的恶意代码分类方法
Zhang et al. Based on multi-features and clustering ensemble method for automatic malware categorization
CN113360912A (zh) 恶意软件检测方法、装置、设备及存储介质
Elkhawas et al. Malware detection using opcode trigram sequence with SVM
Park et al. Antibot: Clustering common semantic patterns for bot detection
CN112257062B (zh) 一种基于频繁项集挖掘的沙箱知识库生成方法和装置
Naeem et al. Digital forensics for malware classification: An approach for binary code to pixel vector transition
Zhu et al. Malware homology determination using visualized images and feature fusion
Čeponis et al. Evaluation of deep learning methods efficiency for malicious and benign system calls classification on the AWSCTD
Nahhas et al. Android Malware Detection Using ResNet-50 Stacking.
CN116702143A (zh) 基于api特征的恶意软件智能检测方法
Chen et al. A learning-based static malware detection system with integrated feature

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant