恶意检测

2024-10-21

恶意检测(精选7篇)

恶意检测 篇1

移动互联网移动终端的广泛应用, 使得移动终端上的恶意软件成为重要的危险源。这些恶意软件通常会通过植入恶意代码篡改和采集用户信息、窃取账号、构建僵尸网络和获取root权限等操作, 进而对终端使用者和服务提供者的数据资产安全造成了极大危害。此外, Android平台由于其开放性、优秀的性能和易操作性等特点, 在智能移动终端市场具有较高的占有率, 但也正由于其开放性, 易于被恶客篡改和利用, 所以出现了数量巨大、变种较多的恶意Android应用。因此, 恶意应用检测成为近年来移动终端安全防护技术研究的热点问题之一。为了进行恶意应用检测, 提高检测精度, 本文的工作首先通过静态分析方法提取三类应用特征, 包括权限特征、组件特征和函数调用特征, 而后数据挖掘方法中支持向量机 (SVM) 模型对给定的样本建立分类模型, 最后将采集自第三方应用市场的500款Android应用作为样本 (其中有147 款恶意应用和353 款正常应用) 进行了实验, 获得了较好的检测精度。

1 恶意应用检测方法

1.1 检测框架

图1 为基于数据挖掘的恶意应用检测框架。给定收集的正常应用样本库和恶意应用样本库, 首先通过静态分析方法, 对于Android应用的APK (Android安装包) 文件进行处理, 提取多种类型的特征, 包括权限特征、组件使用特征和函数调用特征, 建立多类型特征集;其次, 采用主成分分析 (PCA) 方法进行特征选取;接着, 采用SVM分类方法建立恶意应用分类器;最后, 对应用分类器测试样本进行分类, 给出样本的分类结果。

1.2 特征提取

采用静态分析方法提取二进制程序样本的特征, 本文提取的样本特征包括组件使用特征、权限特征、函数调用特征等。

假设Android应用可指定的权限有n个, 权限集为

其中pi为第i个权限, n为权限总数, 1 ≤ i ≤ n, 则权限特征为

其中, 1≤i≤n。在已识别的恶意App中使用频率较高的权限有access_fine_location、write_external_storage、internet。

假设Android应用包含p个组件, 记为C1, …, C2, …, Cp, 则组件使用特征为

其中count (Ci) 表示组件使用次数, 1≤i≤p。

设Android应用包含q个函数调用, 一般是从外部调用、共享库或系统调用的函数, 记为fC1, fC2, …, fCq, 则函数调用特征

其中, 1≤i≤q。函数调用是应用程序与底层系统交互的纽带, 函数调用可以获取用户的subscriber ID、phone ID、其他类似个人隐秘信息和下载其他应用程序等。

可以采用静态分析的方式进行特征提取, 其步骤如下:

1) 将APK文件解压缩后获取其中的lib/*.so文件以及Androidmanifest.xml文件;

2) 从Androidmanifest.xml文件中提取权限特征和组件使用特征;

3) 将所有的lib/*.so文件进行合并产生对应的*.elf文件;

4) 从*.elf文件中得到类别为“func” (*.elf文件中包含的类别) 的所有应用程序编程接口。

1.3 特征选择

为了从组件使用特征、权限特征、函数调用特征等众多的特征中确定哪些特征对于分类有重大影响, 采用了基于主成分分析方法进行特征选择。

设有个n×p阶的数据矩阵是由n个样本组成, 其中每条样本都具有p个特征, 构成如下的数据矩阵

Xij表示第i个样本应用的第j个特征值。

若有,

则方程组左边的综合指标Z1, Z2, …, Zm是样本原先的p个特征X1, X2, …, Xp对应的m个主成分, bij是系数。其中, Zi与Zj (i≠j;i, j = 1, 2, …, m) 相互无关;Z1是X1, X2, …, Xp的所有线性组合中方差最大的;Z2是与Z1不相关的X1, X2, …, Xp的所有线性组合中方差最大的;Zm是与Z1, Z2, …, Zm - 1都不相关的X1, X2, …, Xp的所有线性组合中方差最大的。

在得到主成分Z1, Z2, …, Zm后, 再使用多元线性回归建模

其中 βi (0 ≤ i ≤ m) 是线性回归中变量Zi对应的系数, Y是线性拟合后的值。

1.4 基于SVM的分类器

经过主成分分析完成特征选择后, 从样本库中选取部分训练样本以训练SVM分类器, 同时选取部分测试样本作为测试集以进行分类结果的精度评估。选取样本的原则为充分考虑正常应用和恶意应用的比例, 从而使选择的样本具有代表性。本文所选取的训练样本数据占总样本的80%, 测试样本数据占20%。

构建分类器的过程中, SVM核函数的选取与惩罚系数C及核函数参数 σ 的取值对分类精度影响较大。为了使SVM分类器达到最佳分类结果, 本文中的核函数采用高斯核

其中x是空间中某个点, y是中心点, 表示x与中心点y之间的距离平方和, 核参数σ=0.5;错分惩罚因子C=50, 采用开源的软件包Libsvm[1]实现。

2实验验证

2.1实验设置

本实验采集自第三方应用市场的500款Android应用进行了病毒、蠕虫、木马等多种分析, 经过整理将147款恶意应用和353款正常应用作为最终的样本集, 样本集中的这些应用覆盖了娱乐、教育、体育、卫生、新闻、财经等多种类型, 具有代表性。所有实验在内存为8 GB RAM, 处理器为Intel (R) core i5CPU 3.5 GHz的机器上完成, 采用了Java语言实现了本文提出的基于静态分析的特征提取算法完成上述APK样本的特征提取。为了验证算法有效性, 与其他分类算法如后向传播神经网络、决策树算法C4.5等进行比较。

实验中采用的评价标准采用精度precision、召回率recall和平衡F分数F1 score, 其中精度计算方法为正确识别的异常应用个数与真实异常应用个数的比值;召回率计算方法为正确识别的异常应用个数与识别到的所有异常个数的比值;F1 score计算方法为精度与召回率乘积的2 倍除以精度与召回率之和。

2.2 结果分析

为了验证本文提出的算法的有效性, 将SVM算法与人工神经网络 (ANN) 和C4.5 的检测方法进行了比较分析, 并且考虑了采用不同特征组合表示应用样本的情况, 实验结果如表1 所示。其中表格中每个单元格的第一行描述了算法获得的F1score, 而第二行则是算法的precision和recall值, 粗体字表示每一个特征集刻画的样本取得最佳F1 score值的那个算法。

从表1 中可以看出:

1) SVM分类器几乎在所有的特征集上的F1 score都优于其他两种分类器;

2) 在考虑用单一特征刻画的应用样本情形下, 可以发现采用函数调用的方式刻画的样本集上取得的F1 score值最高, 优于其他两种特征集下的值, 其中基于组件特征的检测精度最低, 基于权限特征的恶意应用检测的精度较高;

3) 从特征组合角度来说, 基于多个特征刻画的样本集上取得的F1 score值均高于采用单一特征刻画的样本集取得的值, 且对于组件特征的改善更为明显。

3 总结

本文的方法以Android移动应用为研究对象, 从APK文件中静态提取出权限、组件行为和函数调用等特征, 进而采用支持向量机分类方法建立分类模型用于识别恶意应用。实验结果表明该方法能获得较好的检测精度。不过, 目前本文的工作中考虑的特征均为通过静态分析方法获得的特征, 在未来的工作中可以考虑通过动态分析的方法获取一些系统运行时的行为特征, 如系统调用特征、控制流特征等, 将对于进一步提高检测精度有更多贡献。

参考文献

[1]CHANG Chih-chung, LIN Chih-jen.Libsvm-a library for support vector machines[EB/OL].[2015-10-08].http://www.csie.ntu.edu.tw/~cjlin/libsvm.

恶意软件及其检测方法 篇2

1 恶意软件概论

1.1 恶意软件的定义及特征

最复杂的一类计算机系统威胁来自于那些利用系统漏洞的程序(在此我们关注应用程序和公共程序),这类威胁称作恶意软件(Malicious Software)。恶意软件是一种被设计用来对目标计算机造成破坏或者占用目标计算机资源的软件。它常被封装或伪装到合法软件中,在某些情况下通过E-mail或可移动存储介质等方式向其他计算机传播。

1.2 恶意软件的分类

恶意软件可以分为两类:需要主机程序的恶意软件和独立的恶意软件。前者又称为寄生恶意软件,其不能作为某个实际程序、公共程序或系统程序独立存在的程序片段,例如病毒和逻辑炸弹。后者是独立的程序,可以被操作系统调度或运行,例如蠕虫和僵尸网络。也可通过是否可复制对恶意软件进行分类。不进行复制的恶意软件是被触发器激活的程序或程序片段,例如后门和僵尸网络。进行复制的恶意软件在执行时可能生成若干个自身副本,并在当前系统或其他系统中被激活,例如病毒。

1.3 恶意软件的危害

恶意软件在未明确提示用户或未经用户许可的情况下,于目标计算机或其他终端上安装运行,其一般具有下述行为的一种或多种:强制安装、浏览器劫持、窃取、修改用户数据、恶意收集用户信息、恶意卸载、恶意捆绑及其他侵犯用户知情权、选择权的恶意行为等。这些行为将严重侵犯用户合法权益,甚至将为用户及他人带来巨大的经济或其他形式的利益损失。

2 恶意软件检测的传统方式

当前恶意软件的检测技术主要有特征码检测法、行为检测法和启发式检测法。这些技术原理各异,各自优点突出而迷人,缺点明显却又难以弥补。这些技术的广泛应用有其深刻内因,对其研究以“知己”也不乏驱动。

2.1 特征码检测法

特征码是被确定为只有某种恶意软件才可能会有的一串二进制字符串,而这字符串通常是文件里对应的代码或汇编指令的地址。特征码检测法通过采集恶意软件样本,提取其特征码,检测时将特征码与检测样本比较,判断是否有样本片段与此特征码吻合,从而判定该软件是否为恶意软件。特征码检测法速度快,误报率低,且占用资源少;但该方法只能检测已知病毒,对于目前广泛传播的变形病毒、多态病毒等无能为力。

特征码检测法的高速高效使其被当前主流杀毒软件所采用。在某一种恶意软件极度流行时,反病毒公司一般会采取计算整个恶意软件的MD5或SHA-256作为特征码的方法来加快查杀效率。

2.2 行为检测法

行为检测法利用恶意软件的特有行为特性检测病毒。恶意软件通常会有一些共同行为,且该类行为比较特殊,在正常程序中较为罕见。当程序运行时,监视其行为,如果发现了恶意软件行为,即可判定该软件是为恶意软件。行为检测法可发现未知病毒、可相当准确地预报多数未知病毒,但其误报率较高,且实现困难。

行为检测法因可检测多数未知病毒而备受亲睐,深入的研究带来了该技术的不断发展与成熟,从而使该技术得到不断的推广。一般的恶意软件行为包括:占用INT 13H、修改DOS系统数据区的内存总量、以COM和EXE文件做写入动作、病毒程序与宿主程序的切换等。通过对这些行为的监控,即可实现较为理想的恶意软件检测。

2.3 启发式检测法

启发式检测法是虚拟机检测和行为检测的结合,从工作原理上可分为静态启发和动态启发两种,静态启发式通过简单的反编译,在不运行恶意软件的情况下,核对恶意软件头静态指令从而确定恶意软件的一种技术。动态启发式通过杀软内置的虚拟机技术,给恶意软件构建一个仿真的运行环境,诱使恶意软件在杀软的模拟缓冲区中运行,如运行过程中检测到可疑的动作,则判定为危险程序。启发式检测法优点在于对未知病毒的防御,但针对不同类型的恶意软件,需要用完全不同的规则来构建启发式分析器的判断逻辑,实现较为困难,占有系统资源较多,还会导致过多的虚警,并存在可绕过方法。

启发式检测法属于主动防御的一种,其主要针对:木马、间谍、后门、下载者、已知病毒的变种,是当前对付未知病毒的主要手段。该方法作为特征检测技术的辅助手段,已经用实践经验证明了是检测病毒的一个成功手段,它具备某种人工智能特点,向我们展示了实现一种通用的、不依赖于升级的恶意软件检测技术和产品的可能性。因此启发式检测法具有广阔的应用前景,但其自身的难以克服的缺点极大限制了它的发展。

3 基于免疫原理的恶意软件检测

3.1 免疫原理检测法的原理

基于生物免疫原理的恶意软件检测法主要模拟生物免疫系统中核心思想,包括抗体的产生、自体耐受、克隆、免疫记忆等。

该方法的基本原理:计算机系统看作“自体”,把恶意软件看作“非自体”或者“抗原”,通过已知恶意软件可以生成相应的“抗体”,该抗体能够识别“抗原”,且“抗体”按照一定的算法进行变异和进化,可以实现免疫应答(即一次应答识别新“抗原”,二次应答识别旧“抗原”),并保持自适应性和自稳定性的特征。该原理的核心在于能够有效检测已知恶意软件并自适应识别未知恶意软件。

3.2 免疫原理检测法的特点

生物免疫系统具有良好的多样性、分布性、自学习、自适应和鲁棒性等,将生物免疫原理应用到恶意病毒检测中,使得这些优秀特性得到了极大发挥。理论研究表明,基于生物免疫原理的恶意软件检测系统能够有效检测已知、未知的恶意软件,在实现较高检测率的同时,可极大限度的控制误报漏报率。同时,随着系统的不断“学习”,这种优势将愈加明显。

3.3 免疫原理检测法的一种实现

1)抗原、抗体定义

抗原:采用恶意软件运行时产生的IRP请求序列作为抗原。可选取部分高频率IRP请求类型作为抗原组成(例如IRP_MJ_CRE-ATE、RP_MJ_CLEANUP等,最高频的八种IRP请求类型即占总数的98.68%)。

抗体:采用可与抗原相匹配的IRP请求序列作为抗体(即检测器)。检测器可分为三种,未成熟检测器:系统随机生成,需经过自体耐受才可以进行检测;成熟检测器:经过自体耐受后存活的未成熟检测器;记忆检测器:成熟检测器匹配到非自体抗原,且达到一定阈值后激活产生。

2)实现框架

(1)准备阶段:首先收集合理数量的正常程序运行时产生的IRP请求序列,即自体集合,以供自体耐受使用;之后随机产生大量未成熟检测器,以自体集合为基础对其进行自体耐受,得到一定数量的成熟检测器,并丢弃已经过自体耐受的未成熟检测器。通过该准备阶段,该实现已初步具备了恶意软件检测能力。

(2)检测阶段:对待检测软件进行检测时,首先将其产生的IRP序列与记忆检测器集合(初始阶段为空)进行匹配,若达到一定阈值,则将该软件判定为恶意软件,并对与该恶意软件匹配的记忆检测器进行克隆变异,产生部分未成熟检测器(需对这些未成熟检测器进行自体耐受,以产生成熟检测器用来更新、扩充成熟检测器集合);若未达到设定阈值,则将待检测软件产生的IRP序列与成熟检测器集合进行匹配,若达到一定阈值,则将该软件判定为恶意软件,并对与该恶意软件匹配的成熟检测器激活为记忆检测器,从成熟检测器集合中删除,并加入记忆检测器集合,同时对其进行克隆变异,产生部分未成熟检测器(同样需对这些未成熟检测器进行自体耐受,以产生成熟检测器用来更新、扩充成熟检测器集合);若依旧未达到设定阈值,则该待测软件安全,非恶意软件。

3)关键过程描述

(1)自体耐受:未成熟检测器需要经过自体耐受,以生成成熟检测器。即当未成熟检测器与自体集合相匹配时将其丢弃,否则即可将其激活为成熟检测器。其中,检测器长度、匹配度、最大匹配阈值等需根据实践统计结果确定。匹配算法可采用柔性字符串匹配算法、阴性选择算法等。

(2)检测过程:恶意代码检测算法描述如下:

说明:θ’为检测匹配阈值,count为fmatch>θ′的检测器数量;η为匹配非自体的检测器数量阈值。匹配算法可采用柔性字符串匹配算法、阴性选择算法等。

(3)检测器更新与扩充:由于系统资源有限且需要考虑检测效率,故检测器数量不能无限的大,可对其设置上限值。当检测器数量超过上限值或者有新的检测器加入时需对检测器集合进行更新扩充。具体解决方案如下:对成熟检测器及记忆检测器采用Splay Tree格式存储,当向成熟检测器集合中添加新元素时,加入该元素并维护Splay Tree,若检测器数量达到上限值,直接删除叶子结点;当向记忆检测器集合中添加新元素时,加入该元素并维护Splay Tree,若检测器数量达到上限值,将叶子结点的检测器加入成熟检测器集合。对于检测器更新与扩充,也可酌情选择更加高效与复杂的最近最少使用算法(LRU:Least Recently Used)。

4)实现方案分析

(1)本实现方案在系统的不断地检测过程中,通过对成熟检测器集合的更新、扩充,实现了系统自身的学习,成长。(2)通过记忆检测器集合的设置(优先将待检测序列与记忆检测器集合匹配),使得对待检测软件的检测更加高效、高速。(3)通过将待检测序列与检测器的匹配,可实现对绝大多数“非己”成分的判别,从而达到检测未知恶意软件的目标。

4 结束语

随着计算机系统及其互联网的高速发展,计算机安全已然成为突出的问题,恶意软件的检测已逐渐提上日程,而恶意软件的传统检测技术原理各异,各自优点突出,但缺点明显却又难以弥补,这些检测还不足以提供绝对安全的Web环境。理论研究表明,基于生物免疫系统的计算机安全系统有着很好的恶意软件检测能力。将人工免疫系统的分布性、动态性、多样性和自适应性应用到恶意软件检测中,在计算机及其网络安全领域有着广阔的应用前景。文章中提出的基于免疫原理检测法的实现方案在系统不断地检测过程中,通过对成熟检测器集合的更新、扩充,实现了系统自身的学习,成长。

参考文献

[1]William Stallings.Operating Systems Internals and Design Principles Sixth Edition[M].陈向群,陈渝,译.北京:机械工业出版社,2010,9.

[2]张福勇,齐德昱,胡镜林.基于免疫原理的恶意软件检测模型[J].计算机应用研究,2010,27(6).

恶意网页及其检测技术研究 篇3

Internet越来越成为人们生活的一个不可缺少的部分, 而Web服务则是Internet服务的主要服务。然而在Web服务给人们带来便利的同时, 恶意网页也给用户带来了安全威胁。恶意网页指利用软件或系统操作平台等的安全漏洞, 通过执行嵌入在网页内的Java Applet、Java Script脚本语言程序、Active X控件等, 以强行修改用户操作系统的注册表设置及系统实用配置程序, 或非法控制系统资源盗取用户信息, 或恶意删除硬盘文件、格式化硬盘为行为目标的非法恶意程序。

恶意网页这种恶意程序能够自动执行, 完全不受用户的控制。一旦用户浏览该恶意网页, 恶意代码可以在用户没有觉察的情况下进行恶意的操作, 给用户系统带来不同程度的破坏。

1 典型恶意网页

最初的网页内容主要由HTML标记和文本内容构成。现在, 为使网页具有更丰富的表现能力, 网页浏览器一般都支持脚本、可插入的功能扩展控件。但这些功能往往容易被人利用, 使网页变成攻击用户的工具。

1.1 恶意帧

HTML标记中的iframe标记可以将一个网页的内容嵌入在另一个网页中显示。恶意网页编写者在获取一些Web服务器的权限后, 通过SQL注入, 将恶意网页的地址通过iframe嵌入在正常网页的末尾, 并使iframe大小为0从而对用户不可见, 使得用户在浏览正常网页时, 在不知情的情况下访问恶意网页。

1.2 恶意脚本

恶意脚是Java Script脚本或VBscript脚本, 脚本引擎的WSH核心对象模型 (Core Object Mode1) 提供对系统资源的访问能力, 恶意代码在脚本引擎中解释执行, 因此恶意网页脚本代码可以实现文件系统、注册表等系统资源的访问, 从而可以对用户进行攻击, 比较常见的是修改IE默认主页, 使其指向一个固定的网站地址。

1.3 Java Applet与Active X

Java Applet是使用Java语言编写的小程序, 通常的应用方式是使用标签将其嵌入到HTML语言中, 当用户浏览网页时, 网页中包含的Java Applet就会被下载到本地计算机执行。如果Java Applet含有恶意代码, 就可以访问本地资源, 对用户系统进行攻击。

Active X Control比Java Applet的功能更强, 也是一种可下载并执行的可执行组件。通过在网页内容中加入标签而用户浏览器安全级别较低或用户主动下载, 就会使Active X控件下载到本地文件系统并执行, 如果其中包含恶意代码, 其破坏性将比Java Applet更大。

2 恶意网页检测技术

随着恶意网页攻击的日益增多, 对其进行分析检测的技术也在逐步发展。在对恶意网页的检测中, 比较常见的技术称为客户端蜜罐系统, 客户端蜜罐系统不是简单的在用户访问网页时对所访问的网页进行分析, 而是通过网络爬虫自动和Web服务器交互, 并分析检测所获取的网页内容, 将所访问的网页标记为恶意或非恶意。客户端蜜罐系统对网页的检测分析技术可分为低交互和高交互两大类。低交互的客户端蜜罐系统对网页的检测技术常见的有特征码匹配检测法、静态分析法、启发式方法;高交互的客户端蜜罐系统对网页的检测一般使用动态监控法。

2.1 特征码匹配检测法

特征码匹配检测是反病毒软件中常见的方法, 该方法也可以应用于恶意网页的检测。这种方法将网页内容与已知的恶意网页特征码进行比对来判断网页是否为恶意网页。特征码匹配方法简单而有效, 但是一般只能对已知的恶意网页攻击有效, 对未知的恶意攻击则无法判断。由于特征码匹配法只简单的对网页内容进行串扫描, 有时也会发生误判的情况。针对特征码匹配方法, 恶意网页代码很容易使用代码混淆或加密技术来躲避检测。

2.2 静态分析法

网页内容由标记和脚本构成, 通过分析脚本语义, 可以检测到其中的恶意代码。静态分析技术需要预先确定规则, 在分析脚本过程中, 对于破坏规则的代码, 则认为是恶意代码。由于检测方法需要设定规则, 所以只能检测破坏已知规则的恶意网页攻击。

2.3 启发式方法

启发式方法分析网页内容的某些特征, 每个特征赋予特定的分值, 当网页的总分值超过特定值时, 判定为恶意网页。启发式方法又可分为动态启发法和静态启发法。动态启发法通过评估网页内容的行为来判断网页是否恶意, 如是否下载文件或执行可执行文件;静态启发法根据网页内容结构判断网页是否恶意, 如是否对网页脚本代码进行加密。

2.4 动态监控法

通过检测系统状态的方式判断网页是否为恶意网页, 如监视系统注册表、文件系统、进程运行情况、网络状态等。采用动态监控法的客户端蜜罐系统通过启动浏览器获取网页内容并运行, 由监控软件监控系统来监视网页是否有恶意的下载、非正常的进程启动、非法的注册表读写等来确定网页是否有恶意行为。

高交互的客户端蜜罐系统法对恶意网页的判断一般来说需要较长的时间与较多的系统资源, 准确率也较高, 但对于需要用户特定操作才引发恶意行为的网页和特定时间后引发的恶意行为也很难判断。低交换客户端蜜罐则检测速度较快, 能检测出高交互客户端蜜罐通常检测不到的恶意响应, 但检测的准确率不如高交互客户端蜜罐系统。

3 结束语

随着Internet的快速发展, 恶意网页带来的安全问题也日益严峻。恶意网页的检测与清除技术的研究已经成为人们关注的问题。简单的依靠各种防病毒软件并不能完全防止恶意网页的侵袭。对各种类型的恶意网页和检测技术的研究有助于人们更好地防范恶意网页的攻击。

摘要:随着互联网的快速发展, 恶意网页所造成的危害也越来越大。对典型恶意网页进行了分析与分类, 通过对现有的恶意网页检测技术的比较分类, 分析了各种检测技术的优缺点。

关键词:恶意网页,检测技术,客户端蜜罐系统

参考文献

[1]JOEL SCANBRAY.Mike Shema, Web Application Security Se-crets&Solutions[M].北京:清华大学出版社, 2003.

[2]HOLZ T.KOETTEH M.The German honeyclient project[EB/OL].http://www.chjcagoh0neynet.org/german-h0neyp0t-holz.pdf.2007.

[3]WANG, K.Honeyclient[EB/OL].http://www.honeyclient.org/, 2005.

[4]SZOR, P.The Art of Computer Virus Research and Defense[M].Ad-dison-Wesley Professional, 2005.

[5]MUCHNICK, S S, AND JONES, N.D.Program Flow Analysis:Theoryand Application[M].Prentice-Hall, Inc., Englewood Cliffs, 1981.

基于机器学习的恶意程序检测研究 篇4

计算机病毒, 是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据, 影响计算机使用, 并能自我复制的一组计算机指令或者程序代码。目前, 由于计算机网络及现代通信技术的发展, 病毒的含义有所扩展, 一般将病毒、网络蠕虫、黑客有害程序等执行危及系统安全、破坏系统或未经用户许可获取其敏感信息等功能的程序都称为“病毒”。这种广义上的“病毒”通常也叫“恶意程序”。文中病毒皆指广义上的病毒, 和恶意程序所指相同。

检测病毒方法有特征代码法、校验和法、行为监测法、软件模拟法等。这些方法依据的原理不同, 实现时所需开销不同, 检测范围不同, 各有所长。工业界最经常使用的是基于特征代码, 也即基于签字的检测方法。传统的商用病毒扫描器都是基于特征代码来进行检测的。对于每个恶意程序, 扫描器都包含一个相应的特征字节序列并以此来识别。这些特征代码由专家手工找出或通过自动方法生成。这些病毒扫描器可以有效地发现已知的恶意程序, 但却不能可靠地发现未知的恶意程序。因为一个未知的恶意程序, 由于事先不存在其识别模式, 即相应特征代码而极有可能无法发现。

将机器学习技术应用于恶意程序检测, 可以准确有效地发现未知恶意程序。因为机器学习方法可以从已存在的数据中发现有关的模式, 并可以利用这些模式进行相似性搜索, 发现含有类似模式的恶意程序。

1 基本方法和技术

1.1 系统结构

机器学习主要用于智能数据分析, 并已成为智能数据分析技术的源泉之一。其经典定义为计算机利用经验改善系统自身的性能。可以理解为它从数据中归纳或发现规律, 以改进“某种”性能。经过近20年的飞速发展, 机器学习已经具备了一定的解决实际问题的能力, 正逐渐开始成为一种在众多的学科领域都有应用的基础性、透明化的支持技术和服务技术。例如, 机器学习技术, 尤其是其中的贝叶斯学习技术正在支撑着各类搜索引擎。机器学习有两种最主要的方式:预测和描述。其中预测机器学习对应于分类问题;而描述机器学习则对应于聚类问题。将机器学习应用于恶意程序检测, 即是以程序为学习对象, 并判断待检测程序是恶意程序还是普通程序。这是一个典型的分类问题。

基于机器学习的恶意程序检测的系统结构如图1所示。各模块功能如下: (1) 训练样本:存放用于学习的程序集; (2) 特征抽取器Ⅰ:对样本程序进行特征抽取, 并将特征传送给学习算法执行器; (3) 特征抽取器Ⅱ:对待检测程序进行特征抽取, 并将特征传送给规则评估器; (4) 学习算法执行器:在从训练样本中抽取出的特征上执行学习算法, 生成最新检测模型;并将检测模型传送给分类器; (5) 分类器:存放检测模型, 用接收到的新规则进行规则更新;并将待检测程序中抽取出的特征与模型相比较, 根据这些信息判断此程序是否恶意, 得到最后结果。

1.2 特征抽取

在基于机器学习的恶意程序检测系统中, 特征抽取和分类器的构造等都是关键技术。要表示程序首先要提取程序特征。程序的特征应该具有以下特点:特征能充分表示程序;程序在特征空间中的分布具有较为明显的统计规律;程序映射到特征空间的计算复杂度不太大。要表示好程序, 就要寻找最有代表性的程序特征。这里静态提取了3类不同的特征, 这些特征代表了各程序所包含的不同信息, 可以被用于产生相应的检测模型。

(1) LibBFD

使用GUN’s BinUtils工具包从Windows程序中提取有效信息。这些信息都是从程序的头部信息中获得的。另外, 这些信息也是在未运行程序的情况下, 通过检查代码的静态属性, 利用LibBFD获得的。为了理解资源是如何影响程序代码行为的, 这里使用了3种特征:

(1) 进制程序代码所调用的所有动态连接库列表

该方法将程序调用的所有动态连接库列表作为特征向量。特征向量由30个布尔值组成, 分别代表程序是否调用了某个动态连接库, 如:advapi32∧avicap32∧…∧winmm∧wsock32。此特征向量是DLL名称的联合, 是由至少两个未被使用的资源组成, 它们分别是:ADVAPI32.DLL (高级WINDOWS API) 和WSOCK32.DLL (WINDOWS SOCKET API) 。它同样调用两个资源:AVICAP32.DLL (AVI捕获API) 和WINNM.DLL (WINDOWS多媒体API) 。

(2) 相应调用这些动态连接库中所有函数的列表

第二种方法与第一种方法相比, 增加了函数调用信息, 其特征向量包含了2229个布尔值, 如:Advapi32.AdjustTokenPrivileges () ∧avicap32.GetFileSecurityA () ∧…∧wsock32.recv () ∧wsock.send () 。此特征向量是DLL的以及在每个DLL内调用的函数的联合, 至少由4个资源组成:两个从ADVAPI32.DLL调用的函数AdjustTokenPrivileges () 和vicap32.GetFileSecurityA () ;两个从WSOCK32.DLL调用的函数recv () 和send () 。

(3) 每个动态连接库中所调用不同函数的数量。

第三种方法所获得的特征向量包含30个整型值, 可以粗略地给出某一个动态连接库被调用程度的次数, 如:advapi32=2∧avicap32=10∧…∧winmm=8∧wsock32=2。此特征向量是DLL的以及在每个DLL内调用的函数被调用次数的联合, 描述了调用ADVAP132.DLL中的8个函数, 调用了WSOCK32。DLL中的2个函数。

(2) 字符串

在普通程序中存在着能把它们与恶意程序区分开的字符串, 而在恶意程序中也包含着类似的字符串, 这些字符串把它们与普通程序区分开。代码中存在的每一个字符串都被作为一个特征。GNU字符串程序可以从任何文件中提取连续可打印字符。

(3) 字节顺序

Hexdump是一种可以将二进制文件转化为十六进制文件的工具。利用Hexdump获得一个程序的十六进制文件后, 就可以产生若干行字节顺序形式的特征, 每一行代表一个机器指令短序列。

2 分类算法

目前用于恶意程序识别工作的机器学习算法有两类:基于规则的方法和基于概率的方法。前者常常得出人们可以理解的显式规则;后者往往通过某种计算表达式推出结果。本质上, 概率统计方法可以看成规则方法的一种推广, 只不过概率统计方法中得到的规则是一种不被人轻易理解的“隐式规则”。不管是基于规则的方法还是基于概率统计的方法, 在使用时都经历从训练到过滤的过程。通过已有的训练集合, 包括正例和反例, 训练出相应的恶意程序规则, 包括显式规则或隐式规则, 然后将规则应用到新的程序判定中去。

2.1 基于规则的分类算法

基于规则的学习算法中主要包括两个步骤:生成规则和修剪规则。在规则生成过程中, 每次根据某个度量值以贪婪方式向规则中增加子项, 一直到某些条件成立, 从而形成一条规则;在规则修剪过程中, 删除那些可能与训练样本太过接近的规则子项或规则本身, 因为训练样本中包含噪音, 如果与其太过接近, 则也越接近噪音。当通过对训练集的学习, 规则生成且通过测试集优化后, 就可以开始判断新程序的类别了:在规则组中按照待分类程序的内容来查找相应的规则, 根据找到的规则决定其类别。基于规则的算法有决策树、FIND-S、IREP、RIPPER等。

其中RIPPER方法以LibBFD信息为学习特征, 在一组训练实例上学习后产生恶意代码的分类模型, 即一组规则集。

2.2 基于概率的分类算法

使用概率结构来表示特征项, 是由Belkin和Croft于1992年提出的。其中, 最常见的算法是朴素贝叶斯算法以及它的一些改进算法。朴素贝叶斯算法被广泛用于模式识别与机器学习的应用中。在这类算法中, 根据新程序的特征项在训练样本中的一些概率统计值来估计其所属类别。

假设某个程序带有特征F, 定义C为类别集上的一个随机变量:普通程序和恶意程序。判断某个程序的归类即是当某个程序包含某个特征集F时, 计算它属于某个类的概率。应用贝叶斯规则把概率表示为:

为了使用简单贝叶斯规则, 假设特征的出现是相互独立的。如果一个程序的特征集包含特征F1, F2, …, Fn, 则公式1变为:

其中, p (Fi│C) 是特征Fn出现在类C中的程序的频率, P (C) 是类C在整个程序集中的比例。这种方法最后计算出一个带有某些特征的程序是恶意程序的可能性。

3 基于RIPPER和贝叶斯方法的检测方法

将RIPPER方法和朴素贝叶斯方法用于程序分类, 这两种方法各有其优缺点, 现分析如下:

(1) RIPPER是一种基于规则的方法, 学习后给出一组规则集, 分类过程简单且迅速。它具有可读性强以及易于优化的优点, 可以在获取规则后很容易地进行手工修改, 从而可以加入某些专家的意见以便提高分类器的性能。但是如果从规则集中找不到合适的规则, 则没有很好的解决办法。

(2) 朴素贝叶斯方法是最有效的分类方法之一, 但是它的特征独立性条件在现实世界中常常不能满足。为此人们提出了许多贝叶斯改进算法, 这些方法大部分是通过放宽独立性假设来获得更好的性能, 如贝叶斯树分类器以及懒惰贝叶斯树分类器等。

从以上的讨论可以看出, RIPPER方法和朴素贝叶斯方法分类方法有不同的优缺点, 下面我们考虑结合上述两种方法来构造新的程序分类模型:

(1) 贝叶斯变体公式

假设F'和F''是特征集的两个不相交的子集, 依据贝叶斯变体公式有:

代入得到:

上述变体公式将对于整个特征集的独立性假设缩小到对于特征集子集F'中特征的独立性假设, 同时附加了条件限制F'', 如此公式4所需的独立性假设要弱于公式2需要的独立性假设。

(2) 规则匹配度定义

假设规则集R={R1, R2, ···, Rr}, 程序的特征集F={F1, F2, ···, Fn}。其中每条规则Ri条件中的特征集RFi={Fi1, Fi2, ···, Fim i}。将规则与程序的匹配度定义为该程序在规则Ri中出现的特征数目:num (RFi∩F) 。则与程序匹配度最高的规则Rk满足公式:。

(3) 基于RIPPER和贝叶斯方法的程序检测方法

基于RIPPER和贝叶斯方法的程序分类方法步骤如下:

步骤1在训练样本集上执行RIPPER学习算法, 得到规则集R;

步骤2在规则集R中查找满足待分类程序的规则, 若找到则通过该规则对程序分类, 否则进行步骤3;

步骤3在规则集R中查找与待分类程序匹配度最高的规则Rk;

步骤4找出待分类程序在规则集中出现的特征集F'';

步骤5将F''所覆盖的训练样本作为贝叶斯方法训练样本, 待分类程序未在规则Rk中出现的特征集为F'集, 利用公式4将程序分类。

(4) 方法分析

在上述方法中, 首先根据RIPPER方法学习后得到的一组规则集对程序进行分类, 如果从规则集中找不到合适的规则, 则再使用贝叶斯方法。由于利用规则放宽了贝叶斯方法所要求的强独立性假设条件, 这样当规则不能满足时, 可以通过贝叶斯方法来得到更好的分类结果。

4 结束语

商用病毒扫描器通常基于特征代码实现, 可以有效地发现已知的恶意程序, 却不能可靠地发现未知的恶意程序。将机器学习技术应用于恶意程序检测可以准确有效地发现未知恶意程序, 弥补传统病毒扫描方法的不足。本文讨论了基于机器学习的恶意程序检测方法, 并提出结合RIPPER和贝叶斯方法检测程序, 当规则不能满足时, 可以通过贝叶斯方法来得到更好的分类结果。

参考文献

[1]计算机病毒防治管理办法[DB/OL].http://www.hy.jsinfo.net/tz/jfts.htm.

[2]计算机病毒的检测方法[DB/OL].http://www.itsk.cn/html/wlcl/ffcs/27877.html.

[3]MATTHEW G.SCHULTZ, ELEAZAR ESKIN, SALVATORE J.Stolfo.MEF:Malicious Email Filtera UNIX Mail Filter that Detects Mali-cious Windows Executables[C].USENIX Annual Technical Confer-ence-FREENIX Track, Boston, MA, 2001.

[4]MATTHEW G.SCHULTZ, ELEAZAR ESKIN, EREZ ZADOK, SAL-VATORE J.STOLFO.Data Mining Methods for Detection of New Malicious Executables[C].IEEE Symposium on Security and Priva-cy, 2001.

[5]MEF GROUP.The MEF Project[DB/OL].http://www1.cs.columbia.edu/ids/oldwebsite_before_12_2005/index.html.

[6]TOM MITCHELL.机器学习[M].曾华军, 张银奎, 译, 北京:机械工业出版社, 2003.

[7]朱明.数据挖掘[M].北京:中国科学技术大学出版社, 2002.

恶意检测 篇5

1.1 研究目的

对非平衡流量导致的恶意网络行为进行有效的检测是本论文研究的主要目的。将网络数据包内占少数的恶意网络数据在传播之前就加以遏制,防止造成不必要的损失是非常有意义的。本文主要先从从恶意网络行为APP样本开始入手,基于恶意样本数据采集恶意行为流量,首先提取数据流量的TCP流部信息,分析其特点,然后利用不平衡数据分类方法识别数据包中的少数恶意类,在获取恶意行为流量的基础上重点分析恶意网络行为流量的特征,在分析的基础上制作出恶意样本数据集。并在研究机器学习算法的基础上,对采集的不平衡流量数据进行实验以使其适应于非平衡流量数据的分类过程,在分类过程中得出检测恶意网络行为比较好的方法。

1.2 研究意义

随着社会各个领域计算机应用的普及,信息技术和网络技术高度发展,产生的数据量尤其是基于移动设备的网络数据流量日益增大。为应对日益严峻的网络安全形势及满足加强互联网安全监管力度的要求,达到监管和检测用户上网行为、防止信息泄漏和控制网络流量等目的。本文针对非平衡流量导致的恶意网络行为问题,提出了检测恶意网络行为的方法,致力于提升运营商对非平衡流量导致的网络恶意行为的安全管控能力。分析与研究非平衡流量导致的恶意网络行为对保障互联网安全检测技术的进步,满足网络安全战略及安全监管要求、提升整体网络安全水平具有深远的指导意义。

2 不平衡流量数据分类问题

2.1 不平衡数据分类问题概述

不平衡流量分类问题的实质还是一个不平衡数据分类问题。但传统的机器学习分类算法基本都是基于以下理论假设的:(1)以准确率作为评价算法优越性的重要准则;(2)在分类过程中假设所有类的分布基本平衡;(3)假设数据集中每个类的误分代价都是一样的。然而在实际应用的许多领域当中都存在着不平衡问题。不平衡类分布的意思就是在一个数据集内,有某几个类的样本数只占总样本数量的极小部分,这些类就称为少数类,而拥有绝大部分样本的那些类就称为多数类。比如在欺骗信用卡检测[10]、使用卫星雷达监测海面石油油污状况[11]、医疗诊断[12]、文本分类[13]等研究当中都是以少数类样本的信息作为研究重点的。例如在欺骗信用卡检测当中,大多数的交易数据都是正常的,只有极少部分交易数据是非法的,但是这极少部分的非法交易数据才是我们关注的重点。传统的机器学习算法是无法准确解决不平衡类分布的问题的,因为传统的机器学习算法虽然能够在分类过程中获得较高的分类准确率,但是该准确率是以总体的最大分类精度为目标的,所以它们往往会忽略对数据集中少数类的样本识别。

不平衡数据集通常具有比平衡数据集更多的特点,因此会导致传统的分类方法无法准确预测少数类的分布。造成这一问题的原因如下:

(1)数据稀缺。数据稀缺问题具体来说又可分为绝对稀缺和相对稀缺[14]。绝对稀缺是指少数类样本绝对过少,所呈现出的信息量绝对过少,不能够根据仅有的信息发现少数类的内部规律;相对稀缺是说少数类样本的实际数量在整个数据集当中占比较小。

(2)数据噪声。数据噪声问题在任何一个分类问题中都是无法避免的[13],因为分类器可能误把少数类样本当做噪声去除,因此数据噪声对不平衡分布的分类问题将产生更大程度的影响。

(3)不恰当的归纳偏置。由样本进行归纳时需要一个特定的偏置[15],然而归纳偏置并不利于少数类。因为当分类器不确定样本集的类别时往往会将其划分到多数类当中,显然这也会降低少数类的分类精度。

(4)不合适的评价指标。评价指标是决定分类器性能的直接因素,针对平衡数据集分类的评价指标一般是准确率,而这样的评价准侧重于样本整体的分类准确率却忽略了针对少数类的识别能力,这种结果往往是我们不想得到的。

2.2 处理不平衡数据分类问题的方法

实现数据分类一般有以下两个步骤:第一步,根据已有的样本集建立一个数据模型,用于说明分类的属性集和类别信息;第二步,根据已经建立的模型对要测试的数据集进行分类处理[16]。目前针对不平衡数据集的处理办法一般有两种:从数据集角度进行处理和从算法角度进行处理。

从数据集角度即在预处理阶段采用重构数据集的方式进行处理,目前常用的重构数据集的方式有过抽样和欠抽样[17]以及类平衡等方式。通过这种方式来增加少数类样本数量或减少多数类的样本数量,最终达到减少样本不平衡度的目的。从算法角度即对传统的分类算法进行改进,主要通过对不同的类赋予不同的权值、重新确定分类边界、改变类分布概率等方式实现。目前处理不平衡类分布的算法主要有代价敏感学习算法、集成方法及支持向量机(SVM)等。

2.3 不平衡数据问题的评价准则

通常的分类问题一般都会以准确率作为评价准则,准确率Accuracy=(TP+TN)/(TP+TN+FP+FN)(如表2.3所示),但是在不平衡分类问题中少数类样本的数量是非常少的,可能只占总样本数量的1%,但往往就是这1%的数据会对要解决的问题产生决定性的作用。这就会导致即使分类器可以达到99%的分类准确率,但如果把仅占少于1%的少数类样本错分的话,该分类器的分类结果还是没有任何意义的。因此对于不平衡分类问题应该提出更加合理的评价准则。

目前,常用来评价不平衡分类的指标有:查准率precision、F-value值、召回率TPrate、查全率TNrate、ROC的下曲线面积AUC、G-mean值、误判率FPrate[14],其中ROC曲线(受试者工作特征曲线)是以FP/(TN+FP)为x轴,TP/(TP+FN)为y轴画出的曲线。其他指标具体如公式2.1-2.7所示:

在本章当中,主要利用改进的算法进行恶意网络行为的检测。主要选用Ada Boost、SMOTEBoost及C4.5_CS三个集成算法对数据进行分类处理,其中选择了TP Rate、TN Rate、G-mean、AUC以及Accuracy作为分类性能的评价指标。

3 不平衡算法简介

3.1 Ada Boost算法简介

Ada Boost(Adaptive Boosting,自适应增强)算法是一个典型的迭代算法。该算法首先将所有的样本赋予一个初始权值,比如1/n(其中n是训练样本集中样本个数);然后进行训练得到第一个弱分类器;分析第一个弱分类器整体分类准确率以及对每个样本的识别状况,改变训练样本的权值,使正确分类的样本所占权值减小,错误分类的样本所占权值加大得到新的样本集;再用第二个弱分类器进行训练,以此类推,直到结果达到预先设定的阈值为止。最后将各个弱分类器的结果进行叠加最终得出一个分类性能比较好的强分类器。叠加的方式有很多种,既可以通过平均加权的方式进行叠加也可以通过将分类性能好的弱分类器赋予较高的权值的方式进行叠加,一般来说后一种叠加方式更好一些。另外,Ada Boost算法对于噪声数据是非常敏感的[25],对噪声数据的错误分类容易导致过拟合问题,因此在处理过程中应该格外注意噪声数据的影响。

3.2 SMOTEBoost算法简介

SMOTEBoost算法是集成了SMOTE(synthetic minority over-sampling technique,人工合成样本过采样技术)以及Ada Boost算法的组合算法。SMOTE方法即利用少数类样本之间的线性差值,过N倍采样以后在该样本K个最近邻的样本中选择N个,然后利用如4.1所示公式合成N个新样本添加到原训练集当中的方法。SMOTEBoost算法首先通过合成少数类的部分样本以改善不平衡度,再使用自适应增强算法对新样本进行训练。这样既可避免单一使用SMOTE方法取样带来的不能对合成样本的数量进行精确控制以及合成样本时不能够有区别的选择少数类样本的缺点[26],又可以避免Ada Boost算法因为多次迭代导致的某些样本权值过大从而产生过度拟合的问题,是处理不平衡分类问题比较好的选择。

其中,Snew是经过SMOTE方法合成的新样本,S是少数类样本,rand[0,1]是用来产生随机数的随机数函数,xi是s的第i个邻近样本,i=1,2,…,N。

3.3 C4.5_CS算法简介

C4.5_CS算法即基于代价敏感学习的C4.5算法。只使用C4.5算法进行分类时并不能够保证该决策树建立的代价是最小的,代价敏感学习方法的总目标是基于实现总体误分代价最小原则的。因此引入代价敏感因子的决策树算法可以减少生成树的剪枝代价及过大的时间复杂度。在二分类问题中,误分代价矩阵是一个2×2的矩阵Cost2×2,如表3.3所示。

其中Cost(m,n)代表将类m的样本错误分类成类n的代价。在上述表格中,Cost(N,N)、Cost(P,P)的取值为0,即将样本正确分类不需要付出任何代价;而Cost(P,N)、Cost(N,P)两个误分代价需要根据具体情况来设置一个最优值。其中下述实验当中设定Cost(P,N)为3.0,Cost(N,P)为1.0。

4 导致恶意网络行为的流量数据分析

由于本论文的研究是基于课题组已有项目的基础之上的,因此用于实验的流量数据也是从课题组原始数据中提取的。在流量特征的提取过程中,每个流文件(PCAP文件格式的)经过处理以后自动转化成了CSV文件格式的特征集。在提取过程中,总共选择了如表4所示的6个特征属性来描述TCP流特征。

之所以会选择这几个特征作为描述TCP流的属性并不是因为它们包含了特定的TCP流内容,实际上它们仅仅代表了一个TCP流序列的统计特征而已。选择上传字节数和下载字节数的原因是因为在一般情况下,对于正常的应用程序而言请求数据包的大小通常是比较小的。当返回的数据是图片、网页或者视频时,下载字节数就会明显大于上传字节数,所以下载数据包通常是比较大的。但当遇到木马流量时,结果往往是相反的,上传字节数会大于下载字节数。另外,我们还选择了上传数据包数、下载数据包数、平均每个数据包上传字节和平均每个数据包下载字节作为描述TCP流的属性。正常的应用程序一般会尽量使每一个数据包携带尽可能多的数据,所以在网络传输当中数据包的数目一般是比较小的,但每个数据包的信息量都很大。至于木马程序,它们每次用来交互的信息都比较少,但是木马程序之间会有比较频繁的交互。此外,在每一个恶意软件家族里都会有很多相似的TCP流部特征。观察可以发现在同一个恶意家族内部,每一次会话中的上传的字节数、下载的字节数、数据包数都是差不多的。每个恶意家族的样本聚簇在一起,这就意味着所选的属性对于这些恶意流量的分类是有意义的。

5 检测实验与结果分析

5.1 集成算法的检测结果

从算法角度共选择了Ada Boost、SMOTEBoost及C4.5_CS三个集成算法进行恶意网络行为的检测,其中实验结果如表5.1 所示:

由以上统计数据可知,在处理提取的不平衡数据集时,由于SMOTEBoost算法是在对训练集进行人工合成过采样的基础上实现的Ada Boost算法,因此在相同的条件下SMOTEBoost算法的分类性能要高于Ada Boost算法,可以识别出更多的异常类,不过相应的代价是牺牲了对正常类的识别率。在不平衡分类问题当中对异常类的高识别率更有价值,所以SMOTEBoost算法的性能要好于Ada Boost算法。分析目前处理不平衡分类问题的方法可以看出针对不平衡分类问题的解决方案中要想提高对少数类的识别能力,多数都会产生将部分多数类误分的情况,而且这种牺牲是必要的。分析C4.5_CS算法可以看出该算法具有比Ada Boost、SMOTEBoost更好的分类性能。另外C4.5_CS算法可以在保证较高的异常类识别率的前提下比Ada Boost和SMOTEBoost算法识别出更多的正常类,这一点也是值得注意的。

5.2 对C4.5决策树算法的分析

经过前面的分析可得,在选定的方法当中,无论是从数据角度还是从算法角度处理数据,C4.5决策树算法的分类性能都是相对比较好的。表5.2展示了C4.5算法在不同处理情况下的分类性能。

根据上表中的数据可以看出,C4.5算法是用来检测恶意网络行为比较好的选择,但是将数据预处理以后再使用C4.5算法会使它对正常类的识别能力略有下降,值得注意的是由此却换来了C4.5对异常类更加灵敏的识别能力。这样就可以保证整体分类准确率的前提下尽可能多的检测出异常类以达到控制恶意网络行为的目的。此外由表5.2可以得出,不同处理方式下的C4.5算法的性能也略有差异。基于代价敏感学习的C4.5算法要比基于重采样的C4.5算法分类性能更好一些。在上表中基于代价敏感学习的三次实验中,把异常类误认为成正常类的代价敏感因子分别为3.0、5.0和10.0,由识别结果可知随着异常类代价敏感因子的增大其对异常类的识别能力也越来越强。当把正常类误认为异常类的代价敏感因子设为1.0,把异常类误认为成正常类的代价敏感因子设为10.0时,便能够检测出数据包中全部的351个异常类。不过,这也意味着会把更多的正常类误分成异常类。因此,代价敏感因子的选择对代价敏感学习方法而言十分重要,在实际应用当中,我们应该通过启发式等规则来选择最佳的敏感因子。

6 总结与展望

6.1 论文研究内容总结

网络流量分类问题是分类问题的一个重要分支,而不平衡的网络数据集又是分类的重点研究对象,这也是机器学习中一个重要的研究方面。在现实生活中,由不平衡流量导致的恶意网络行为带来的危害受到越来越多的关注。但是利用传统的机器学习方法对网络流量进行处理的结果往往会偏向多数类而忽略少数类的分类性能。针对由不平衡流量导致的恶意网络行为检测问题,本文的研究思路如下所示:通过对目前检测恶意网络行为已有的解决方案进行研究分析,总结了目前处理该问题的方法,分析了目前解决这个问题的主要不足之处,然后利用采集的导致恶意网络行为的不平衡流量数据样本从不同的角度进行实验,在实验的基础上得出检测恶意网络行为比较好的方法。实验结论如下:

在实验过程中共选取了两种不同的方法检测恶意网络行为,一是从数据角度进行处理,二是从算法角度对数据进行处理。从数据角度进行处理主要就是在分类器分类之前先对不平衡流量数据进行预处理。在第3章当中,主要选择了不对数据进行处理、采用重取样的预处理方式、采用类平衡的预处理方式三种,然后选择了6个常用来进行数据分类的机器学习算法处理提取的不平衡流量数据。经过对3组实验,6个算法的实验数据处理及分析以后,可以得出预处理以后的C4.5决策树算法是检测恶意网络行为比较好的方法。在第4章当中,主要选择了3个前人改进了的专门用来处理不平衡分类问题的集成算法对提取的不平衡流量数据进行处理,结果表明C4.5_CS算法的分类性能高于其他两个算法。对比3、4章的实验结果可以发现基于代价敏感学习的C4.5算法比基于数据预处理下的C4.5算法的分类性能更好一些。因为C4.5决策树算法的复杂度较低,用它进行流量分类处理速度比较快,而且基于代价敏感学习的C4.5算法在代价敏感因子的作用下将不同的误分情况赋予不同的代价,因而可以实现更好的分类性能,尽可能地检测出网络中的为。

6.2 未来工作展望

恶意检测 篇6

关键词:进程守护,恶意行为,日志信息

0 引言

Android是2007年11月份谷歌公司发布的一款基于Linux的开源的手机操作系统[1]。由于其开放性的特色使得Android的市场占有率持续增长。截止2014年1月份Android的市场占有率已达到78.9%,最新数据显示Android的网络流量首超IOS。中国智能手机的发展更是极大地推动了Android市场占有率的增长,当然也伴随着一系列的安全问题。

2012年第四季度的Android恶意软件的数量和变种类型大幅度增多。F-Secure的最新报告显示,最近一个季度Android平台下的恶意软件的威胁已从去年的79%增至91.3%[2]。Android平台下的恶意行为主要分为如下几种方式:加值服务滥用、插播广告、窃取用户资料和信息、非法下载软件和诈骗等[3],其最终目的是为了获取高额的利润。其中76.5%的恶意软件是借助网络、短信、电话等方式传递私密或扣费信息诈骗用户钱财,而非破坏手机系统[2]。

本文主要从Android系统的日志入手,采用进程守护机制常驻系统内存记录系统的日志信息,采用Boyer-Moore[4]算法匹配日志信息,分析识别软件的恶意行为。

1 背景及相关工作

目前,Android平台下基于行为的恶意软件的检测方案主要是:静态行为检测、动态行为检测和混合检测的方式[5,6]。静态行为检测是在软件未安装以前分析软件源代码等方式来识别软件的恶意行为。动态行为检测是在软件运行时动态的拦截,识别软件的恶意行为。混合检测则是静态行为检测与动态行为检测相结合的方式。

静态行为检测需要利用工具识别软件的行为(如:通过反编译的方式分析软件源代码)[7],执行复杂且精度不高。动态行为检测通过监控软件的行为,进行特征行为的匹配,需要大量的样本数据。混合检测则过于繁琐,实现复杂。

2 检测模型的设计

2.1 模型设计

Android系统的主要恶意行为包括:非法拨打电话、发送扣费短信、访问远程服务器、安装、卸载、运行未知软件、删除、修改文件等。

恶意行为的通用判断标准如下:

1)当运行有Android系统的手机(或平板等)处于锁屏状态时,此时一切软件的拨打电话、发送短信、访问远程服务器、访问隐私数据、操作未知软件等行为均被视为恶意行为。

2)当手机(或平板等)处于解锁状态(用户前台正常使用)时,若此时执行拨打电话、发送短信、访问服务器等行为的应用程序不是前台应用程序,则认为该行为是恶意行为,将该行为上报用户。若前台应用程序执行该行为,则识别该程序是否是可信软件,若不是可信软件或可信性未知,则判定该行为是恶意行为。

检测模型由三个部分组成:日志信息收集部分、应用程序数据库和日志信息索引库部分以及行为特征匹配部分。日志信息收集部分通过广播监听的方式和进程守护机制长久地收集日志信息。广播监听是通过监听系统开机的广播开始收集系统的日志信息。进程守护机制是指有两条功能相同的记录系统日志的进程,同一时刻只有一条进程在运行,任何一条进程在被销毁的同时开启另一条进程继续记录系统的日志信息。应用程序数据库和日志信息索引库为Android系统产生的日志信息的恶意行为匹配提供数据。行为特征匹配部分的作用是通过BoyerMoore算法匹配日志信息,识别恶意行为。

检测模型的检测思路是:日志信息收集部分收集系统产生的日志信息。行为特征匹配部分查询应用程序数据库和日志信息索引库,运用Boyer-Moore算法匹配日志信息进行行为特征的匹配,根据本文定义的恶意行为的判断标准识别恶意行为并上报用户。恶意行为检测模型架构如图1所示。

2.2 行为特征匹配算法

Boyer-Moore算法是一种高效、构思巧妙、应用广泛的字符匹配算法。该算法已在目前的文字处理软件中广泛使用。

基于Boyer-Moore算法,本文设计的Android软件行为特征匹配处理方法如下:

1)设定一个目标串和查找串。以系统产生的日志信息作为目标串,以日志信息索引库中的行为特征字符串作为查找串进行操作类型的特征匹配,确定系统执行的操作类型。

2)以日志信息作为目标串,以应用程序的包名作为查找串进行包名匹配,定位执行操作的应用程序的包名。通过应用程序数据库中的信息确定对应的应用程序的名称,至此识别出系统执行的行为信息。

3)匹配日志信息的最近的记录以同样的方式定位出执行该行为的软件或从系统的任务栈中获取。根据本文定义的恶意行为的判断标准最终确定该行为是否是恶意行为。

Boyer-Moore算法的匹配流程如图2所示。

3 检测模型的实现

3.1 检测模型处理流程

检测模型的具体实现是由三个模块组成:日志信息记录模块、应用程序信息及日志信息索引模块和日志信息分析模块。

日志信息记录模块采用广播监听和进程守护的方式常驻在系统的内存,记录系统产生的日志信息,并根据系统日志信息的数据量周期性地清理记录日志信息的文件。

应用程序信息及日志信息索引模块的作用是将Android系统下已安装的系统应用程序和用户应用程序的相关信息存储到应用程序数据库中。同时将系统的行为所对应的日志信息字符串存储到日志信息索引库中为日志信息分析模块分析系统日志提供数据。

最后由日志信息分析模块查询应用程序数据库和日志信息索引库借助Boyer-Moore算法匹配日志信息,识别软件的行为,并根据模型定义的判断标准将识别出的恶意行为上报用户。

本文提出的基于日志的Android系统的恶意行为的检测模型的整体流程如图3所示。

3.2 日志信息记录模块

日志信息记录模块是该检测模型的重要模块。当日志信息记录模块监听到系统的开机广播时开启记录日志信息的服务A,在服务A中开启一条线程循环执行logcat-d指令,获取Android系统下产生的日志信息并以JSON的形式存储在txt文件中。重写服务A的on Destroy()方法,在服务A销毁的同时开启服务B,服务B执行与服务A相同的记录日志信息的操作,服务B销毁的同时开启服务A。通过这种广播监听和进程守护的方式避免了人为或恶意软件销毁进程结束记录日志的服务,使该服务可以常驻系统的内存。

Android系统下每执行一次操作会产生相应的日志信息。为了节约对系统资源的使用,记录日志信息的文件中只保留了前500条记录,获取到的日志信息将由日志信息分析模块进行处理。日志信息记录模块的处理流程如图4所示。

3.3 应用程序信息及日志信息索引模块

Android系统下已安装的应用程序,会以文件夹的形式存储在“/data/data/”目录下,遍历这些文件夹即可获取已安装的应用程序的包名等信息。但若系统未root[8],则无法访问这些与系统相关的文件。通过Android系统提供的Package Manager类获取系统应用程序的相关信息(包括:应用程序的包名、应用程序的名称和是否是系统应用等)。借助Android系统的SQLite引擎将应用程序的相关信息以及与软件安装、运行、卸载等类的信息存储到数据库文件中构成应用程序数据库。该数据库中的软件信息同时会根据用户的操作和服务器端的数据进行更新。

Android系统下每执行一步操作会生成相应的日志信息。每条日志信息均由五部分组成:Time、Type、Pid、Tag、Message[9]。

(1)Time:记录了日志产生的时间。

(2)Type:指示了该日志信息的类型。分为五种:V(所有信息);D(调试信息);I(一般信息);W(警告信息);E(错误信息)。

(3)Pid:Android系统为每个应用程序分配了一个进程ID。

(4)Tag:启动的应用程序的Activity的名称或类名。

(5)Message:Android系统下程序运行的相关的详细信息。

以Android系统下拨打电话的日志信息为例,部分日志信息如下:

START{act=android.intent.action.MAIN flg=0x10840000 cmp=com.android.phone/.In Call Screen}

由日志信息的内容可以分析出日志信息中包含两个敏感的字符串:START和com.android.phone。START对应的是执行的操作即运行;com.android.phone是被运行的应用程序的包名。其他的操作对应的字符串还包括DELETE、Display、Clear等,将这些敏感字符串、信息的类型、时间、标签等信息存到数据库中构成日志信息索引库。

当该模块首次启动时创建应用程序数据库和日志信息索引库并修改配置文件中相关的参数,防止模块启动时重复执行。

应用程序信息及日志信息索引模块的创建流程如图5所示。

3.4 日志信息分析模块

日志信息分析模块是检测模型的核心模块。在该模块中,恶意行为识别流程如图6所示。

日志信息分析模块的主要处理流程为:

1)接收移动设备的锁屏、解锁广播,并将移动设备当前屏幕状态存储到配置文件中。

2)查询应用程序数据库和日志信息索引库,采用BoyerMoore算法对日志信息进行匹配,确定软件行为。

3)根据配置文件,识别当前手机的锁屏状态。

4)根据当前的手机锁屏状态,按照恶意行为判断标准,识别当前行为是否是恶意行为。

4 测试与分析

基于本文提出的检测模型,采用J2SE技术,设计并实现了检测软件。以Android 4.0平台为测试环境进行软件行为检测。

测试软件样本来自主流的Android应用软件交流平台。软件样本的类型涉及生活休闲、新闻阅读、影音视听、通讯社交、休闲游戏等,样本软件构成如下:

良性软件100个,含有恶意行为的软件400个。应用程序数据库中的部分数据如图7所示。

当Android系统执行恶意行为软件时,检测到的恶意行为软件的平均时间延迟及系统内存使用情况如表1所示。

表1的数据表明,本文提出的检测方法可以在用户容许的时间内检测到恶意行为,但对系统的内存消耗较大。

软件访问远程服务器的恶意行为的检测结果界面如图8所示。

通过检测软件对收集的500个样本软件进行检验测试,发现360个样本软件中含有如下恶意行为:运行未知软件、访问远程服务器、发送短信等。检测实验结果如表2所示。

表2的测试数据和测试结果证明了本文提出的检测模型能够有效发现Android系统的恶意行为,验证了该检测模型对恶意行为检测的有效性与可行性。

5 结语

基于日志的Android系统恶意行为检测模型采用进程守护和广播监听的方式保证记录日志的服务常驻系统内存,以Android系统的日志信息作为软件行为的分析依据,借助BoyerMoore算法匹配日志信息中的敏感字符串识别软件的恶意行为。该模型能够有效识别出软件的恶意行为,但仍有不足之处:如对系统的资源消耗较大,构建日志信息索引库困难,恶意行为的识别精度不高等。

未来基于日志的Android系统的恶意行为的检测模型将以日志信息为主,综合评估各方面的数据。提高监控的准确度和效率并降低对系统资源的消耗。

参考文献

[1]Foutse Khomh,Hao Yuan,Ying Zou.Adapting Linux for Mobile Platforms:An Empirical Study of Android[C]//The 28th IEEE International Conference on Software Maintenance(ICSM),2012:629-632.

[2]F-Secure Labs Mobile Threat Report Q1 2014[EB/OL].[2014-7-16].http://www.f-secure.com/en/web/labs_global/whitepaper/reports.

[3]Suleiman Y Yerima,Sakir Sezer,Gavin Mc Williams.Analysis of Bayesian classification based approaches for Android malware detection[J].2014,8(1):25-36.

[4]Miloslav Besta,Frank Stomp.Mechanization of a Proof of String-Preprocessing in Boyer-Moore’s Pattern matching algorithm[C]//Proceedings of the Eightth IEEE international Conference on Engineering of Complex Computer Systems(ICECCS),2002:68-77.

[5]Zarni Aung,Win Zaw.Permission-Based Android Malware Detection[J].Internation Journal of Scientific&Technology,2013,2(3):228.

[6]Michael Spreitzenbarth,Thomas Schreck,Florian Echtler,et al.MobileSandbox:combining static and dynamic analysis with machine-learning techniques[J].International Joarnal of Information Sacurity,2015,14(2):141-153.

[7]陈丹伟,唐平,周书桃.基于沙盒技术的恶意程序检测模型[J].计算机科学,2012,39(6):12-13.

[8]邢晓燕,金洪颖,田敏.Android系统root权限获取与检测[J].软件,2013,34(12):208-210.

恶意检测 篇7

互联网在给人们带来便利的同时,恶意网页也给用户带来了安全威胁。随着恶意网页攻击的日益增多,对其进行分析检测的技术也在逐步发展。在对恶意网页的检测中,比较常见的技术称为客户端蜜罐系统。客户端蜜罐系统不是简单地在用户访问网页时对所访问的网页进行分析,而是通过网络爬虫自动和Web服务器交互,并分析检测所获取的网页内容,将所访问的网页标记为恶意或非恶意。

客户端蜜罐系统对网页的检测分析技术可分为低交互和高交互两大类。低交互的客户端蜜罐系统对网页的检测技术常见的有特征码匹配检测法、静态分析法、启发式方法;高交互的客户端蜜罐系统对网页的检测一般使用动态监控法,准确率较高,但是一般来说需要较长的时间与较多的系统资源。

网页内容是一个HTML文档,HTML文档对象模型(DOM)定义了访问和操作HTML文档的标准方法。HTML文档对象模型把HTML文档看作DOM元素的集合。根据HTML文档中DOM元素出现的顺序,可以将网页内容看作是一个DOM元素序列,本文据此建立隐马尔可夫模型,并提出一个恶意网页检测算法。

1 隐马尔可夫模型

隐马尔可夫模型(Hidden Markov Model, HMM)是一个双重随机过程,即一个双重的内含不可见(隐藏)的从属随机过程的随机过程,此不可见从属随机过程只能通过另一个产生观察序列的随机过程观察到。隐马尔可夫模型由两部分组成:一个观测不到的有限状态链,用来描述状态的转移;另一个是与状态链相关的可观测链。一个状态是否转移到另一状态取决于该状态的状态转移概率,而某一状态产生的观察值也取决于该状态生成的观察概率。

隐马尔可夫模型的数学描述如下:①状态空间:S={S1,S2,…,SN},规定状态的有限集合;②有M个值的可见符号集合V={V1,V2,…,VM};③初始状态概率分布:π={πi},其中πi=P(Si),1≤i≤N,表示初始时处于状态Si的概率;④状态转移矩阵:A={aij},其中aij=P(qt+1=Sj|qt=Si),表示当i时刻的状态为Si的条件下,下一时刻状态跳转为Sj的条件概率;⑤观测序列:O(t),t=1,2,…,T,O(t)∈V;⑥观测值的概率分布:B={bj(k)},其中bj(k)=P(Ot=Vk|qt=Sj),表示t时刻当所处状态为Sj时,观测到的可见符号为Vk的条件概率。

一个马尔可夫模型可以描述为:λ=(A,B,π)。

2 恶意网页检测的隐马尔可夫模型

恶意网页的攻击方法种类繁多,根据文献[5]的定义,对正常的网页建立模型,即认为网页内容都属于正常的网页,当然这只是一个理想状态,只是起参照作用,即观测到网页内容相对于此模型的偏差越大,则此网页是恶意网页的可能性也就越大。恶意网页检测的隐马尔可夫模型的模型状态空间S={0,1},状态空间包含正常和异常两个状态,0表示正常状态,1表示异常状态。初始状态概率分布π={1,0},在正常网页中,初始状态是正常状态的概率为1,异常状态的概率为0。网页内容由HTML元素构成,因此模型的可见符号集合即HTML元素集合。状态转移矩阵,在理想状态下,无论目前处在正常状还是异常状态,我们认为下一状态都是正常状态,所以a00=1,a01=0,a10=1,a11=0。而且我们只能知道正常网页内容的可见符号的概率分布{b0(k)}。

3 可见符号集的简化

HTML DOM元素多达数十个,文献[6]指出,并非所有DOM元素都与恶意代码有关,恶意网页中与恶意代码相关的DOM元素可以分为3类:恶意代码元素、恶意代码传递元素和隐藏混淆元素。

恶意代码元素是恶意网页的核心元素,恶意网页攻击由这些元素完成,如等元素。

恶意代码传递元素:恶意网页本身可能并不包含攻击,但网页中包含恶意攻击的“传递”方式,如通过链接或重定向将攻击导入网页,再如通过元素的src属性或隐藏帧从远程服务器中引入攻击。

隐藏混淆元素:恶意网页往往通过混淆机制将攻击隐藏起来,使攻击难以被检测。

上一篇:胃癌的治疗进展下一篇:农村致富