CN112464232B - 一种基于混合特征组合分类的Android系统恶意软件检测方法 - Google Patents
一种基于混合特征组合分类的Android系统恶意软件检测方法 Download PDFInfo
- Publication number
- CN112464232B CN112464232B CN202011315597.0A CN202011315597A CN112464232B CN 112464232 B CN112464232 B CN 112464232B CN 202011315597 A CN202011315597 A CN 202011315597A CN 112464232 B CN112464232 B CN 112464232B
- Authority
- CN
- China
- Prior art keywords
- api
- feature
- apk
- dynamic
- mixed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000003068 static effect Effects 0.000 claims abstract description 45
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 25
- 238000001514 detection method Methods 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 15
- 238000007637 random forest analysis Methods 0.000 claims abstract description 15
- 238000010606 normalization Methods 0.000 claims abstract description 14
- 238000007619 statistical method Methods 0.000 claims abstract description 4
- 239000013598 vector Substances 0.000 claims description 70
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 31
- 238000010586 diagram Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 8
- SPBWHPXCWJLQRU-FITJORAGSA-N 4-amino-8-[(2r,3r,4s,5r)-3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]-5-oxopyrido[2,3-d]pyrimidine-6-carboxamide Chemical compound C12=NC=NC(N)=C2C(=O)C(C(=O)N)=CN1[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O SPBWHPXCWJLQRU-FITJORAGSA-N 0.000 claims description 6
- 230000002776 aggregation Effects 0.000 claims description 6
- 238000004220 aggregation Methods 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 6
- 238000011156 evaluation Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000010224 classification analysis Methods 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 3
- 239000006185 dispersion Substances 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 claims description 3
- 238000012549 training Methods 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 2
- 230000006837 decompression Effects 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000002474 experimental method Methods 0.000 abstract description 5
- 238000003064 k means clustering Methods 0.000 abstract description 5
- 230000000694 effects Effects 0.000 abstract description 4
- 238000010835 comparative analysis Methods 0.000 description 3
- 238000002790 cross-validation Methods 0.000 description 3
- 230000000052 comparative effect Effects 0.000 description 2
- 238000013210 evaluation model Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/561—Virus type analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Virology (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于混合特征组合分类的Android系统恶意软件检测方法,通过CHI统计方法、层次聚类和K‑Means聚类混合算法建立高危权限和敏感API库。在此基础上,分别对APK文件进行解析分析得到静态特征和对APP进行动态Hook得到动态特征,组合形成混合特征。通过对混合特征进行归一化和权重赋值处理,构建基于随机森林和Adaboost算法的混合特征组合分类器。本发明所提的基于混合特征组合分类器的Android恶意软件检测方法兼顾静态和动态特征,利用低维特征数据尽可能多的描述恶意软件的综合恶意特征,在混合特征分类检测模型下对Android恶意软件的检测具有良好效果。实验表明,本发明所提方法能显著提高恶意软件检测的准确率。
Description
技术领域
本发明属于软件检测技术领域,涉及一种移动端恶意软件检测方法,尤其是提出一种基于混合特征组合分类的Android系统恶意软件检测方法。
背景技术
Android系统由于其开放性特征,使得其产品的市场占有率越来越高。同时,针对Android系统的恶意软件也层出不穷。对于Android恶意软件的检测方式分为静态检测和动态检测两种。目前,研究者们多数就Android恶意软件的单特征进行检测分析,并未完全兼顾到静态和动态特征,导致检测不全面等问题,影响了恶意软件的检测效率和准确度。
发明内容
要解决的技术问题
本发明针对Android恶意软件单特征检测不全面问题,提出了一种基于混合特征组合分类的Android系统恶意软件检测方法。搭建高危权限和敏感API库,分别提取静态权限和敏感API调用特征和动态敏感API调用频次特征以及动态系统状态特征,形成基于静态和动态的混合特征。在此基础上,先构建基于随机森林和Adaboost的单分类器,然后基于交叉验证法构建组合分类器,对Android恶意软件进行分类检测。
技术方案
一种基于混合特征组合分类的Android系统恶意软件检测方法,其特征在于步骤如下:
步骤1:构建Android高危权限和敏感API库
首先,基于CHI统计方法筛选高危权限;选取Android系统的所有权限作为权限集P={p1,p2,...,pM},对于权限pi∈P,(i=1,2,...,M),权限pi的CHI值X2(pi,K):
其中,N表示所有样本数,A表示含有权限pi的恶意样本数,B表示不含权限pi的恶意样本数,C表示含有权限pi的正常样本数,D表示不含权限pi的正常样本数;
按X2(pi,K)值从大到小排序,选取前若干个较高者作为当前筛选的高危权限列表;
其次,采用层次凝聚和K-Means结合的方法对上述高危权限进行聚类处理,以去除权限之间的相关性;首先基于层次凝聚算法找到初始聚类中心,然后用K-Means算法进行重定位聚类;其中,权限之间的相关性基于皮尔逊相关系数来衡量,其计算公式如下:
其中,表示权限pm(m=1,2,...,30)的特征向量,/>表示权限pn(n=1,2,...,30)对应的特征向量,和/>分别表示各自的期望值。
步骤2:基于反编译和动态Hook技术进行混合特征提取
首先,基于反编译技术提取静态特征,包括高危权限特征和敏感API特征;使用开源jar包ApkParser解析APK文件,获取AndroidManifest.xml,通过提取其中的权限信息列表Papk={p1,p2,...,pm},对权限pi∈Papk,(i=1,2,...,m),若满足则有:fj=1,(j=1,2,...,14);由此得到APK文件的静态高危权限特征向量;再通过解压手段获得dex文件,使用开源jar包baksmali反编译dex文件,获取对应的smali文件;自定义方法解析smali文件,在每一个smali文件中遍历得到函数名列表APIapk={api1,api2,...,apin},对函数列表的每个元素,若满足apij=APIi∈APIAPK,(i=1,2,...,40;j=1,2,...,n),则对应特征向量fi=1,(i=1,2,...,40);由此得到APK文件的静态敏感API特征向量;
其次,基于成熟的Xposed框架动态Hook敏感API,以提取动态特征;部署自开发的API动态劫持插件,主动监控Android系统,若有系统apiAPP=APIj∈APIAPP被调用,则记录本次调用的API相关信息,包括敏感API调用频次信息和系统状态信息FAPI={factive,fuser,fbkg},其中,factive表示是否处于息屏状态,fuser表示是否处于被用户操作状态,fbkg表示是否处于后台状态;由此得到动态敏感API调用时的系统状态特征;
步骤3:混合特征归一化和特征权重赋值处理
由于高危权限调用特征向量、静态敏感API调用特征向量和动态系统状态特征向量的值均在[0,1]之间,不需要处理;故只需对动态敏感API调用频次的特征向量进行归一化处理;
考虑到动态敏感API调用频次特征向量每隔一段时间特征值归零情况,以及对于APP来讲,并不可能在一段时间内对所有敏感API进行调用,甚至有些敏感API根本不进行调用;因此,动态敏感API调用频次特征向量中的向量值会出现值为0的现象;这里采用离差标准化方法进行归一化处理,转换函数如下所示:
对于静态特征向量(高危权限调用特征和敏感API调用特征),本发明采用TF-IDF算法进行赋权处理;
设恶意APK样本数为Nvir,静态特征向量为FAPK={FAPK(per),FAPK(api)}54,特征元素fk∈FAPK,(k=1,2,...,54)对应的APK样本数为Nk,(k=1,2,...,54);具体流程如下:
(1)计算特征元素fk在APK样本文件dj,(j=1,2,...,Nk)中的TF值:
其中,tk,j表示在样本dj中特征元素fk特征元素出现的次数,Tk表示样本dj中所有特征元素出现的总次数;
(2)计算特征元素fk的IDF值:
(3)计算特征元素fk的权重:
Wapk(k)=TFk,j×IDFk
动态特征权重通过对系统特征向量的分析来给敏感API调用频次特征赋值;动态特征权重计算公式为:WAPP(apik)=FAPP(apik)×WAPP(apik);其中,FAPP(apik)为经过归一化处理过的敏感apik特征向量值,WAPP(apik)表示由apik对应的系统状态特征向量计算得到的辅助权重;
本发明对于系统状态特征向量元素重要程度的判断是基于专家决策的,其重要程度按从大到小排序为:factive>fuser>fbkg,采用优序图法来计算权重;具体流程如下:
(1)根据重要程序构建优序图如表3所示;
表3系统状态特征向量权重优序图
(2)计算优序图中第i行元素权重:
其中,wi,j表示优序图中第i行、第j列元素值;
(3)计算apik对应的辅助权重:
WAPP(apik)=∑f(i)×Wf(i),(f(i)∈FAPI)
(4)计算apik对应的最终权重值;
步骤4:基于混合特征分类器的恶意软件检测和评价分析
本发明检测框架如图1所示,采用C/S模式,静态分析(包括:高危权限和敏感API库搭建、静态特征提取、特征值处理和分类器分类分析)在服务端完成;动态分析中,动态特征提取在客户端完成,特征值处理和分类器分类分析在服务端完成;
本发明基于随机森林RandomForest算法、Adaboost算法分别构建随机森林混合特征分类器和Adaboost混合特征分类器,在此基础上构建组合分类器;
在训练时分别基于5折交叉法、10折交叉法和20折交叉法,构造不同交叉法对应的随机森林混合特征分类器和Adaboost混合特征分类器,总共得到6个混合特征分类器;由于10折交叉法通常是获得最好误差估计的恰当选择,故对于采用10折交叉法训练得到的分类器赋予权重0.3,其余的分类器赋予权重0.1;
对于需要检测的每一条混合特征,分别经过上述6个混合特征分类器检测,得到6组分类结果,对每一组分类结果按类别进行加权求和,得到最终分类结果。
步骤1中所述的若干为30个。
有益效果
本发明提出的一种基于混合特征组合分类的Android系统恶意软件检测方法,通过CHI统计方法、层次聚类和K-Means聚类混合算法建立高危权限和敏感API库。在此基础上,分别对APK文件进行解析分析得到静态特征(高危权限特征、敏感API特征)和对APP进行动态Hook得到动态特征(动态敏感API特征、系统状态特征),组合形成混合特征。通过对混合特征进行归一化和权重赋值处理,构建基于随机森林和Adaboost算法的混合特征组合分类器。本发明所提的基于混合特征组合分类器的Android恶意软件检测方法兼顾静态和动态特征,利用低维特征数据尽可能多的描述恶意软件的综合恶意特征,在混合特征分类检测模型下对Android恶意软件的检测具有良好效果。实验表明,本发明所提方法能显著提高恶意软件检测的准确率。
附图说明
图1Android恶意软件混合特征检测框架
图2基于混合特征分类器的恶意软件检测流程
图3十折交叉验证对比
具体实施方式
现结合实施例、附图对本发明作进一步描述:
步骤一:搭建高危权限和敏感API库
首先,基于CHI统计方法筛选高危权限。选取Android系统的所有权限作为权限集P={p1,p2,...,pM},对于权限pi∈P(i=1,2,...,M),权限pi的CHI值X2(pi,K):
其中,N=A+B+C+D,A表示属于类别K且含有权限pi的样本数,B表示属于类别K但不含权限pi的样本数,C表示不属于类别K但含有权限pi的样本数,D表示不属于类别K且不含权限pi的样本数。
按CHI值从大到小排序,初步筛选出高危权限列表。
其次,采用层次凝聚聚类算法和K-Means聚类算法结合的方法对上述高危权限进行聚类处理,以去除权限之间的相关性。首先基于层次凝聚聚类算法进行初始聚类,然后使用K-Means聚类算法进行重定位聚类。其中,权限之间的相关性基于“皮尔逊相关系数”来衡量。
假设权限集对应的特征向量为Fper(pi)={f1,f2,...,fNK}(i=1,2,...,30),则权限pm,pn(m,n=1,2,...,30)之间的皮尔逊相关系数计算如下:
其中,表示权限pm(m=1,2,...,30)的特征向量,/>表示权限pn(n=1,2,...,30)对应的特征向量,/>和/>分别表示各自的期望值。
聚类后的权限共分成14组,设为PHigh-Risk={P1,P2,...,P14},其中Pi(i=1,2,...,14)表示每一组高危权限集合,具体如表1所示。
表1聚类后的权限组
最后,本发明对敏感API函数中重载的函数进行筛选,每一组高危权限对应的API集合中只保留最具代表性的敏感API函数,最终筛选出40个敏感API,设为APISensitive={api1,api2,...,api40},部分API如表2所示。
表2部分敏感API
步骤二:基于反编译和动态Hook技术进行混合特征提取
首先,基于反编译技术提取静态特征,包括高危权限特征和敏感API特征。依据步骤一中筛选出来的14组高危权限PHigh-Risk={P1,P2,...,P14},其中Pi(i=1,2,...,14)表示每一组高危权限集合,设对应的静态权限特征向量为:FAPK(Per)={f1,f2,...,f14},其中fi={0,1}(i=1,2,...,14)。依据步骤一中敏感API集合APISensitive={api1,api2,...,api40},设静态敏感API调用特征向量为FAPK(API)={f1,f2,...,f40}fj={0,1}(j=1,2,...,40)。
先使用ApkParser解析APK文件,获取AndroidManifest.xml,提取其中的权限信息列表Papk={p1,p2,...,pm},对权限pi∈Papk(i=1,2,...,m),若满足则有:fj=1(j=1,2,...,14)。再解压APK文件获取dex文件,使用baksmali反编译dex文件获取对应的smali文件。遍历每一个smali文件,匹配smali格式的API字符串,得到API列表APIapk={api1,api2,...,apin},对于apii∈APIapk(i=1,2,...,n),若满足apii∈APISensitive(i=1,2,...,n),则对应特征向量fi=1,(i=1,2,...,40)。综合高危权限特征和敏感API特征,得到静态特征向量Fapk={f1,f2,...,f14,...,f54}。
其次,基于Xposed框架动态Hook敏感API,以提取动态特征。依据步骤三筛选出来的敏感API集合APISensitive={api1,api2,...,api40},设动态敏感API调用频次特征向量为FAPP(API)={f1,f2,...,f40},其中fj={0,1}(j=1,2,...,40),动态敏感API调用时的系统状态特征向量,设为Fsys={f1,f2,f3}。
通过部署API动态劫持插件,主动监控Android系统,若检测到有系统apiAPP=apij∈APISensitive被调用,则记录本次调用的API相关信息,包括敏感API调用频次信息和系统状态信息。
综上,本发明结合步骤二中静态特征向量Fapk={f1,f2,...,f14,...,f54}和系统敏感API调用频次特征向量Fapp={f1,f2,...,f40}以及动态敏感API调用时的系统状态特征向量Fsys={f1,f2,f3},拼接得到混合特征如下:
F={Fapk,Fapp,Fsys}={f1,f2,...,f14,...,f54,...,f94,f95,f96,f97}
其中,Fapk={f1,...,f54}为静态特征向量,Fapp={f55,...,f94}为系统敏感API调用频次特征向量,Fsys={f95,f96,f97}为动态敏感API调用时的系统状态特征向量。
步骤三:混合特征归一化和特征权重赋值处理
由于静态高危权限调用特征向量、静态敏感API调用特征向量和动态敏感API调用时的系统状态特征向量的值均在[0,1]之间,不需要处理。故只需对动态敏感API调用频次的特征向量进行归一化处理。
设动态敏感API调用频次特征向量为FAPP(API)={f1,f2,...,f40},本发明采用“离差标准化”方法进行归一化处理,即对于fi∈FAPP(API)(i=1,2,...,40),其归一化函数如下所示:
其中,fmin为FAPP(API)中最小值,fmax为FAPP(API)中最大值。
对于静态特征向量Fapk={f1,f2,...,f14,...,f54},本发明采用“TF-IDF”算法进行权重赋值处理。
设恶意APK样本数为Nvir,静态特征向量为FAPK={FAPK(Per),FAPK(API)}54,其中,FAPK(Per)和FAPK(API)分别表示在步骤二中得到的静态高危权限特征向量和静态敏感API特征向量。特征元素fk∈FAPK(k=1,2,...,54)对应的APK样本数为Nk(k=1,2,...,54)。则静态特征向量的权重赋值处理流程如下:
(1)计算特征元素fk在APK样本文件dj(j=1,2,...,Nk)中的TF值:
其中,tk,j表示在样本dj中特征元素fk特征元素出现的次数,Tk表示样本dj中所有特征元素出现的总次数。
(2)计算特征元素fk的IDF值:
(3)计算特征元素fk的权重:
Wapk(k)=TFk,j×IDFk
由此得到静态特征向量FAPK的权重,设为WAPK={w1,w2,...,w54}。
动态敏感API调用频次特征向量Fapp={f55,...,f94}的权重赋值处理通过对动态敏感API调用时的系统状态特征向量Fsys={f95,f96,f97}进行处理得到。
本发明对于动态敏感API调用时的系统状态特征向量元素重要程度的判断是基于专家决策的。设factive表示系统是否处于息屏状态,fuser表示该APP是否正在被用户操作,fbkg表示该APP是否处于后台运行状态,则重要程度按从大到小排序为:factive>fuser>fbkg。
本发明采用“优序图法”计算动态敏感API调用频次特征向量元素fk∈Fapp(k=55,56,...,94)权重的具体流程如下:
(1)根据动态敏感API调用时的系统状态特征向量元素的重要程度构建优序图如表3所示;
表3系统状态特征向量权重优序图
(2)计算优序图中每一行数据的的权重,则第i行对应的权重Wi为:
其中,wi,j表示优序图中第i行、第j列元素值。
(3)计算动态敏感API调用频次特征向量元素fk∈Fapp(k=55,56,...,94)对应的辅助权重:
其中,fi∈Fsys为动态敏感API调用时的系统状态特征向量元素,Wi为fi在“优序图”中所在行的权重。
由此得到动态敏感API调用频次特征向量FAPP的权重,设为WAPP={w1,w2,...,w40}。
最后,本发明用于恶意软件检测的特征向量值计算如下:
Ffinal={Fapk,Fapp}×{Wapk,Wapp}={f1,f2,...,f14,...,f54,...,f94}×{w1,w2,...,w54,...,w94}
(5)其中,FAPK为静态特征向量值,FAPP为动态敏感API调用频次特征向量值,WAPK为FAPK对应的权重,WAPP为FAPP对应的权重。
步骤四:基于混合特征分类器的检测和评价指标
本发明基于随机森林(Random Forest)算法、Adaboost算法分别构建随机森林混合特征分类器和Adaboost混合特征分类器,在此基础上构建组合分类器。
在训练时分别基于5折交叉法、10折交叉法和20折交叉法,构造不同交叉法对应的随机森林混合特征分类器和Adaboost混合特征分类器,总共得到6个混合特征分类器。由于10折交叉法通常是获得最好误差估计的恰当选择,故对于采用10折交叉法训练得到的分类器赋予权重0.3,其余的分类器赋予权重0.1。
对于需要检测的每一条混合特征,分别经过上述6个混合特征分类器检测,得到6组分类结果,对每一组分类结果按类别(良性或恶意)进行加权求和,得到最终分类结果。
本发明的评价模型基于传统机器学习评价指标来完成。具体评价指标如下:
(1)TP(True Positive):良性应用被判定为良性应用;
(2)TN(True Negative):恶意应用被判定为恶意应用;
(3)FP(False Positive):恶意应用被判定为良性应用;
(4)FN(False Negative):良性应用被判定为恶意应用;
(5)准确率ACC(Accuracy):应用被正确分类的概率;
(6)精确率(Precision):预测为恶意的应用中被确实为恶意应用的概率;
(7)召回率(Recall):恶意应用被正确判定为恶意应用的概率;
本发明基于混合特征分类器的恶意软件的检测框架如图1所示,检测流程如图2所示。
步骤五:对比试验
本发明实验所用数据集分为良性APK样本数据(不含恶意软件攻击行为)和恶意APK样本数据(含恶意软件攻击行为)。其中,良性APK数据从国内外Android应用市场(豌豆荚和Google Play)下载,恶意APK数据从VirusShare和Drebin下载,去除数据不完整和内容重复的APK样本,用于实验部分的样本数据控制在1500个,足以满足本发明的实验验证要求。其中,恶意APK数量为1000个,良性APK数量为800个。
表6实验环境
本发明在保证相同软硬件条件的前提下,通过对比本发明方法和其他研究者的方法,进行如下几个对比实验来分析:
(1)在去除权限相关性上,基于只采用K-Means聚类算法去除相关性的方法构建分类器,对比本发明(采用层次聚类算法优化的K-Means算法)构建混合特征分类器。
表7采用不同算法去除权限相关性的对比分析
可以看出,本发明采用的层次聚类优化K-Means去除权限相关性方法能够比较好的提升分类检测效果。
(2)针对单特征提取方法,对于本发明的混合特征,就其中的静态特征和动态特征分别构建基于静态特征的分类器和基于动态特征的分类器,来对比本发明提出的基于动静混合特征的分类器。
表8提取不同特征的对比分析
可以看出,本发明基于动静混合特征构建的分类器能够有效提高分类检测的准确率。
(3)针对本发明构建的组合分类器,通过分别构建随机森林和Adaboost单分类器进行对比。
表9采用不同分类器的对比分析
可以看出,本发明构建的组合分类器较单一混合特征分类器而言,可以有效提高分类的精度。
最后,本发明对上述对比实验采用5次、10次、15次和20次十折交叉验证法,对检测准确率ACC分别取平均值,生成图3所示的对比图
可以看出,本发明提出的方法,即在高危权限和敏感API库基础上,分别提取静态和动态特征,组合形成混合特征,最后基于混合特征构建组合分类器,能够有效提升Android恶意软件检测的准确率、精确率和召回率。
Claims (2)
1.一种基于混合特征组合分类的Android系统恶意软件检测方法,其特征在于步骤如下:
步骤1:构建Android高危权限和敏感API库
首先,基于CHI统计方法筛选高危权限;选取Android系统的所有权限作为权限集P={p1,p2,...,pM},对于权限pi∈P,(i=1,2,...,M),权限pi的CHI值X2(pi,K):
其中,N表示所有样本数,A表示含有权限pi的恶意样本数,B表示不含权限pi的恶意样本数,C表示含有权限pi的正常样本数,D表示不含权限pi的正常样本数;
按X2(pi,K)值从大到小排序,选取前若干个较高者作为当前筛选的高危权限列表;
其次,采用层次凝聚和K-Means结合的方法对上述高危权限进行聚类处理,以去除权限之间的相关性;首先基于层次凝聚算法找到初始聚类中心,然后用K-Means算法进行重定位聚类;其中,权限之间的相关性基于皮尔逊相关系数来衡量,其计算公式如下:
其中,表示权限pm(m=1,2,...,30)的特征向量,/>表示权限pn(n=1,2,...,30)对应的特征向量,和/>分别表示各自的期望值;
步骤2:基于反编译和动态Hook技术进行混合特征提取
首先,基于反编译技术提取静态特征,包括高危权限特征和敏感API特征;使用开源jar包ApkParser解析APK文件,获取AndroidManifest.xml,通过提取其中的权限信息列表Papk={p1,p2,...,pm},对权限pi∈Papk,(i=1,2,...,m),若满足则有:fj=1,(j=1,2,...,14);由此得到APK文件的静态高危权限特征向量;再通过解压手段获得dex文件,使用开源jar包baksmali反编译dex文件,获取对应的smali文件;自定义方法解析smali文件,在每一个smali文件中遍历得到函数名列表APIapk={api1,api2,...,apin},对函数列表的每个元素,若满足apij=APIi∈APIAPK,(i=1,2,...,40;j=1,2,...,n),则对应特征向量fi=1,(i=1,2,...,40);由此得到APK文件的静态敏感API特征向量;
其次,基于成熟的Xposed框架动态Hook敏感API,以提取动态特征;部署自开发的API动态劫持插件,主动监控Android系统,若有系统apiAPP=APIj∈APIAPP被调用,则记录本次调用的API相关信息,包括敏感API调用频次信息和系统状态信息FAPI={factive,fuser,fbkg},其中,factive表示是否处于息屏状态,fuser表示是否处于被用户操作状态,fbkg表示是否处于后台状态;由此得到动态敏感API调用时的系统状态特征;
步骤3:混合特征归一化和特征权重赋值处理
由于高危权限调用特征向量、静态敏感API调用特征向量和动态系统状态特征向量的值均在[0,1]之间,不需要处理;故只需对动态敏感API调用频次的特征向量进行归一化处理;
考虑到动态敏感API调用频次特征向量每隔一段时间特征值归零情况,以及对于APP来讲,并不可能在一段时间内对所有敏感API进行调用,甚至有些敏感API根本不进行调用;因此,动态敏感API调用频次特征向量中的向量值会出现值为0的现象;这里采用离差标准化方法进行归一化处理,转换函数如下所示:
对于静态特征向量,即高危权限调用特征和敏感API调用特征,采用TF-IDF算法进行赋权处理;
设恶意APK样本数为Nvir,静态特征向量为FAPK={FAPK(per),FAPK(api)}54,特征元素fk∈FAPK,(k=1,2,...,54)对应的APK样本数为Nk,(k=1,2,...,54);具体流程如下:
(1)计算特征元素fk在APK样本文件dj,(j=1,2,...,Nk)中的TF值:
其中,tk,j表示在样本dj中特征元素fk特征元素出现的次数,Tk表示样本dj中所有特征元素出现的总次数;
(2)计算特征元素fk的IDF值:
(3)计算特征元素fk的权重:
Wapk(k)=TFk,j×IDFk
动态特征权重通过对系统特征向量的分析来给敏感API调用频次特征赋值;动态特征权重计算公式为:WAPP(apik)=FAPP(apik)×WAPP(apik);其中,FAPP(apik)为经过归一化处理过的敏感apik特征向量值,WAPP(apik)表示由apik对应的系统状态特征向量计算得到的辅助权重;
对于系统状态特征向量元素重要程度的判断是基于专家决策的,其重要程度按从大到小排序为:factive>fuser>fbkg,采用优序图法来计算权重;具体流程如下:
(1)根据重要程序构建优序图如表3所示;
表3系统状态特征向量权重优序图
(2)计算优序图中第i行元素权重:
其中,wi,j表示优序图中第i行、第j列元素值;
(3)计算apik对应的辅助权重:
WAPP(apik)=∑f(i)×Wf(i),(f(i)∈FAPI)
(4)计算apik对应的最终权重值;
步骤4:基于混合特征分类器的恶意软件检测和评价分析
采用C/S模式,静态分析包括:高危权限和敏感API库搭建、静态特征提取、特征值处理和分类器分类分析在服务端完成;动态分析中,动态特征提取在客户端完成,特征值处理和分类器分类分析在服务端完成;
基于随机森林RandomForest算法、Adaboost算法分别构建随机森林混合特征分类器和Adaboost混合特征分类器,在此基础上构建组合分类器;
在训练时分别基于5折交叉法、10折交叉法和20折交叉法,构造不同交叉法对应的随机森林混合特征分类器和Adaboost混合特征分类器,总共得到6个混合特征分类器;由于10折交叉法通常是获得最好误差估计的恰当选择,故对于采用10折交叉法训练得到的分类器赋予权重0.3,其余的分类器赋予权重0.1;
对于需要检测的每一条混合特征,分别经过上述6个混合特征分类器检测,得到6组分类结果,对每一组分类结果按类别进行加权求和,得到最终分类结果。
2.根据权利要求1所述的一种基于混合特征组合分类的Android系统恶意软件检测方法,其特征在于步骤1中所述的若干为30个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011315597.0A CN112464232B (zh) | 2020-11-21 | 2020-11-21 | 一种基于混合特征组合分类的Android系统恶意软件检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011315597.0A CN112464232B (zh) | 2020-11-21 | 2020-11-21 | 一种基于混合特征组合分类的Android系统恶意软件检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112464232A CN112464232A (zh) | 2021-03-09 |
CN112464232B true CN112464232B (zh) | 2024-04-09 |
Family
ID=74799031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011315597.0A Active CN112464232B (zh) | 2020-11-21 | 2020-11-21 | 一种基于混合特征组合分类的Android系统恶意软件检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112464232B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114726599B (zh) * | 2022-03-28 | 2023-01-10 | 慧之安信息技术股份有限公司 | 基于人工智能算法的软件定义网络中入侵检测方法和装置 |
CN115146258B (zh) * | 2022-07-27 | 2023-10-31 | 中国电信股份有限公司 | 请求处理方法、装置、存储介质及电子设备 |
CN115249048B (zh) * | 2022-09-16 | 2023-01-10 | 西南民族大学 | 一种对抗样本生成方法 |
CN116432181A (zh) * | 2023-04-12 | 2023-07-14 | 上海计算机软件技术开发中心 | 一种安卓恶意软件检测方法、系统及电子设备 |
CN118194209A (zh) * | 2024-05-16 | 2024-06-14 | 斯瑞尔环境科技股份有限公司 | 基于数据分析的磷酸铁连续合成在线监测方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809397A (zh) * | 2015-05-12 | 2015-07-29 | 上海斐讯数据通信技术有限公司 | 一种基于动态监控的Android恶意软件的检测方法及系统 |
CN109753800A (zh) * | 2019-01-02 | 2019-05-14 | 重庆邮电大学 | 融合频繁项集与随机森林算法的Android恶意应用检测方法及系统 |
CN110851834A (zh) * | 2019-11-18 | 2020-02-28 | 北京工业大学 | 融合多特征分类的安卓恶意应用检测方法 |
CN111027070A (zh) * | 2019-12-02 | 2020-04-17 | 厦门大学 | 恶意应用检测方法、介质、设备及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI461952B (zh) * | 2012-12-26 | 2014-11-21 | Univ Nat Taiwan Science Tech | 惡意程式偵測方法與系統 |
CN106503558B (zh) * | 2016-11-18 | 2019-02-19 | 四川大学 | 一种基于社团结构分析的Android恶意代码检测方法 |
KR102090423B1 (ko) * | 2019-04-25 | 2020-05-04 | 숭실대학교산학협력단 | 동적 api 추출 기반의 애플리케이션 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치 |
-
2020
- 2020-11-21 CN CN202011315597.0A patent/CN112464232B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809397A (zh) * | 2015-05-12 | 2015-07-29 | 上海斐讯数据通信技术有限公司 | 一种基于动态监控的Android恶意软件的检测方法及系统 |
CN109753800A (zh) * | 2019-01-02 | 2019-05-14 | 重庆邮电大学 | 融合频繁项集与随机森林算法的Android恶意应用检测方法及系统 |
CN110851834A (zh) * | 2019-11-18 | 2020-02-28 | 北京工业大学 | 融合多特征分类的安卓恶意应用检测方法 |
CN111027070A (zh) * | 2019-12-02 | 2020-04-17 | 厦门大学 | 恶意应用检测方法、介质、设备及装置 |
Non-Patent Citations (3)
Title |
---|
张家旺 ; 李燕伟.基于机器学习算法的Android恶意程序检测系统.计算机应用研究.34(6),全文. * |
杨帆.面向Android平台的恶意软件检测系统的设计与实现.全文. * |
纪策.基于Android的恶意软件检测与防护技术研究.全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN112464232A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112464232B (zh) | 一种基于混合特征组合分类的Android系统恶意软件检测方法 | |
CN111209563B (zh) | 一种网络入侵检测方法及系统 | |
CN110704840A (zh) | 一种基于卷积神经网络cnn的恶意软件检测方法 | |
US20130097704A1 (en) | Handling Noise in Training Data for Malware Detection | |
Kim et al. | Fusions of GA and SVM for anomaly detection in intrusion detection system | |
Yang et al. | A novel solutions for malicious code detection and family clustering based on machine learning | |
CN112989332B (zh) | 一种异常用户行为检测方法和装置 | |
CN113489685B (zh) | 一种基于核主成分分析的二次特征提取及恶意攻击识别方法 | |
WO2021189830A1 (zh) | 样本数据优化方法、装置、设备及存储介质 | |
Morales-Molina et al. | Methodology for malware classification using a random forest classifier | |
CN110263566B (zh) | 一种海量日志提权行为检测及分类方法 | |
Zhang et al. | Based on multi-features and clustering ensemble method for automatic malware categorization | |
CN111507385B (zh) | 一种可扩展的网络攻击行为分类方法 | |
Somwang et al. | Computer network security based on support vector machine approach | |
Zhang et al. | A hybrid intrusion detection method based on improved fuzzy C-means and support vector machine | |
Muttaqien et al. | Increasing performance of IDS by selecting and transforming features | |
CN115577357A (zh) | 一种基于堆叠集成技术的Android恶意软件检测方法 | |
CN111753299A (zh) | 一种基于分组集成的不平衡恶意软件检测方法 | |
CN116582300A (zh) | 基于机器学习的网络流量分类方法及装置 | |
CN112632539B (zh) | 一种Android系统恶意软件检测中动静混合特征提取方法 | |
CN112287345B (zh) | 基于智能风险检测的可信边缘计算系统 | |
Ghasempour et al. | Permission extraction framework for android malware detection | |
CN115842645A (zh) | 基于umap-rf的网络攻击流量检测方法、装置及可读存储介质 | |
CN115545091A (zh) | 基于集成学习器的恶意程序api调用序列检测方法 | |
Wai et al. | Clustering based opcode graph generation for malware variant detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |