近年来, 随着移动互联网的发展, Android平台凭借灵活开源的开发流程、物美价廉的硬件产品, 在全球市场上赢得了垄断性的市场份额, 并且保持持续增长的态势.然而, Android平台的开放性与普及性, 也吸引了形形色色的恶意攻击者, 通过编写各类恶意软件来实现系统攻击、数据窃取、资源滥用等恶意目标.
与iOS封闭唯一的Apple Store的应用分发渠道不同, 伴随着众多的Android应用市场各自发展、独立运作, 面向Android平台的各式各样的恶意应用程序出现在各大市场中.谷歌官方应用市场Google Play采用了多种审查机制, 不断完善与提高检测的准确性与周密性, 仍然不能避免恶意应用的上线.而其他第三方市场的审查机制不够完善, 监管不力, 导致市场内频繁出现具有虚假功能、恶意行为、攻击动机的风险应用程序.因此, Android开发者发布新应用的环节仍需要进一步的完善应用的功能测试、分类验证以及功能与行为的一致性检测过程.
目前针对Android应用的分类技术主要是基于应用程序的静态代码特征与动态运行特征.静态特征分类一般是通过反编译获取应用申请的权限[1-2]、API调用列表[3-4]等特征进行应用的分类.然而, 基于静态特征的分类方法对于恶意软件编写者们常用的代码混淆、动态更新、实时加载等高级隐藏技术则无力抵抗[5].动态特征分类主要是获取应用的运行特征或行为特征进行模式规约.运行特征包括电池温度与电量消耗[6]、内存与CPU的负载情况[7-8]等.单纯依靠运行特征仍难以对应用程序进行准确的功能分类.更复杂的行为特征多采用API调用序列[9]、网络行为[6-7]等特征描述方法.其中基于网络行为的分类方法适用于所有的操作系统与设备, 相比其他方法具有很强的兼容性, 但是目前这方面的大多数研究工作都是被动式地获取网络流量数据, 或者简单模拟一些用户行为, 没有主动地构造不同的事件或操作, 从而多方面地触发应用的网络行为, 更没有考虑不同触发事件组合造成的不同网络行为时序关联关系[10].
实验分析应用程序运行过程中基于不同触发事件组合产生的网络事件行为时序序列, 实现基于应用的网络行为的自动分类过程和功能类别一致性检测.由于同一分类目录下的应用程序功能相近, 以腾讯新闻(tencent.news)为代表的新闻类应用的主要功能就是获取、显示、更新新闻, 自然这类别的应用就更可能展示出相似的行为模式, 且行为模式应该同时具有同类一致性与自我一致性.这里的同类一致性是指相同功能类别的不同应用程序之间, 在实现该类别的正常功能的过程中, 展示出的应用程序之间的行为方式的相似性.自我一致性表示同一应用的行为模式在不同运行时间和过程中是稳定一致的, 具有自我相似性.一个应用程序的行为模式如果缺乏同类一致性和自我一致性, 要么是其分类错误, 要么是程序本身实现了其归属类别的典型功能之外的其他功能, 总之在安全性和可靠性上都是值得怀疑和进一步测试验证的, 可被标记为风险应用.
本文通过对应用程序运行过程中行为的规约建模, 采用应用程序网络流量特征的描述方法, 构建带有因果关系与时序关系的网络事件行为时序序列.基于以上行为一致性理论, 提出构建一个带有特殊输入结构的LSTM(long-short term memory)循环神经网络模型来记忆、规约并验证应用程序的行为序列所对应功能的一致性.LSTM神经网络能够记忆之前时间点的信息,并选择性学习过往信息对当前时间点的影响强度,从而实现基于过往信息的后续预测,适合学习本文中设计的带有长期相关性的网络事件行为时序序列.
1 LSTM循环神经网络 1.1 LSTM循环神经网络(recurrent neural network, RNN)是一种带有定向连接的前馈神经网络的变体, 能够在短时间内有效记忆之前时间点的数据, 因此可以将之前学习的信息应用于当前节点的计算中.原生的RNN会遇到一个很大的问题:随着训练深度的加深会出现梯度消失的状况, 即后面时间的节点对于前面时间的节点的信息记忆力下降, 因此无法适用于深度的神经网络或者长时序序列的学习与训练.为了解决这个问题, Hochreiter等[11]提出改进版的RNN模型——LSTM, 该模型可以实现长时间选择性地记忆之前时间步的相关信息.
LSTM设计了一个完全不同的结构——LSTM block, 用于实现信息的持久性传递与学习.一个基础的block由1个记忆单元和3个调节门(输入门, 忘记门, 输出门)组成, 分别用于记忆信息、对当前时间点的输入信息的重写、对上一时间点记忆单元的保持、控制当前时间点的输出.研究者已经提出了多种LSTM的演变形式,目前最流行的LSTM变体是在LSTM block中增加了“窥视孔连接”, 使得各个门层也会接受记忆单元的输入.图 1展示的就是带“窥视孔连接”的LSTM block, 其中圆圈表示基本的数学运算, 方框从左至右(f、i、Rt、o)分别代表忘记门、输入门、当前时间步的输入转换、输出门.
![]() |
图 1 带有“窥视孔连接”的LSTM块 Fig. 1 LSTM block with peephole connection |
以下公式中it、ft、Rt、ot分别表示当前时间步的输入门、忘记门、当前时间步的输入转换、输出门的计算结果;wx表示至各个控制单元的权值矩阵, 下角标x表示相应的控制单元;同理bx为至各个控制单元的偏置矩阵.Xt为该时间点的输入, 将传送到所有控制单元, Ht与Ht-1分别为当前时间点与上一时间点block的输出, Ct、Ct-1分别为当前时间点与上一时间点的记忆单元状态.此外, σ为sigmoid激活函数, tanh为双曲正切函数.
1) 先计算输入门与输出门的输出:
$ {{i}_{t}}=\sigma \left( {{\mathit{\boldsymbol{w}}}_{i}}\left[{{X}_{t}}, {{H}_{t-1}}, {{C}_{t-1}} \right]+{{\mathit{\boldsymbol{b}}}_{i}} \right), $ | (1) |
$ {{f}_{t}}=\sigma \left( {{\mathit{\boldsymbol{w}}}_{f}}\left[{{X}_{t}}, {{H}_{t-1}}, {{C}_{t-1}} \right]+{{\mathit{\boldsymbol{b}}}_{f}} \right). $ | (2) |
2) 需要利用忘记门忘却部分之前的记忆, 并计算当前时间点的输入信息的转换(Rt), 两者叠加更新至该时间点的记忆单元(Ct).
$ {{R}_{t}}=\tanh \left( {{\mathit{\boldsymbol{w}}}_{{{R}_{t}}}}\left[{{X}_{t}}, {{H}_{t-1}} \right]+{{\mathit{\boldsymbol{b}}}_{{{R}_{t}}}} \right), $ | (3) |
$ {{C}_{t}}={{f}_{t}}*{{C}_{t-1}}+{{i}_{t}}*{{R}_{t}}. $ | (4) |
3) 通过输出门来控制当前时间点的输出:
$ {{\mathit{\boldsymbol{o}}}_{t}}=\sigma \left( {{\mathit{\boldsymbol{w}}}_{o}}\left[{{X}_{t}}, {{H}_{t-1}}, {{C}_{t-1}} \right]+{{\mathit{\boldsymbol{b}}}_{o}} \right), $ | (5) |
$ {{H}_{t}}={{\mathit{\boldsymbol{o}}}_{t}}*\tanh \left( {{C}_{t}} \right). $ | (6) |
LSTM循环神经网络虽然已经在语音、语义、图像等模式识别领域取得了瞩目的发展与广泛的应用, 但只有极少数研究将其用于网络安全方向.文献[12-13]都是采用LSTM结构的循环神经网络, 使用KDD CUP 1999数据集, 训练出一个能识别正常连接、拒绝服务攻击(DoS)、端口监视或扫描(Probe)、远程主机的未授权访问(R2l)以及未授权的本地超级用户特权访问(U2r)的入侵检测系统; 但是两者的LSTM网络模型设计不同:文献[12]前一个是通过设计LSTM的节点数与每个LSTM中包含的记忆单元的个数训练出最好的模型;文献[13]则是设计深度的LSTM网络模型, 在不同的学习率的情况下比较不同深度的隐藏层结构的模型的分类结果, 从而得到最佳的入侵检测系统.
本研究首次将LSTM循环神经网络的应用范围延伸到移动应用程序的行为分类建模上, 通过学习重构的应用程序网络事件行为时序序列, 构建行为一致性检测模型, 实现对应用程序的合理、有效的分类.
2 Android应用的行为一致性检测模型根据相同功能类型的应用程序具有行为一致性的基本思想, 构建一个带有特殊输入结构的LSTM循环神经网络模型用于应用程序网络行为建模, 实现对Android应用的行为一致性检测和准确分类.
2.1 网络事件行为获取方式设计一个基于事件驱动的网络行为自动检测系统, 实现对Android应用进行自动检测.Android应用程序网络行为序列获取方法如下:将不同功能类别的应用程序, 多次独立安装并联网运行在测试沙箱设备上, 通过Monkey和Monkeyrunner这2款工具编程实现触发事件, 从而模拟不同的触发事件组合来抓获应用网络行为的流量数据包.最后通过分析网络数据包, 重构各个应用的网络行为的网络事件行为时序序列.
实验中一共设计了15种触发事件, 包括3类:模拟用户与应用程序之间的交互过程(点击、睡眠等)、改变程序运行环境(网络状态、位置等)、模拟外来事件(接收短信).具体触发事件如表 1所示.
![]() |
表 1 APP行为触发事件列表 Table 1 List of APP behavior-triggering events |
为了设计出合理的触发事件序列, 需要规定各个触发事件的适用场景, 避免产生无效或无意义的测试序列.如图 2所示为对触发事件的状态转移进行详细描述.此外, 需要针对性地产生策略来构造触发事件序列.理想的模拟交互技术需适应当前功能类别应用程序, 针对性地产生触发事件组合.因此, 对不同类别的应用程序赋予不同的触发事件权值, 例如拍照类与壁纸类的应用中, 触发事件7(拍照)的概率权值远大于其他类应用该事件的权值.
![]() |
图 2 行为触发事件的状态转移图 Fig. 2 State transition diagram of behavior-triggeringevents |
构建的网络事件行为时序序列模型如下:
$ \left( \left( {{E}_{1}}, \left( {{\alpha }_{1}}, {{\beta }_{1}}, {{\gamma }_{1}} \right) \right), \left( {{E}_{2}}, \left( {{\alpha }_{2}}, {{\beta }_{2}}, {{\gamma }_{2}} \right) \right), \cdots, \left( {{E}_{n}}, \left( {{\alpha }_{n}}, {{\beta }_{n}}, {{\gamma }_{n}} \right) \right) \right). $ |
其中, (Ei, (αi, βi, γi))表示一个网络事件行为, 即事件与产生的网络行为(网络流量数据), 其中Ei表示行为触发事件(用户的操作或其他事件), 例如开机、点击、滑动、来电等事件;(αi, βi, γi)是被触发的应用程序在单位观察时间内的网络行为描述, 分别表示发送的字节数、接收的字节数、网络连接数.每一个网络事件行为(Ei, (αi, βi, γi))具有内部因果关系, 即触发事件Ei产生了网络行为数据(αi, βi, γi).此外, 由于连续触发场景事件并抓获网络数据, 这些网络事件行为之间存在时序关系, 即上一个时间点的事件Ei可能对后续时间点的触发事件产生的网络行为数据(αi+1, βi+1, γi+1), (αi+2, βi+2, γi+2), …也造成影响, 或者说当前事件产生的网络行为数据不仅依赖于当前时间步的触发事件Ei, 还依赖于之前时间点发生过的触发事件Ei-1, Ei-2, ….基于以上分析, 引入LSTM网络来实现记忆与学习时序依赖关系.
在初步构建好应用程序的网络事件行为时序序列模型后, 需要对这些网络行为数据进行简单的预处理操作.由于发送的字节数与接收的字节数的量级较高且数据波动较大, 而这两类数据的量级而非精度对于描述网络流量和应用程序行为更有价值, 对(αi, βi, γi)进行以下规整处理:
$ {{{\alpha }'}_{i}}=\log \left( {{\alpha }_{i}} \right), {{{\beta }'}_{i}}=\log \left( {{\beta }_{i}} \right), {{{\gamma }'}_{i}}={{\gamma }_{i}}. $ | (7) |
后续的方法讨论和实验测试都是基于长度为5(即n=5)的网络事件行为时序序列.作为例子, 表 2给出了4条不同类别应用的网络事件行为时序序列.前2条网络事件行为时序序列属于不同的新闻类应用(搜狐新闻、腾讯新闻), 第三条序列属于视频类(爱奇艺视频), 第四条序列属于壁纸类(搜狗壁纸).下面详细介绍第一条与最后一条网络事件行为序列的具体含义:
![]() |
表 2 不同类别应用的网络事件行为时序序列 Table 2 Network event-behavior sequences of apps in different categories |
第一条网络事件行为时序序列表示:联网情况下用户启动应用程序搜狐新闻(com.sohu.newsclient)(触发事件id=1), 发送字节数量级“4.742”, 接收字节数量级“5.431”, 建立连接数35个;接着模拟用户点击事件(触发事件id=10), 产生一组网络行为数据;接下来更改设备的地理位置信息(触发事件id=5), 并没有网络行为;之后滑动界面(触发事件id=11)、再次点击界面(触发事件id=10), 都相应产生了网络行为数据.
第四条时序序列表示:联网情况下用户启动搜狗壁纸应用(com.sogou.wallpaper), 产生相应的网络行为数据, 接着触发壁纸更换事件(触发事件id=14), 产生一组网络行为数据, 然后关闭网络(触发事件id=4)、更换壁纸(触发事件id=14), 都未产生网络行为数据, 最后重启网络(触发事件id=4), 重新产生网络行为数据.
通过比较同类别的应用程序的相同模拟事件, 例如“1”启动事件, 发现属于同一功能类别的不同应用具有相似的网络行为, 产生的数据流量较为相似, 而不同类别的应用则会有较大区别, 例如第三、四个应用的启动事件产生的网络行为数据与前2条新闻类应用有明显的差异.第四条网络事件行为时序序列还反映网络事件行为之间的时序关系, 当正常联网状态下, 更换壁纸的行为将产生网络流量数据;若关闭网络后, 同样是更换壁纸事件, 则没有任何网络行为.这是一个相对简单的事件间时序关系的例子.事实上, 几乎没有人能确定哪些触发事件之间会相互影响或潜藏着某种未知的关系.因此, 应用的触发事件是否会产生网络行为数据或者产生什么样的网络行为, 与之前发生的事件可能存在时序依赖关系.基于这种设想, 本实验采用善于选择性记忆的LSTM网络模型.
由于基于市场上典型的正常可信的应用程序的网络行为进行建模, 不会产生可疑的恶意网络行为, 例如“事件3”(休眠)、“事件5”(更改地理位置信息)、“事件8”(更改通讯录)、“事件9”(接收到外界短信)都没有产生可疑的网络行为数据.但如果是风险应用, 则可能会产生可疑网络行为数据.这样便可将建立的LSTM模型进一步拓展为恶意检测模型.
2.3 设计的LSTM循环神经网络模型本文构建的LSTM网络模型主要包括3层:输入层、隐藏层、输出层.其中输入层由2个输入模块组成, 并且带有前馈连接与定向的循环连接;隐藏层将由多层的LSTM子网络叠加在一起.整个LSTM网络模型的架构如下图 3所示.图中E为Event(事件), B为Behaviors(行为).
![]() |
图 3 LSTM神经网络模型示意图 Fig. 3 LSTM neural network architecture diagram |
在本网络模型的构建中, 输入层的设计至关重要, 也是本模型的创新设计, 实现了前馈网络与循环网络共同学习.因为输入的数据(网络事件行为时序序列)不仅具有因果关系, 还存在时序性, 即当前时间点的触发事件Ei不仅能够产生网络行为数据, 还会影响之后的多个网络行为数据, 且无法预知影响能持续多久.本文针对这种关系的时序数据, 提出一种输入层模型——由2个输入模块组成, 第一个输入模块的数据是触发事件Ei, 第二个输入模块读入的是事件产生的网络行为数据,2个输入模块之间既有传统的前馈连接, 又有循环连接.
首先, 前馈连接用于表达网络事件与行为的因果关系, 例如用户启动视频类的应用程序, 必然需要加载大量视频库的图片, 从而产生较大的下载流量, 较少的上传流量, 以及较多的连接数.因此用户的启动操作将直接作用产生网络行为数据.
其次, 循环连接用于传递上一时间点的触发事件对之后的时间点的网络行为数据产生的影响.这是一种直接有效的定向循环连接, 能够强化之前时间点触发事件带来的持久影响力.图 4是将输入层展开后的网络模型.
![]() |
图 4 展开的输入层网络模型 Fig. 4 Unfolded network model of input layer |
隐藏层采用多层的全连接的LSTM模块搭建一子网络, 如图 4右侧所示.隐藏层的最开始的输入来自输入层的输出, 之后的LSTM层输入都来自上一层LSTM的输出以及上一时间点LSTM节点的记忆信息.因此,隐藏层中LSTM模块既能作用于下一层LSTM模型, 又能将当前时间点的信息保存到记忆单元中, 并传递给下一时间的该层LSTM模型的所有LSTM节点.这样便再次实现当前时间点的触发事件对后续的网络事件行为的影响, 从而能够对应用程序进行准确的网络事件行为特征的提取与学习.
2.3.3 输出层输出层节点采用softmax (多分类器函数).输出层的输入来自隐藏层的输出, 并经过softmax的处理得到最终的分类结果.
$ o{{\left( Z \right)}_{j}}=\frac{{{e}^{{{Z}_{j}}}}}{\sum\nolimits_{K=1}^{K}{{{e}^{{{Z}_{K}}}}}}. $ | (8) |
式中:Zj为输出层的输入, 即隐藏层的输出结果经过权值作用后得到的结果.多分类器得到结果即为分到各个类的可能性.
实验中采用的数据是基于8类应用:新闻类、管家类、日程类、视频类、壁纸类、拍照类、地图类、音频类, 因此输出层包括8个节点, 代表分到每一类的可能性.每一个网络事件行为输入到LSTM网络模型中都会得到8个代表类归属的(0~1)的数值, 一个网络事件行为时序序列会包括多组的网络事件行为, 则会产生多组的类归属.最后通过将多组的类归属相加来代表这个网络事件行为时序序列的最终分到每个功能类别的可能性指标, 因此可能性指标最大的数值所指向的类就是最终分类结果.
3 实验结果与分析 3.1 实验环境所有实验都在内存为4 GB, 处理器为Intel(R) Core(TM) i5-4950 CPU 3.3 G Hz, 操作系统为Ubuntu 15.04的台式机上完成.实验基于Pybrain机器学习库进行LSTM网络模型的设计与搭建, 采用有监督学习方式进行训练建模.
3.2 实验数据实验收集了8类共827个应用, 每一类的应用数目不尽相同, 具体分布如表 3所示.实验数据的结构详见2.2节, 一共重构了8 270条网络事件行为时序序列, 包括应用程序10次运行不同触发事件组合产生的网络事件行为时序序列, 其中7 030条序列(包括85%的应用:703个)作为训练集, 1 240条(包括15%的应用:124个应用)作为测试集.同时, 训练集中的80%序列用于训练学习, 剩余的20%作为验证集用于反向学习与调整网络模型的参数.
![]() |
表 3 各类应用的实验样本数量 Table 3 Number of sample APPs in each category |
LSTM网络模型建立的过程其实是一个参数学习与调优的过程, 参数不仅包括训练的学习率、冲量项单元、权值衰减率, 还包括网络的隐藏层层数、每层的节点数与激活函数.为了寻求较好的LSTM网络模型, 搭建了4~8层的多层隐藏层构造的LSTM网络模型, 每层包含的LSTM节点数目为5~11个.需要指出的是,在一个模型中, 每层的LSTM节点数目都相等.
此外, 所有模型实验都包括两阶段的学习拟合过程.第一阶段采用学习率为0.000 08, 直至模型收敛, 训练次数最多为300次;第二阶段采用学习率为0.000 02, 直至模型收敛.第一阶段的学习率较大, 利于快速学习, 但模型的收敛效果一般.在此基础上, 再进行第二阶段的学习与训练, 降低了学习率与权重衰减率, 能使得模型得到进一步的收敛与完善.
3.4 实验结果分析 3.4.1 LSTM循环神经网络模型试验结果针对不同结构的LSTM网络模型进行10次实验, 并对实验结果进行归纳整合, 下面将分别从自我一致性与同类一致性讨论实验结果, 证明提出的LSTM循环神经网络分类模型的合理性与有效性.
1) 自我一致性.
自我一致性意味着每个应用的行为模式会保持相对稳定与一致的状态, 这是实验研究的基本理论.实验中对每个应用测试10次, 因此每个应用都生成了10条网络事件行为序列.为了验证每个应用的自我一致性, 实验采用“欧式距离”来计算每个应用的多条网络事件行为时序序列之间的相似性.序列间的相似性越大, 则应用的自我一致性越高.X(x1, x2, …, xn)与Y(y1, y2, …, yn)之间的实际距离计算为
$ \text{d}\left( \mathit{\boldsymbol{X}}, \mathit{\boldsymbol{Y}} \right)=\text{d}\left( \mathit{\boldsymbol{Y}}, \mathit{\boldsymbol{X}} \right)={{\left[\sum\nolimits_{i=1}^{n}{{{\left( {{x}_{i}}-{{y}_{i}} \right)}^{2}}} \right]}^{1/2}}. $ | (9) |
接着, 利用下式(10)实现距离到相似度的转换.Sim (X, Y)越大, 则2个多维变量之间越相似.
$ \text{Sim}\left( \mathit{\boldsymbol{X}}, \mathit{\boldsymbol{Y}} \right)=\text{Sim}\left( \mathit{\boldsymbol{Y}}, \mathit{\boldsymbol{X}} \right)=\frac{1}{1+\text{d}\left( \mathit{\boldsymbol{X}}, \mathit{\boldsymbol{Y}} \right)}. $ | (10) |
由于每个序列包含5个网络事件行为, 并且每个网络事件行为由1个触发事件和3个维度的网络流量数据组成, 维度的值为(1+3)×5=20.应用程序的每条网络事件行为时序序列即为20维空间中的一个点.计算一个被测试过10次的应用的自我一致性, 该应用的网络事件行为时序序列集合如下:
$ B=\left\{ b{{s}_{1}}, b{{s}_{2}}, b{{s}_{3}}, b{{s}_{4}}, b{{s}_{5}}, b{{s}_{6}}, b{{s}_{7}}, b{{s}_{8}}, b{{s}_{9}}, b{{s}_{10}} \right\}. $ |
根据“欧氏距离”, 进一步计算出每两条时序序列的相似度, 最终将得到该应用的45组相似度结果.
此外, 在进行相似度计算前, 对数据进行标准化处理, 使得网络行为的特征值分布在区间中.
根据各类应用的相似性计算结果的升序排序, 图 5展示了不同功能类别的应用的自我一致性的累积分布图, 其中s为自我一致性, c为累积百分比.由图可知, 日程类、视频类、壁纸类、地图类应用的所有序列间的相似度都高于0.5, 具有较高的自我一致性.新闻类、管家类、拍照类、音频类分别只有2.58%、2.02%、0.65%、3.65%的序列间相似度介于0.40~0.50, 因此仍然具有较好的自我一致性.同时, 可以发现壁纸类与音频类的自我一致性分布相对集中在0.55~0.70, 而其他类别应用的自我一致性分布则集中在0.60~0.80.同时, 新闻类、地图类、拍照类的更有超过15%以上的序列间相似度大于0.90, 说明这几类应用具有很强的行为稳定性.而其余几类只有5%左右的序列相似度大于0.90, 说明这些类的应用的行为存在相对的波动性, 造成波动性的原因可能测试时触发事件模拟效果不同(例如点击的位置不同)、网络环境的不稳定、应用后台服务器的处理时延等.
![]() |
图 5 各类应用的行为自我一致性的累计分布图 Fig. 5 Cumulative distribution of behavior self-consistency in different APP categories |
2) 同类一致性.
应用的同类一致性具体表现在相同功能类别的应用的网络行为相近, 而不同功能类别的应用网络行为存在较大的差异, 因此可以通过应用的分类结果来验证应用的同类一致性.实验过程中, 每个模型测试10遍, 由此统计出每一个LSTM模型的平均分类正确率与最高的分类正确率, 如表 4所示, 其中“92.58%, 93.55%”表示该结构的LSTM网络模型的平均分类正确率为92.58%, 5次测试实验中最高分类正确率为93.55%.
![]() |
表 4 不同隐藏层结构的LSTM网络模型的分类结果 Table 4 Classification results using LSTM network models with different hidden-layer structures |
由表 4可知, 无论隐藏层采用何种结构, 整体上实验结果较好, 平均分类正确率都能达到85%以上, 最低平均分类正确率为85.48%.其中6层LSTM模块, 每层10个节点是最佳的LSTM网络模型, 平均正确率达到92.58%.同时, 表 4也统计了单因素(LSTM层数或每层节点数)对网络模型的平均分类正确率的影响.若只考虑隐藏层中LSTM层数对模型的影响, 6层隐藏层结构达到最佳的分类正确率89.11%;若只考虑每层节点个数对模型分类结果的影响, 随着节点数目的增加, 每层10个节点的方案达到最优的分类正确率91.46%.理论上综合得出隐藏层采用6层, 每层10个节点是最佳模型, 而这也正好符合实验的测试结果.实验结果也表明, 神经网络模型分类效果并不是一直随着隐藏层中层数增多或每层节点个数增加而表现更佳, 当模型的层数与节点过多的情况下, 容易出现过拟合的现象, 导致模型的训练效果很好, 但测试集的分类效果却不佳.根据表 4实验结果, 进一步选择最优模型(6层-10个)的5次测试情况进行模型评估, 如表 5所示.
![]() |
表 5 隐藏层为(6层-10个)结构的LSTM网络模型实验结果 Table 5 Experiment results by LSTM network model with 6-layer-10-neuron hidden layer structure |
由于第3次的实验结果92.66%与平均分类正确率92.58%最为接近, 表 6将具体地展示该次实验的分类结果.每一行数据表示该类别的应用预测到不同类别的应用个数, 最右侧是该类别应用测试的网络事件行为时序序列的总个数.通过观察表 6的对角线数据, 充分说明该LSTM网络模型分类结果相当理想, 具有很高的同类一致性.其中, 新闻类与地图类应用都存在互相分类错误的现象, 说明这两类应用行为存在一定的相似性.这两类应用都是在应用启动后联网加载少量的图片等数据, 之后等待用户点击或滑动才会产生相应网络流量.而视频与音频的错分类可能是由于两者都是绵长持久的网络访问形式.壁纸类与拍照类应用在运行过程中可能需要下载少量的图片或素材, 因此也存在一定的相似性.
![]() |
表 6 隐藏层为(6层-10个)结构的LSTM网络模型的单次分类结果 Table 6 Classification results by LSTM network model with 6-layer-10-neuron hidden layer structure |
为了更好地验证本文提出的机器学习模型相较其他常见机器学习分类算法拥有更大优势, 借助机器学习工具Weka, 使用相同的实验数据进行多种常见的机器学习分类器的实验.实验选择了贝叶斯网络(BayesNet)、朴素贝叶斯(NaiveBayes)、判定表(DecisionTable)、决策树(J48)、支持向量机—序列最小最优化(SMO)、多层感知机(MultilayerPerceptron)6种常见的分类器, 采用与LSTM网络模型相同的数据的划分方式进行训练与学习.
基于多种常见机器学习分类器的最终的实验结果如表 7所示.整体上, 常见分类器的分类情况不够理想.贝叶斯网络、决策树、多层感知机的分类模型效果相对较好, 其中多层感知机达到最高的分类正确率为85.08%.多层感知机之所以能在多种传统的机器学习分类器中取得最佳的分类效果, 原因在于其本质上也是神经网络模型, 能够较好地处理非线性的数据.但多层感知机只是简单的BP神经网络的应用, 并不具备处理时序序列的优势, 因此最终的分类效果不及本文提出的LSTM神经网络模型的效果.
![]() |
表 7 常见分类器的分类结果 Table 7 Classification results by common classifiers |
综上实验结果与分析, 本文提出的LSTM模型成功验证了应用程序具有同类行为一致性, 且能较好地学习不同功能类别应用的网络事件行为特征, 分类正确率优于常见的机器学习分类方法.
3.5 性能评估为了说明本研究提出的带有特殊输入结构的LSTM模型的有效性, 对比近几年来的相关工作进行分析与评估.
在恶意行为触发方面, Crowdroid[14]只固定模拟了6种人机交互, 而文献[10]、AASandbox[15]简单地使用Monkey工具随机模拟用户行为, 难以有效地针对功能类型触发应用的行为.本文则结合使用Monkey和Monkeyrunner两款工具编程实现触发事件, 并针对不同类别的应用设计不同的触发事件组合, 能更大程度地触发各类应用的行为.
在特征提取与建模方面, 文献[16]采用APP的3类静态特征:出现的字符串、申请的权限、应用市场的评价, 对7类应用进行分类建模, 但这些静态特征并不能很好地评估应用的行为, 并且只单纯测试多种传统的机器学习方法, 选取最佳模型.文献[1]中, 提取应用的权限, 基于前馈神经网络来实现游戏与工具应用的分类问题, 同时评估了多种机器学习方法包括自适应学习、贝叶斯正则化等, 但平均分类准确率只有0.651.文献[10]通过对网络流量数据、电池消耗、电池温度3个特征属性进行组合, 通过多种机器学习算法实验表明, 网络流量数据对于应用异常检测是最好的特征, 辅证本文研究的网络特征有效性, 但正确率低于本文结果.文献[11]构建了网络流量的特征向量, 认为特征之间存在某种关系, 通过计算各个特征的概率来表示应用的网络行为, 由此发现不正常的网络行为.但该研究没有具体的网络行为触发方式, 也未考虑到网络行为的时序性.文献[17]中动态提取应用运行过程中的API调用序列, 构建马尔科夫链矩阵, 再采用BP神经网络进行模型学习, 但只考虑相邻API调用之间的关系, 而忽略API调用潜在的长时序关系.文献[20]动态提取了网络行为特征并构造形成行为序列, 但只是采用简单的BP神经网络学习行为时序序列, 并没有深入研究行为序列之间的逻辑关系.AASandbox[15]同时采用静态与动态特征进行应用分类, 但效果不佳, 分类准确率低于本文的分类结果.
4 结语本文中面向Android应用分类检测和行为一致性验证的研究工作的主要成果与创新点概括如下:
1) 采用网络行为特征提取方法, 较好地刻画了应用程序的网络行为模式, 并且该分类模型具有可扩展性, 可以加入更多类型的特征来学习应用的行为模式.
2) 提出了网络事件行为时序序列模型, 将网络流量数据重构为网络事件行为时序序列, 为应用程序网络事件行为的描述比较提供了新方法.
3) 采用行为一致性原理对应用程序进行了行为一致性检测与功能分类, 分别定义了应用程序的同类一致性与自我一致性, 实验验证了提出的LSTM分类模型的有效性与合理性.
4) 首次将长短时循环神经网络(LSTM)引入到应用程序分类问题上, 并通过实验验证了该网络模型的有效性.
5) 基于LSTM设计了一种特殊的输入模块结构, 能够同时实现前馈学习与循环学习, 实现前馈网络与循环神经网络的共同作用.
未来, 将不断采集Android应用程序样本并覆盖更多功能类别, 收集更多的实验数据, 增加不同类别的应用行为描述特征, 不仅是网络行为特征, 还包括程序代码、系统环境、资源消耗等程序行为和运行过程特征, 例如动态API调用序列、权限、CPU使用率等, 进一步加深网络模型的深度, 从而实现更准确更有效的应用程序分类.
[1] |
GHORBANZADENH M, CHEN Y, MA Z, et al. A neural network approach to category validation of Android applications[C]//International Conference on Computing, Networking and Communications. San Diego: IEEE, 2013: 740-744. https://ieeexplore.ieee.org/document/6504180/?tp=&arnumber=6504180&queryText%3Dandroid%20application
|
[2] |
HAO H, LI Z, YU H. An effective approach to measuring and assessing the risk of Android application[C]//International Symposium on Theoretical Aspects of Software Engineering. Nanjing: IEEE, 2015: 31-38. https://ieeexplore.ieee.org/document/7307731/
|
[3] |
魏松杰, 杨铃. 基于分层API调用的Android恶意代码静态描述方法[J]. 计算机科学, 2015, 42(1): 155-158. WEI Song-jie, YANG Ling. Android malware characterization based on static analysis of hierarchical API usage[J]. Computer Science, 2015, 42(1): 155-158. DOI:10.11896/j.issn.1002-137X.2015.01.036 |
[4] |
CHUANG H Y, WANG S D. Machine learning based hybrid behavior models for Android malware analysis[C]//IEEE International Conference on Software Quality, Reliability and Security. Vancouver: IEEE, 2015: 201-206. https://ieeexplore.ieee.org/document/7272933/
|
[5] |
WANG H, GUO Y, TANG Z, et al. Reevaluating Android permission gaps with static and dynamic analysis[C]//2015 IEEE Global Communications Conference. San Diego: IEEE, 2015: 1-6. https://ieeexplore.ieee.org/document/7417621/
|
[6] |
KURNIAWAN H, ROSMANSYAH Y, DABARSYAH B. Android anomaly detection system using machine learning classification[C]//International Conference on Electrical Engineering and Informatics. Denpasar: IEEE, 2015: 288-293. https://ieeexplore.ieee.org/document/7352512/
|
[7] |
TENENBOIM-CHEKINA L, BARAD O, SHABTAI A, et al. Detecting application update attack on mobile devices through network features[C]//INFOCOM. Turin: IEEE, 2013: 91-92. https://ieeexplore.ieee.org/document/6970755/
|
[8] |
HAM H S, CHOI M J. Analysis of Android malware detection performance using machine learning classifiers[C]//International Conference on ICT Convergence. Jeju: IEEE, 2013: 490-495. https://ieeexplore.ieee.org/document/6675404/
|
[9] |
王蕊, 冯登国, 杨轶, 等. 基于语义的恶意代码行为特征提取及检测方法[J]. 软件学报, 2012, 23(2): 378-393. WANG Rui, FENG Deng-guo, Yang Yi, et al. Semantics-Based malware behavior signature extraction and detection method[J]. Journal of Software, 2012, 23(2): 378-393. |
[10] |
SU X, ZHANG D, LI W, et al. Android app recommendation approach based on network traffic measurement and analysis[C]//IEEE Symposium on Computers & Communication. Larnaca: IEEE, 2015: 988-994. https://ieeexplore.ieee.org/document/7405642/?arnumber=7405642&queryText=android%20network%20security&newsearch=true
|
[11] |
HOCHREITER S, SCHMIDHUBER J. Long short-term memory[J]. Neural Computation, 1997, 9(8): 1735-1780. DOI:10.1162/neco.1997.9.8.1735 |
[12] |
STAUDEMEYER R C, OMLIN C W. Evaluating performance of long short-term memory recurrent neural networks on intrusion detection data[C]//South African Institute for Computer Scientists and Information Technologists Conference. East London: ACM, 2013: 218-224. https://dl.acm.org/citation.cfm?id=2513456.2513490
|
[13] |
KIM J, KIM J, THU H L T, et al. Long short term memory recurrent neural network classifier for intrusion detection[C]//International Conference on Platform Technology and Service. Jeju: IEEE, 2016: 1-5. https://ieeexplore.ieee.org/document/7456805/
|
[14] |
BURGUERA I, ZURUTUZA U, NADJM-TEHRANI S. Crowdroid: behavior-based malware detection system for Android[C]//ACM Workshop on Security and Privacy in Smartphones and Mobile Devices. Chicago: ACM, 2011: 15-26. https://dl.acm.org/citation.cfm?id=2046619
|
[15] |
BLASING T, BATYUK L, SCHMIDT A D, et al. An Android application sandbox system for suspicious software detection[C]//International Conference on Malicious and Unwanted Software. Nancy: IEEE, 2010: 55-62. https://ieeexplore.ieee.org/document/5665792/
|
[16] |
SANZ B, SANTOS I, LAORDEN C, et al. On the automatic categorization of Android applications[C]//9th IEEE Consumer Communications and NETWORKING Conference. Las Vegas: IEEE, 2012: 149-153. http://paginaspersonales.deusto.es/claorden/publications/2012/Sanz_2012_CCNC_Android_Apps_Categorisation.pdf
|
[17] |
XIAO X, LI Q, JIANG Y, et al. Back-propagation neural network on Markov chains from system call sequences:a new approach for detecting Android malware with system call sequences[J]. Iet Information Security, 2016, 11(1): 8-15. |
[18] |
WEI S, WU G, ZHOU Z, et al. Mining network traffic for application category recognition on Android platform[C]//2015 IEEE International Conference on Progress in Informatics and Computing (PIC). Nanjing: IEEE, 2015: 409-413. https://ieeexplore.ieee.org/document/7489879/
|
[19] |
WU G, WEI S, LUO N, et al. Capturing and characterizing network actions of mobile applications for behavior consistency[C]//2015 International Conference on Computing and Network Communications (CoCoNet). Trivandrum: IEEE, 2015: 898-905. https://ieeexplore.ieee.org/document/7411297/
|
[20] |
魏松杰, 吴高翔, 罗娜, 等. DroidBet:事件驱动的Android应用网络行为的自动检测系统[J]. 通信学报, 2017, 38(5): 84-95. WEI Song-jie, WU Gao-xiang, LUO Na, et al. DroidBet:event-driven automatic detection of network behaviors for Android applications[J]. Journal on Communications, 2017, 38(5): 84-95. DOI:10.11959/j.issn.1000-436x.2017103 |