首页 > 范文大全 > 正文

多类支持向量机的病毒行为检测方法

开篇:润墨网以专业的文秘视角,为您筛选了一篇多类支持向量机的病毒行为检测方法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:与正常程序相比,病毒具有一些特殊的、有限的行为。运用支持向量机的方法,构建出病毒的特征行为空间,采用信息熵来放大病毒行为与正常程序的区别,通过学习分类寻找并建立将不同程序行为切分的超平面,再对不同类型病毒的特征行为进行区分。通过对大量正常程序与病毒程序中的API调用的统计和分析,发现了病毒的API调用数量和分布的特征,将行为特征集中API调用序列设定为2B100就可以将所实验的病毒检出,这保证了检测集的稳定性和检测的可行性。与已有的病毒检测方法进行比较,所提出的方法更加具有操作性。

关键词:计算机病毒;行为检测;信息熵;多类分类;信息增益

中图分类号: TP393.08

文献标志码:A

Behaviorbased virus detection method using multiclass support vector machine

HAN Lansheng,ZOU Mengsong,LIU Qiwen,LIU Ming

College of Computer Science and Technology, Huazhong University of Science and Technology, WuhanHubei 430074, China

)

Abstract: In order to achieve specific functions, computer viruses are of some special behaviors different from those of the normal programs. Appling Support Vector Machine (SVM), the paper created a space of virus API feature vector and amplified the difference between normal programs and computer virus with the help of information entropy. By training a classifier, a hyperplane was found, which could divide the API space into two parts, each of which represented one kind of the programs. Moreover, the paper collected behaviors of different kinds of viruses. Through statistics, analysis and calculation on amount of samples API calls, the amount and distribution patterns of APIs were exposed. As most viruses behaviors are finite, the paper set 2B100 as the length of API sequence, thus detecting most test viruses. Compared with previous virus detection methods, the proposed method is more practical.

Key words: computer virus; behaviorbased detection; information entropy; multiclass classification; information gain

0 引言

当前的反病毒软件多采用特征码识别技术实现对病毒的检测,这种检测方法是基于已知的病毒程序特征来实现的,反病毒软件扫描计算机内的各个程序代码并与病毒库内的特征码进行对比,如果匹配成功则判定该计算机已遭病毒感染。然而,现实情况下的病毒库很难收集到所有病毒的特征码,并且这种技术只针对已知病毒,对于未知病毒和变形病毒则无能为力。如何构造一种更加有效,不局限于病毒特征码、而是从更直接的行为上对病毒进行识别的方法成为当务之急。

病毒必定存在某些特殊的功能,这使得病毒的行为与普通程序之间存在某些不同之处。因此监控程序的行为可以作为判断该程序是否为病毒的一个可行的方法。病毒的行为检测技术就是在这种情况下提出的。

针对这个思路,一些研究者已经做了大量的研究工作。文献[1]中提出利用PE文件的API调用序列反映程序的行为,并通过相似度比较来判定恶意程序,然而由于缺少必要的理论基础,相似度差别较大,仍无法清楚界定病毒和正常程序的界限。Matthew G. Schultz等人[2]则综合了各种提取程序特征的方法以及包括RIPPER、贝叶斯等不同的分类算法。但在提取特征时并未区分不同特征对分类的影响程度,即区分度的高低,该方法比较刻板,效率也比较低。文献[3]中将可执行程序转换为ASCⅡ格式十六进制码以提取Ngram特征,提出根据信息增益(Information Gain, IG)来对特征进行有区分的选取,并列举了几种分类方式。然而由于目前变形病毒代码序列变化迅速,所以这种方法无法应对变形病毒的威胁。文献[4,5]中提出将API调用序列作为程序的行为特征,并利用支持向量机(Support Vector Machine,SVM)对程序行为进行分类,但其只对该思路进行了描述,过于理想,并没有对API进行切实统计和分类,而且现实程序的API向量庞杂多样,比之正常程序与病毒程序的行为差别,正常程序之间的差别更大,这使得病毒程序的API行为被淹没。

基于此,本文在分析大量病毒的行为特征后,通过对大量程序调用系统API的取样和统计,仍将程序的API调用序列作为特征向量,与上述文献不同的是,本文将正常程序间的大量API差别“忽略”,而对正常程序和病毒的API差别“放大”,利用支持向量机区分这些“放大”后的不同特征向量,从而对不同程序进行分类,为增加、提高验证的效率,本文针对实际应用,进一步提出将广义的病毒细分为狭义病毒、木马、蠕虫三类,通过引入多类SVM分类算法对不同类型病毒进行分类,从而明显提高病毒的检测效率。

1 病毒的行为特征

病毒为完成其基本功能,如繁殖、传播等往往会对计算机系统中的各类资源进行特定操作。按照病毒行为操作对象的不同,可以对病毒的行为进行划分。

1.1 针对注册表的行为

1)添加或删除系统服务。

伪装成一个设备驱动程序或系统服务,在设备驱动系统服务加载期被加载。某些病毒还会停止或删除特定的系统服务。存在这类行为的病毒会修改以下键值:

HKLM\SYSTEM\CurrentControlSet\Services

2)实现开机时自启动。

修改注册表定键值以实现系统启动时随之启动,或系统开机时把病毒文件产生的动态链接库文件注入到进程中,如修改:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

3)隐藏和保护自身。

将自身属性设置为隐藏,修改注册表文件夹选项使隐藏文件不可见,或修改键值使得用户无法看到隐藏受保护的系统文件;修改注册表使得手动恢复键值原始设置无效或禁用任务管理器和注册表编辑器;映像劫持安全软件,导致它们无法正常运行。如修改以下键值:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL

HKCU\Software\Microsoft\WindowsNT\CurrentVersion\ImageFileExecutionOptions

4)破坏系统功能。

读取特定键值判断当前系统是否允许移动设备自动运行,若不允许则修改为允许;修改注册表以关闭系统文件保护,禁用自动更新,系统防火墙和系统错误报告服务;修改文件关联,使得用户可能在不知情的情况下错误运行病毒程序;修改浏览器默认主页等。如修改:

HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\WindowsAppInit_DLLs

1.2 针对文件的行为

病毒在感染计算机系统时,首先会将自身文件复制到系统文件夹或各个磁盘目录中去,如在系统目录中创建文件名与系统文件类似的文件;在各个盘根目录创建autorun.inf或autorun.exe文件,以实现用户双击盘符自动运行病毒;释放dll文件到系统中后将其注入进程中;创建批处理文件删除电脑上特定文件,如病毒源文件;创建配置文件等; 删除、破坏、覆盖系统文件和可执行文件等。比如,修改系统初始化文件win.ini、system.ini以更改系统配置;修改boot.ini以及其他应用程序的初始化文件*.ini;向感染的exe文件中新增.ani节,修改入口为病毒的代码起始位置;搜索jsp、 php、 aspx、 asp、 htm、 html文件,在文件尾部附加隐藏框架并利用已知的漏洞下载病毒;修改host文件,屏蔽特定网站;修改杀毒软件特定文件,降低其安全防御等级;在Autoexec.bat和Config.sys等文件中加载运行木马。搜索遍历硬盘或文件目录,对文件系统进行穷举搜索以寻找可感染的文件等。

1.3 针对内存的行为

病毒在感染和执行时会有大量内存区域的清除、移动、替换等操作,并额外的占用和消耗系统内存资源,改变内存总量,禁止分配内存;阻止内存空间的回收,并修改可用内存总量的参数值;修改中断向量的入口地址,使之指向病毒的中断程序。

监控特定的程序,如某款网络游戏,一旦用户输入账号密码进行登录时,就会通过内存读取获取该用户的账号密码信息。

1.4 针对进程的行为

此行为大致可以分为两类:一类是便于病毒实现其功能;另一类是为了提高其生存能力。

病毒要实现其功能就需要创建新进程运行或将注入系统进程中创建单独的线程执行病毒的代码。可以新创建一个进程实现各种功能,如加载进程打开计算机后门,提供远程黑客控制;创建进程实现远程监控屏幕等。这些新建的进程可能是隐藏进程,也可能进程名与系统进程相似如scvhost,iexploer等来提高病毒的隐蔽性。另一种方法是释放dll注入系统进程中,创建单独的线程执行病毒的代码以增加隐蔽性,如加载到winlogon.exe和explorer.exe等系统进程中查找当前进程是否是游戏进程,若是则通过内存读写的方式盗取账号密码;或在客户计算机上枚举窗口,如发现QQ或MSN聊天窗口则向窗口发送特定的字符串并发送出去等。

在实现功能的同时,新型病毒越来越注重提高自身的生存能力。许多病毒会创建线程查找并关闭可能存在的杀毒软件或保护程序进程窗口和标题;打开和控制音量防止用户察觉;创建互斥体进程,防止重复运行等。

┑1期 ┖兰胜等:多类支持向量机的病毒行为检测方法

┆扑慊应用 ┑30卷

1.5 针对网络的行为

打开特定端口,从指定的网址或FTP服务器下载其他病毒到客户计算机上或对现有病毒进行更新;利用MSN、QQ等软件发送消息,诱使接收者打开染毒网站或发送附件诱使接收者打开;盗取用户信息如账号密码或系统信息之后,使用SMTP协议发送至病毒编写者指定邮箱。

枚举用户名和密码攻击局域网内的其他机器或利用弱口令攻击随机IP地址的计算机,若登录成功就将自己复制到该机器上,并添加计划任务运行病毒,加速自身在网络上的传播;另外有的病毒是仅仅针对网络使用来造成危害的。比如ARP病毒会向局域网内的其他用户发送ARP欺骗包,使得局域网中大部分用户正常使用网络受到影响。

除了以上几点之外,有些病毒还会存在试图获取染毒系统的计算机名,操作系统版本,MAC地址等系统信息;获取浏览器类型和版本;控制打印机,摄像头;利用病毒程序中漏洞扫描模块探测存在的漏洞并获得漏洞信息,通过攻击漏洞获得一个远程主机的权限;修改系统时间使某些杀毒软件失效;迫使系统重启等行为。

2 行为特征集的构建

病毒检测分为以下几个步骤:特征提取,特征集分类筛选,通过特征集训练SVM,利用分类器进行分类。

2.1 行为特征的提取

主要从以下几个方面进行行为特征的提取。

1)程序调用的API函数。

由于现今操作系统中的程序是在保护模式下运行的,因此当程序欲执行某些关键操作如文件操作,资源访问等,则需要调用操作系统提供的各种系统调用函数来实现。前文所述的大部分病毒特有行为都是通过调用系统API函数实现的,因此系统函数调用序列就能较为准确地反映病毒的行为特征[1]。

2)用户行为。

当检测一个程序是否为病毒时,不能仅仅考虑其程序特征,还要将用户的行为放到一起综合考虑才能得出准确的判断。比如某些病毒会频繁打开iexplore进程访问指定网站,但许多正常程序也会做此操作,故此时可以考察用户有无点击鼠标或键盘输入,通常情况下正常程序不会频繁的自动打开IE浏览器,所以若没有用户点击鼠标或输入键盘的操作则此程序为病毒的概率大大增加。

3)其他不能通过监控API调用检测出的病毒行为。

许多病毒是利用系统漏洞等将自身隐藏在系统或正常软件中,通过系统或软件的运行来间接实现其目标功能。这些病毒的行为特征很难通过API调用来体现,而应从其他方面对其进行监控,如针对特定资源的完整性监控等。

2.2 特征集分类筛选

针对不同的病毒类型,收集各类病毒的不同特征作为待选特征,根据区分度对这些特征进行筛选之后得到所需特征集。

考虑到危害的类型、严重程度以及传播的方式等因素,可以对病毒程序进行分类。同时由于分类的类别过多会使得支持向量机的训练和检测的计算量大大提高,因此这里将特征集分为:狭义病毒、木马、蠕虫和正常程序4类,分别记为T1,T2,T3,T4。

收集得到的特征中很大一部分对程序分类并没有太大作用,且由于特征集维数较大时会增加扩大分类器的计算量,所以应去掉这部分特征,从而获取信息量适中,区分度强,或者说对鉴别程序类别贡献较大的属性形成所需特征集。这里引入信息熵[3]的概念,将程序是否拥有某些特征属性看做一种信息,并将某一程序属于何种类别作为一个事件。通过计算该信息对事件的影响来决定信息对判定的贡献程度,从而得出对应特征属性的重要程度,完成对特征属性的筛选。

分别定义随机变量XУ撵刂氮H(X)Ш驮谝阎随机变量Y条件下,XУ奶跫熵H(X|Y)如下:

H(X)=-∑ki=1pi(X=vi) lb pi(X=vi)

H(X|Y)=-∑mj=1pj(Y=vj)×H(X|Y=vj)

其中XЧ灿歇kе秩≈,pi为X取viе档母怕省H绱,可以定义信息增益如下:

IG(X|Y)=H(X|Y)-H(X)

IGП硎驹谝阎YУ那榭鱿,X信息的增加值。此处的IGП硎灸骋惶卣鞯男畔⒃鲆,即表示这一特征对鉴别程序类别所起到的作用。IGе翟酱,说明这一特征的区分度越高,分类能力越强;反之,IGЫ闲〉奶卣髟蚨愿美喑绦虻募别贡献较小。因此,在处理特征集时可以计算这些特征的信息增益,将其中IGе到闲〉奶卣魇粜匀サ,使得特征集的维数减小,提高分类的效率。

根据上述处理所得到特征集,可以将每一个程序Piв靡桓霾级向量表示。向量中每个分量表示该程序是否含有属性Aj,若存在该属性则对应分量值为1,否则为0。因此可构建如下矩阵MA×PП硎舅得特征集:

MA×P=

A1A2…AnP1P2う螵Pmb11b12…b1nb21b22…b2nう螃螃螵bm1bm2…bmn

其中,当程序Pi具有Aj特征时,bij=1;当程序Pi不具有Aj特征时,bij=0。オ

在得到特征集之后,即可以对支持向量机进行训练并得到所需分类器。

3 基于SVM的行为检测模型

3.1 基于SVM的二类分类

支持向量机是一种机器学习算法,它拥有较高的分类能力和坚实的理论基础。其主要思想是建立一个超平面作为决策曲面,使得正例和反例之间的隔离边缘被最大化[5]。首先给定一个训练集(x1,y1),(x2,y2),…,(xn,yn)∈R×{±1},其中xi∈R,R表示程序行为特征向量集合,yi∈{-1,1},И-1表示样本类别Ⅰ,1表示样本类别Ⅱ,n是样本的数量,对支持向量机进行训练,建立超平面:オ

wTx+b=0

其中x是输入向量,w是可调的权值向量即超平面的法向量,b是偏置。利用该超平面将样本空间划分为两部分,分别表示两类不同程序。引入Lagrange算子Е联iе后,可以得到该问题的对偶形式如下,即寻找最大化目标函数

АNi=1αi-12∑Ni=1∑Nj=1αiαjyiyjK(xi,xj)

的Lagrange乘子{αi}Ni=1,满足约束条件:

1)АNi=1αiyi=0

2)0≤αi≤C; i=1,2,…,Nお

其中:C是使用者选定的正参数;K(xi,xj)С莆核函数,这里选择径向基核函数,其形式为:

K(xi,xj)=exp(-xi-xj2σ2)

由此得到的决策函数为:

D(x)=sgn[∑ni=1αiyiK(xi,x)+b]

据此,利用训练特征集即程序API调用序列对分类器进行训练,将待测程序行为特征集输入分类器进行处理,从而确定其分类。具体流程如图1所示。

图片

图1 二类分类流程

3.2 多类分类SVM

上文所述的支持向量机分类策略只能实现对程序类别的二类分类,但实际情况中由于恶意程序种类多样,不同种类恶意程序的感染、传播和破坏的方式存在极大的不同,其行为表现也不尽相同。例如蠕虫程序中常见API的特定调用包括listen(), send(), sendto(), connect()等网络相关API,而传统狭义病毒则多调用文件操作相关API等。若能根据不同恶意程序的行为特征对其进行细分,则在实现恶意程序检测过程之后能更加有效地对不同恶意程序采取特定的防治策略,即在查毒步骤之后能够进行有针对性的杀毒,根据检测出的恶意程序种类判断系统可能存在的漏洞并采取相应的防御措施,防止同类恶意程序的再次攻击,从而大大提高恶意程序防治的效率。

因此针对不同类型的恶意程序,采取不同的防治方法是有必要的。这就需要能够准确区分不同类型的恶意程序,即实现程序的多类分类。传统的行为监测方法只能将恶意程序与正常程序区分开来,而不能分辨不同类型的恶意程序。本文将原有的二类分类支持向量机推广到多类分类,以运用于恶意程序的多类细分中去。

本文采用的多类分类方法是“一对一”方法[6],它实际是将多类问题转化为多个两类问题。分解策略是每次从训练集的KЦ隼啾鹬刑粞〕隽礁霾煌类别,对这两类进行训练构造一个二类分类器,故总共需要构造K(K-1)2Ц龇掷嗥,即将KЮ喾掷辔侍庾化为K(K-1)2Ц龆类分类问题。

因此对于待测程序的特征向量x,Э梢约扑憷啾皙iФ岳啾皙jУ木霾吆数Dij(x),Ы而可以计算Di(x):オ

Dij(x)=∑nj≠i, j=1αjyjK(xj,x)+bijDi(x)=

∑nj≠i, j=1sign(Dij(x))お

其中:

Dij(x)=-Dji(x)

Иsign(x)=1,0, x>0x≤0

这里采用的组合策略是投票选举法[7],待测程序的特征向量x每输入到一个二分分类器中进行分类之后,对其所判定的类别投一票,经过所有K(K-1)2Ц龇掷嗥鞣掷嘀后,对票数进行统计,票数最高的类别即判定为向量x所属类别,即xП还槔嗟:Иarg┆maxi=1,…,nDi(x)。オ

4 实验与性能分析

本文将所有程序分为正常程序、木马、蠕虫和狭义病毒4类,即T1,T2,T3,T4。首先由训练特征集两两之间进行训练,得到4×(4-1)2=6个SVM二类分类器。对于待测程序将其特征向量分别输入这6个分类器中进行分类,每次二类分类后对所判定的类别投一票,最后对总票数进行统计,将得票最高的类别定为该程序所属类别。具体流程如图2所示。

图片

图2 多类分类流程

实验数据包括550个正常程序和647个恶意代码,其中恶意代码中含231个木马程序,197个病毒程序以及219个蠕虫程序。其中正常程序一部分取自新安装的Microsoft Windows XP SP3系统文件夹中的PE格式文件,此外还包括一部分常用应用软件(所有应用软件均从相应官方网站下载)。病毒样本取自网站VX Heavens (vx. )及卡饭论坛(http: // /bbs /forumdisplay. php ? fid =31)。恶意程序分类依据参考/以及/。实验机器配置为Intel Pentium 2.00GHz,2GB RAM。

实验对所获得PE文件进行静态分析并提取出所调用API函数序列之后,共得到了10B373项API调用。如图3所示,在提取过程中发现,随着所分析PE文件的增加,获取的API调用总数目增加速度会逐渐减缓,即不同PE文件的API调用存在一定相似之处,另外病毒程序为了便于传播与隐藏,其文件大小会受到限制,也就是说,病毒程序的API调用数目也有限,因此新获得API调用会逐渐减少。由于大部分所获得的API调用仅出现于个别程序中而缺乏实际区分能力,且考虑到计算规模后最终选取其中2B136项作为所需API调用进行实验。

图片

图3 获取API调用数量随PE文件数量变化情况

通过对比如图4(图中横轴表示API序列,该图共包括600项API,点集表示程序存在对应API,图上部为正常程序点集,下部为恶意程序点集),选取了较有代表性的正常程序与恶意代码各六种,截取其API序列中IG较高的部分,Э梢苑⑾制涞饔眯蛄蟹植即嬖谧畔灾的不同:如图中区域(1),(2),(3)恶意代码所调用的API正常程序一般不会调用,这些区域中包括:

程序前

listen, shutdown, DeleteService, LookupPrivilegeValueA, keybd_event,FindFirstFileA,URLDownloadToFileA,ReadDirectoryChangesW, RemoveDirectoryA

程序后

等API调用。而其余区域API多为正常程序所调用,恶意代码调用较少。

图片

图4 正常程序与恶意程序API序列差异

以所获得的API调用序列为基础构建行为特征集。所得实验数据中的20%作为测试数据,80%作为训练数据。使用LIBSVM[8]实现支持向量机二类分类,利用训练数据分别训练6个分类器。经过实验测试后,确定了参数C=50,1/σ2=10。オ

本文实验主要关注正确判断某类程序类别的概率(Accuracy Rate, AR)。由前文所述根据不同API的IGе蹈叩投API序列进行排序。从图5所示可以看出,选取API数量不同会对4类程序判定的准确率(Accurate Rate,AR)均造成影响。经过观察与分析,随着API数量的增加,AR上升速度较快;当API数量接近1B200时,得到各类程序分类AR最高值;而当API数量继续增加时,AR值则呈缓慢下降趋势,这是由于当所取API数量过大时,许多IGе到系偷暮数调用也被计算在内,造成区分度的降低。所以在病毒行为检测中,并非选取API越多越好。根据实验结果选取特征向量维数为1B150时四类程序检测AR取到近似最佳值,如表1所示为多类SVM分类方法与已有的病毒检测方法[2]检测性能对比。

图片

图5 特征选择检测结果

表格(有表名)

表1 多类SVM与已有的检测方法性能对比%

检测方法检测准确率

基于签名的特征码49.28

RIPPER[2]89.36

朴素贝叶斯97.11

多重朴素贝叶斯96.88

多类SVM

木马92.96

蠕虫93.59

病毒93.60

如表1可以发现,多类SVM检测方法的检测效率优于传统的基于签名的特征码检测以及RIPPER技术,但较贝叶斯方法准确率仍存在一定差距,这是在引入了多类分类之后,由于不同种类病毒程序确实存在一定相似之处,对其进行准确细分的难度大于仅仅区分病毒程序和正常程序的二类分类,因此这种差距应在可接受范围之内。

5 结语

由于现实环境中应用程序的API行为复杂多样,比之正常程序与病毒程序的API差异,正常程序间的API差异更大,这使得一般仅靠简单的API调用来识别病毒并不实际可行。

本文通过对大量病毒程序的功能、行为进行分析,从中寻找病毒程序的“特有”行为特征,并将这些特征放大,将不同程序的特征收集起来形成行为特征集。这些特征主要是由程序调用API函数所形成的。在获得了所需特征集之后,利用熵值的原理对各个特征进行处理,通过计算其信息增量来判断其对区分病毒的贡献程度,也就是“放大”的依据,从而缩小特征集维数,完成特征集的筛选。之后利用支持向量机的概念,构造超平面实现程序的二类划分的方法。针对这种方法存在的不足,进一步提出了由支持向量机推广的多类分类策略,设计了一种详细划分待测程序类别的改进方法。最后,选择了1B000多个程序其中包括600多病毒程序,共提取2B000多个API,通过对这些API的统计、分析和计算,验证了思路的可性行,为病毒的检测提供了一种可行的方法。

参考文献:[1] XU J Y, SUNG A H, CHAVEZ P, et al. Polymorphic malicious executable scanner by API sequence analysis[C]// Proceedings of the 4th International Conference on Hybrid Intelligent Systems. Washington, DC: IEEE Computer Society, 2004:378-383.

[2] SCHULTZ M G, ESKIN E, ZADOK E, et al. Data mining methods for detection of new malicious executables[C]// Proceedings of the 2001 IEEE Symposium on Security and Privacy. Washington, DC: IEEE Computer Society, 2001:38.

[3] KOLTER J Z, MALOOF M A. Learning to detect malicious executables in the wild[J]. Proceedings of the 10th ACM SIGKDD International Conference.New York:ACM, 2004:470-478.

[4] WANG T Y, WU C H, HSIEH C C. A virus prevention model based on static analysis and data mining methods[C]// IEEE 8th International Conference on Computer and Information Technology Workshops. Washington, DC: IEEE Computer Society, 2008:288-293.

[5] 王硕, 周激流, 彭博. 基于API序列分析和支持向量机的未知病毒检测[J]. 计算机应用, 2007, 27(8):1942-1943.

[6] 余辉, 赵晖. 支持向量机多类分类算法新研究[J]. 计算机工程与应用, 2008, 44(7): 185-189.

[7] ABE S, INOUE T. Fuzzy support vector machines for multiclass problems[EB/OL].[2009-04-20].www.dice.ucl.ac.be/Proceedings/esann/esannpdf/es20026.pdf

[8] CHANG C C, LIN C J. LIBSVM: A library for support vector machines[EB/OL].[2009-06-20].www.csie.ntu.edu.tw/~cjlin/libsvm/.