2024年4月14日发(作者:)

2013年11月

第50卷 第6期

四川大学学报(自然科学版)

JournalofSichuanUniversity(NaturalScienceEdition)

Nov.2013

Vol.50 No.6

doi:103969/

.issn.0490‐6756.2013.06.012

基于中间代码的恶意软件检测技术研究

杨洪深

,赵宗渠

2,3

,王俊峰

(1.铜陵学院电气工程系,铜陵244001;

2.四川大学计算机学院,成都610065;

3.河南理工大学计算机学院,焦作454000)

摘 要:软件的中间代码是位于机器语言和高级程序语言之间程序语言,具有容易理解的语

义信息和控制结构信息,能真实地反映软件在执行过程中的实际情况.利用中间代码的语义信

息来研究恶意软件,可以发现恶意软件的具体行为信息或特点;通过多种方式对比中间代码形

成的控制流图整体或局部信息,实现恶意软件的检测.机器学习为软件安全性信息或规则挖掘

提供便利,成为一种先进的恶意软件检测方法.本文从中间代码的语义信息和控制结构两方面

对多种恶意软件检测技术进行归类与比较,同时对基于机器学习的中间代码处理与应用方法

进行了深入分析和探讨.

关键词:恶意软件检测;中间代码;软件特征;机器学习

中图分类号:

TP309.5   

文献标识码:

A   

文章编号:

0490‐6756(2013)06‐1216‐07

Malwaredetectiontechnologiesbasedon

softwareintermediatecode

YANGHon

Shen

,ZHAOZon

Qu

12,3

,WANGJun

Fen

(1.DepartmentofElectricalEngineering,TonglingUniversity,Tongling244000,China;

2.CollegeofComputerScience,SichuanUniversity,Chengdu610065,China;

3.SchoolofComputerScienceandTechnology,HenanPolytechnicUniversity,Jiaozuo454000,China)

Abstract:Theintermediatecodeisaspecialstyleofsoftwarerepresentationwhichlocatesbetweenthe

machinelanguageandthehighlevelprogramminglanguage,anditcantakeadvantageofunderstandable

semanticinformationandactualexecutionconditionformalwareanalysis.Themaliciousbehaviorinfor‐

mationandcharacteristicscanbeeasilyfoundfromthesemanticinformationofintermediatecode,and

malwaredetectionorclassificationcanberealizedbyanalyzingthewholeorlocalinformationofcontrol

flowgraph.Machinelearningfacilitatessecurityinformationandrulesmininginalargenumberofcom‐

whichisdeemedasakindofadvancedmalwaredetectionmethodinrecent

lexsoftwarerepresentations,

malwareresearch.Thispapercategorizesandanalyzesthemalwareresearchtechnologiesaccordingto

thesemanticinformationandcontrolflowstructureofsoftwareintermediatecode,andmakesdeepanal‐

sistointermediatecodeprocessingandapplicationmethodsbasedonmachinelearning.

Keywords:malwaredetection,intermediatecode,softwarefeature,machinelearning

收稿日期:2013‐06‐26

基金项目:安徽省教育厅自然科学研究项目(KJ2012Z412);国家自然科学基金项目(11102124,61102076,60939002);教育部新世纪

优秀人才计划项目(NCET‐10‐0604);四川省科技支撑计划项目(2013SZ0002)

作者简介:杨洪深(1968-),男,安徽全椒人,讲师,硕士.研究方向为智能电网与信息安全.

通讯作者:王俊峰.E‐mail:wangjf@scu.edu.cn

第6期  杨洪深,等:基于中间代码的恶意软件检测技术研究 

1217

1 引 言

恶意软件是指蓄意破坏计算机系统或威胁用

户信息安全的计算机程序,及时准确地检测恶意软

件是提高计算机系统安全性的必要手段之一.传统

的检测方法属于基于特征码的静态分析,需要在分

析阶段对代码进行充分研究获得病毒特征码,如字

节序列、特定的字符串等,并将其放入专用的数据

库(病毒库);在恶意软件检测阶段,通过扫描引擎

构特点,和软件的功能具有较强的关联性,它比指

令更加稳定,对软件的多态和变形的免疫能力更

强,因此也常常被用于恶意软件分析.

本文重点关注软件的中间代码,尤其是经过逆

向工程后的反汇编代码在恶意软件检测中的特点、

分类以及应用.讨论从中间代码中抽取和选择软件

特征,利用数据挖掘算法实现未知恶意软件检测的

方法;同时也讨论通过恶意软件之间的相似性分

析,进而研究恶意软件族群识别的相关方法.

查找软件的局部信息,并使用字符串匹配方法来对

比这些信息和特征码的相似度,根据对比结果来得

出检测结论.这类检测方法被广泛应用于现有的杀

毒软件和系统防护软件中,技术开发重点主要集中

在提高代码的扫描速度和特征码提取的准确度.

恶意软件的制造者往往会采用一些技术包括

多态和变形,例如通过插入冗余代码、代码位置调

换、寄存器的重新组合和同义指令代换等来改变自

身的代码

[1]

,使得分析者难以发现固定不变的特征

码.制造者还使用加壳技术对代码进行保护,增加

恶意软件分析和特征码的提取难度.这些技术会造

成基于特征码检测方法的失效,或降低该方法对恶

意软件的分析效率.

除了恶意软件编写技术的改进之外,伴随网络

信息交互的日益频繁,新型的恶意软件也不断涌

现,并且原有恶意软件的变种也层出不穷.调查显

示,2010年计算机病毒感染率为60%,其中3次以

上病毒感染率为30.9%

[2]

.互联网安全公司金山

网络最新数据显示,2011年金山毒霸累计捕获新

增病毒约1,230万个,增加数量仍然处于历史高

[3]

.这些新增的恶意软件也被成为未知恶意软件

(unknownmalware),事先往往没有得到及时的分

析,其特征码也未被记录在特征库中,因此采用特

征码检测无法得到满意的性能.

软件的中间代码(intermediatecode)是位于机

器语言和高级程序语言之间程序语言,一般是从软

件源程序编译过程中产生的,也可以通过软件逆向

工程从二进制文件中反汇编得到.中间代码类型有

很多种,汇编代码、

ava的字节码都属于中间代码.

与二进制代码相比,中间代码使用了助记符,具有

更容易理解的语义信息和控制结构信息;与高级程

序设计语言相比,中间代码更能真实的反映软件在

执行过程中的实际情况.同时,中间语言已经具备

了模块化结构,能够更清楚的表现出软件运行时的

控制流程.控制流程能够反映软件的设计思路和结

2 基于中间代码的恶意软件检测方法

  恶意软件的种类有很多,本文主要针对以二进

制代码形式的恶意软件进行讨论.这类恶意软件数

量大,能够在用户主机中直接执行,对信息系统的

破坏力极大,从二进制代码中直接观察出它们的行

为与功能,而通过中间代码的形式可以提高对这类

恶意软件的认识和分析能力.

2.1 检测方法分类

现有恶意软件的检测研究主要内容是识别和

归类问题.恶意软件识别是对软件安全性进行定性

的研究,主要关注如何将恶意软件和正常文件区分

开来;恶意软件归类可以看作是恶意软件检测的深

化研究,主要关注恶意软件之间的相似性和差异,

例如恶意软件的族群研究就是关注同族恶意软件

之间相似性以及演化规律,以便能够更加准确地判

断和分析它们.

按照使用的信息类型不同,基于中间代码的恶

意软件检测方法可以分为两大类方法,如图1所

示.第一类是利用中间代码的语义信息来研究恶意

软件的行为特点.通过代码的约简或等价变换,寻

找软件中表现出恶意行为或特定行为的内容,进行

恶意软件识别或归类.第二类是通过软件的控制结

构信息检测恶意软件.由于中间代码具备丰富的控

制流程信息,可以通过不同粒度的代码抽象,形成

反映软件控制流程的控制流图,使用多种方式对比

控制流图的整体或局部信息,实现恶意软件的检测.

2.2 基于语义信息的检测方法

利用语义信息进行恶意软件检测的主要途径

有两种方法.第一种是首先获取软件整体信息表现

出的行为特点,然后通过模型转换建立这些行为特

点与软件安全性之间的关系,方法的重点是如何从

全体中间代码中提取有效的、少量的信息作为软件

特征,以及选择什么样的分析方式提高检测结果的

性能.第二种关注中间代码的局部信息,寻找某些