本发明涉及通信领域,具体涉及一种安卓应用恶意行为的检测方法。
背景技术:
目前,针对恶意代码及行为的检测可大致分为以下几个方面:
基于网络通信流量的检测。类似在大型互联网企业中,传统通信流量是针对内容的分发逐渐转变为针对整体集群架构的分布式服务策略。在应用层级对负载流量进行检测,清洗并提取包含攻击的通信数据,然后在此基础上进行检测。目前,基于流特征的恶意代码检测技术,从网络中存在的各种己知和未知的异常流量,并配合历史数据对发现的异常流量进行分析,从而得知恶意行为的具体目的。
基于特征码的检测。基于特征码的检测技术可以追溯到80,90年代然后一直流行至今。反病毒软件采用特征匹配的方式去对病毒木马进行查杀。这对已知的病毒木马进行查杀非常有效,一般安全厂商会预先通过蜜罐、蜜网捕获收集大量的恶意样本,并这些样本提取特征码,建立一个巨大的特征库。放在云端,当用户触发一些行为比如说网站下载了一个文件、或者插入U盘时。则针对该敏感文件与特征数据库进行匹配,用来判断该文件是否为恶意文件。目前,一种基于主机异常行为的分布式恶意代码检测技术它是对传统的基于主机特征码的恶意行为检测无法对一些行为或特征时,采取将其提交到分布式恶意代码检测系统中,进行二次检测。从而提高恶意应用的检测准确率。但是这种针对未知的恶意应用采用特征匹配的方式就略显鸡肋。
完整性校验签名机制检测。当我们主机系统感染恶意代码时,有时会伴随一些类似破坏系统资源的状况,因此这些目标的完整性被破坏,因此我们可以对信息资源做完整性校验。还有的一些安全机制会对系统提供保护,当攻击者拿到权限并被系统的安全机制捕获时,直接联动告警并拒绝攻击者的权限并限制对数据的访问。因此在完整性测量方面通过比对当前状态和先前状态即基线来进行确定。典型的完整性校验签名机制有Windows下的代码签名验证。然而基于证书窃取的攻击作业比较普遍,而且被窃取对象往往都是知名厂商,安全分析者们更是看到了专门进行签名证书窃取的恶意代码。同时,可信计算模型也没能有效地覆盖到能够应对格式溢出、脚本、Webshell等威胁。因此签名机制在证书保护上还有很长的路要走。
虚拟机技术。早期的恶意代码中,绝大多数病毒都是感染性病毒。这些病毒往往在干扰目标程序的会加入加密等形式进行病毒代码,可以躲过我们杀毒软件的特征识别,因为它们在静态特征上几乎跟原来完全不一样。我们通过对这些病毒的分析和研究,发现可以通过虚拟执行来还原这些被加密甚至很多被变形的病毒程序都可以还原这些病毒的本来面貌。仍然可以通过传统识别方式识别病症。随着互联网的发展,病毒在形态上通过加壳的方式来对抗特征识别。而虚拟机技术恰好可以解决这类问题,因此以虚拟机技术为根基而衍生出的更多恶意行为检测技术。
启发式恶意代码检测。启发式恶意代码检测属于静态检测方法,它对应一定恶意代码变种或未知的恶意代码有一定的检测率。对应未知的恶意代码,根据已有的知识或经验去进行阈值判断。例如在恶意应用中一些内核函数的调用关系会很固定,这是因为恶意代码都会伴随非常规文件的读写、自身终结等行为。这种行为直接决定了一些内核函数必定会被调用。这些函数的出现的顺序也有规律可循。因此这种方法的重点和难点就是对已有的恶意应用进行特征提取,并根据相关系列样本的特征进行统计归纳,总结出系列病毒样本的规律。例如可以对恶意代码调用的函数名称和调用次数进行分析,然后建立相应的比对基线。当待检测的恶意应用中提取的特征在这基线范围之内是并超过设定的阈值,就判断为恶意代码。这种检测方式同基于特征码的检测方式等并没有真正对应用进行运行动态分析。误报率会比较高。在启发式恶意代码检测中就有人提出基于内核函数调用集的方式去判断恶意应用作为比对基线。
由此可见,基于恶意行为检测技术是在近年来反病毒技术不断演进中逐渐形成的,新病毒技术的产生往往会直接促使反病毒技术整个层次的提高,这种攻防对弈往往很被动。
技术实现要素:
为解决上述技术问题,本申请提出一种基于机器学习的安卓应用恶意行为的检测方法。具体方法如下。
一种安卓应用恶意行为的检测方法,包括有如下步骤:
1)启动安卓智能终端,并在所述终端中应用可执行程序安装;
2)将所述可执行程序复制到沙箱模块;
3)在所述沙箱模块中,对所述可执行程序进行特征提取;
4)将所述特征作为训练好的SVM模块的输入单元,并得到预测风险值;
5)若所述预测风险值大于等于安全阈值,则反馈到安卓智能终端;若所述预测风险值小于安全阈值,则安装可执行程序。
进一步,步骤3)所述的特征提取包括有静态特征提取和动态特征提取,所述静态特征提取所提取的特征为URIS和EMAILS,所述动态特征提取通过网络抓包实现。
进一步,步骤4)所述的训练好的SVM模块的训练步骤包括:
4.1)对所述特征进行预处理;
4.2)对数据进行缩放操作,将数据的属性值归一化;
4.3)选择RBF核函数;
4.4)对于惩罚因子C和核函数参数g,划分网格,令网格点为C=ea、g=eb,其中,a、b为整数,且a=[-5,5]、b=[-5,5];
4.5)将训练数据等分为M个集合,每个集合中包括有n个数据,且M大于等于4的整数;
4.6)对于网格中的每一组(C,g),选取任一集合作为验证集,其余M-1个集合为训练集,训练模型后对验证集进行验证,计算得到验证结果误差的均方值:
其中,为预测值,Yi为样本实际值;
4.7)将验证集更换为另一集合,剩余的M-1个集合为训练集,再次计算误差的均方值,循环步骤4.6),直至对所有的M个集合均进行验证,计算M个均方值的平均值作为该组(C,g)的预测误差;
4.8)更换另一组(C,g),重复步骤4.5)-4.7),计算得到网格中所有参数组合下的并比较,值最小的参数组合(C,g),即为最佳的惩罚因子C和核函数参数g;
4.9)用参数C与g对整个训练集进行训练得到训练好的SVM模块。
进一步,步骤5)所述的安装可执行程序包括如下步骤:
5.1)若所述可执行程序为一般可执行程序,则将所述可执行程序拷贝到指定位置一,所有用户均有权访问所述指定位置一;若所述可执行程序为系统可执行程序,则将所述可执行程序拷贝到指定位置二,仅具有root权限的用户有权访问所述指定位置二;
5.2)解压所述可执行程序,拷贝解压文件并创建所述可执行程序的数据目录;
5.3)解析所述可执行程序的配置文件,并在所述安卓智能终端上创建快捷方式。
附图说明
图1为本发明中安卓应用恶意行为检测方法的过程。
图2为安卓系统上应用的安装方法。
具体实施方式
现结合实施例、附图对本发明作进一步描述。在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。
实施例一:
一种安卓应用恶意行为的检测方法,包括有如下步骤:
1)启动安卓智能终端,并在所述终端中应用可执行程序安装;
2)将所述可执行程序复制到沙箱模块;
3)在所述沙箱模块中,对所述可执行程序进行特征提取;
4)将所述特征作为训练好的SVM模块的输入单元,并得到预测风险值;
5)若所述预测风险值大于等于安全阈值,则反馈到安卓智能终端;若所述预测风险值小于安全阈值,则安装可执行程序。
步骤3)所述的特征提取包括有静态特征提取和动态特征提取,所述静态特征提取所提取的特征为URIS和EMAILS,所述动态特征提取通过网络抓包实现。
步骤4)所述的训练好的SVM模块的训练步骤包括:
4.1)对所述特征进行预处理;
4.2)对数据进行缩放操作,将数据的属性值归一化;
4.3)选择RBF核函数;
4.4)对于惩罚因子C和核函数参数g,划分网格,令网格点为C=ea、g=eb,其中,a、b为整数,且a=[-5,5]、b=[-5,5];
4.5)将训练数据等分为M个集合,每个集合中包括有n个数据,且M大于等于4的整数;
4.6)对于网格中的每一组(C,g),选取任一集合作为验证集,其余M-1个集合为训练集,训练模型后对验证集进行验证,计算得到验证结果误差的均方值:
其中,为预测值,Yi为样本实际值;
4.7)将验证集更换为另一集合,剩余的M-1个集合为训练集,再次计算误差的均方值,循环步骤4.6),直至对所有的M个集合均进行验证,计算M个均方值的平均值作为该组(C,g)的预测误差;
4.8)更换另一组(C,g),重复步骤4.5)-4.7),计算得到网格中所有参数组合下的并比较,值最小的参数组合(C,g),即为最佳的惩罚因子C和核函数参数g;
4.9)用参数C与g对整个训练集进行训练得到训练好的SVM模块。
步骤5)所述的安装可执行程序包括如下步骤:
5.1)若所述可执行程序为一般可执行程序,则将所述可执行程序拷贝到指定位置一,所有用户均有权访问所述指定位置一;若所述可执行程序为系统可执行程序,则将所述可执行程序拷贝到指定位置二,仅具有root权限的用户有权访问所述指定位置二;
5.2)解压所述可执行程序,拷贝解压文件并创建所述可执行程序的数据目录;
5.3)解析所述可执行程序的配置文件,并在所述安卓智能终端上创建快捷方式。
实施例二:
在实施例一的基础上,一种安卓应用恶意行为的检测方法,包括有如下步骤:
1)启动安卓智能终端,并在所述终端中应用可执行程序安装;
2)将所述可执行程序复制到沙箱模块;
3)在所述沙箱模块中,对所述可执行程序进行分析和解压;
4)在分析和解压中若所述所述可执行程序格式错误或者解压识别,则将错误信息反馈给用户,否则,进入下一步;
5)分析所述可执行程序的数字证书,将得到的结果与黑名单进行比对,若黑名单命中,则确定为病毒应用,并反馈给用户,否则进入下一步;
6)解析所述可执行程序的配置文件,计算得到初级策略权值,若所述权值超过权值阈值,则确定为病毒,并反馈给用户,否则进入下一步;
7)对所述可执行程序进行特征提取
8)将所述特征作为训练好的SVM模块的输入单元,并得到预测风险值;
9)若所述预测风险值大于等于安全阈值,则反馈到安卓智能终端;若所述预测风险值小于安全阈值,则安装可执行程序。
实施例三:
在上述实施例的基础上,实现上述方法的一种安卓应用恶意行为的检测系统,包括有如下结构:
复制模块,将可执行程序进行复制;
通信模块,用于对所述复制模块复制得到的可执行程序副本的上传和对恶意行为监测结果的反馈;
控制模块,用于用户输入参数、运行检测脚本、计算初级策略权值以及查看检测结果;
存储模块,用于存储样本、黑名单以及权值阈值,并支持用户对进行新建、添加、修改、删除和查询等操作;
比较模块,用于对初级策略权值与权值阈值进行比较;
沙箱模块,用于对可执行程序副本进行恶意行为检测;所述沙箱模块包括有样本分析模块、SVM模块和结果模块,其中,
样本分析模块,该模块包括解压模块、分析模块、解析模块、静态分析模块和动态分析模块,解压模块用于对可执行程序进行识别和解压,分析模块用于对可执行程序的数字签名进行分析,解析模块用于对可执行程序的配置文件进行解析;静态分析模块用于对所述可执行程序进行发编译以提取静态特征,动态分析模块通过触发可执行程序进行抓包提取动态特征;
SVM模块,用于SVM分类模型的建立和预测;
结果模块,利用所述SVM模块形成SVM模型对数据个预测,得到预测结果,并将结果反馈至通信模块。
如上所述,可较好地实现本发明。在不脱离本发明的原理和精神的情况下对这些实施例进行变化、修改、替换、整合和变型仍落入本发明的保护范围内。