一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

面向概念漂移的可解释Android恶意软件检测方法与流程

2022-02-20 04:00:40 来源:中国专利 TAG:

面向概念漂移的可解释android恶意软件检测方法
技术领域
1.本发明涉及信息安全技术领域,尤其是一种面向概念漂移的可解释android恶意软件检测方法。


背景技术:

2.2021年第1季度,360互联网安全中心截获移动端新增恶意程序样本约206.5万个,比2020年同期增长426.5%,造成人均经济损失14611元。截止至2021年4月,相较于ios操作系统,android操作系统占据中国移动端市场76.91%,且android开放平台的应用软件生态,使其更易受到恶意软件威胁。
3.现有的android恶意软件检测技术分为基于特征码的检测技术、基于机器学习的静态检测技术、基于机器学习的应用行为检测技术三大类。android系统的沙盒机制,使非定制系统中的应用动态行为监控较为困难。基于机器学习的静态检测技术因其对未知恶意软件检测准确率高、对设备硬件要求低等优点成为主流的android恶意软件检测方法。
4.但基于机器学习的静态检测技术存在的3个主要问题如下:1、应用市场中请求敏感权限的应用比例正在下降,部分恶意应用能在不申请新权限的基础上完成攻击。单一的权限特征,或无逻辑引入的特征组合不足以表征恶意软件。
5.2、黑盒的机器学习算法获得越来越高准确率的同时,恶意应用检测对模型的可解释性与透明性要求越来越高。android恶意软件逆向人员需要模型提供决策依据,以促进人工分析或判断模型决策的合理性。
6.3、android系统版本的高频率更新导致以各版本软件开发工具包为基础开发的android应用均拥有一定市场占有率。而由于概念漂移现象,以大量样本为代价训练得到的机器学习模型在对不同时期android恶意软件的检测上表现较差。


技术实现要素:

7.本发明需要解决的技术问题是提供一种面向概念漂移的可解释android恶意软件检测方法,提高android恶意软件检测模型的可解释性,降低概念漂移问题对检测模型准确率的影响。
8.为解决上述技术问题,本发明所采用的技术方案是:一种面向概念漂移的可解释android恶意软件检测方法,包括以下步骤:步骤1,收集若干份人工android恶意应用软件分析报告,组成android恶意应用软件人工分析报告样本库;步骤2,收集若干个的恶意与良性android应用软件样本,组成初始android应用软件样本库,其中恶意样本与良性样本数量保持一致;步骤3,在android恶意应用软件人工分析报告库中,提取android恶意应用软件逆向分析高频词,其中排名前a的有效单词,作为检测模型使用的特征种类;步骤4,根据初始android应用软件样本库,使用自动化机器学习算法,对应每种检
测模型使用的特征种类,构建筛选特征向量,训练特征分量筛选模型,其数量为a个;步骤5,根据每个特征分量筛选模型,使用可解释机器学习算法,分别计算其筛选特征向量中所有分量的沙普利平均绝对值,其中排名前b的分量,作为一个检测模型使用的子特征向量;步骤6,合并所有检测模型使用的子特征向量,作为检测模型使用的特征;根据初始android应用软件样本库,提取检测模型使用的特征对应数据,组成初始训练数据集;步骤7,在初始训练数据集上,使用基于树模型的机器学习算法,训练初始检测模型,并输出检测模型使用的特征,作为人工验证检测模型的依据;步骤8,对未知安全性的android恶意软件,提取检测模型使用的特征对应数据,输入训练好的初始检测模型中,检测出该应用是否为android恶意软件;步骤9,根据国内外主流应用市场和安全网站,使用爬虫技术,获取android恶意软件样本,组成模型迁移恶意软件样本库,其中恶意软件公布时间距收集日期不大于c月,恶意软件数量为d个;步骤10,根据模型迁移恶意软件样本库,提取检测模型使用的特征对应数据,组成模型迁移数据集;步骤11,根据模型迁移数据集与初始训练数据集,使用同分布检验算法,计算检验统计量,判定android恶意软件是否出现概念漂移;步骤12,若android恶意软件出现概念漂移,使用迁移学习领域自适应算法,迁移初始检测模型,迭代e次,训练新检测模型,替代初始检测模型;步骤13,以时间间隔c月为周期,重复执行步骤8-12处理,更新检测模型,检测android恶意软件。
9.本发明技术方案的进一步改进在于:步骤3中,所述提取android恶意应用软件逆向分析高频词的方法为词频统计算法,所述排名前a的有效单词为android编程语言关键字。
10.本发明技术方案的进一步改进在于:步骤4中,包括以下子步骤:4.1从初始android应用软件样本库中投影一种检测模型使用的特征种类;4.2若该种特征已被投影过,选择一种检测模型使用的特征种类中未被投影过的特征,执行步骤4.1;4.3若该种特征未被投影过,将投影后数据中包含的该种特征全部互异数据,作为该种特征的筛选特征向量;构建特征分量筛选数据集,其中包括所有样本的样本特征向量;4.4将特征分量筛选数据集输入自动化机器学习算法中,选择输出管道中准确率最高的管道,作为该种特征的特征分量筛选模型;4.5若存在未输出特征分量筛选模型的特征种类,执行步骤4.1。
11.本发明技术方案的进一步改进在于:步骤4.4中,所述自动化机器学习算法为tpot自动化机器学习算法,选择输出管道中准确率最高的管道应用基于树的机器学习模型。
12.本发明技术方案的进一步改进在于:步骤5中,排名前b的分量,其沙普利平均绝对值的和不少于剩余分量沙普利平均绝对值的和的f倍,f为不小于4的正整数。
13.本发明技术方案的进一步改进在于:步骤5中,所述可解释机器学习算法为shap算法。
14.本发明技术方案的进一步改进在于:步骤6、8、10中,提取检测模型使用的特征对应数据,根据检测模型使用的特征,使用逆向工具androguard,匹配android应用软件apk解压后文件,若检测模型使用的特征出现在android应用软件apk解压后文件中,则记录出现次数;反之,记为0,以生成序列,恶意样本在序列后追加1;反之,追加0,作为检测模型样本特征向量。
15.本发明技术方案的进一步改进在于:步骤7中,所述基于树模型的机器学习算法为catboost算法。
16.本发明技术方案的进一步改进在于:步骤12中,所述自适应算法为jda算法。
17.本发明技术方案的进一步改进在于:a为不小于4的正整数,b为不小于1的正整数,c为不小于1的正整数,d为不小于100的正整数,e为不大于5的正整数。
18.由于采用了上述技术方案,本发明取得的技术进步是:1、本发明特征通过android恶意软件分析报告,提取攻击流程中的高频词,引入源代码层次和汇编指令层次的多种特征,提高了检测特征的高逻辑性与合理性。
19.2、本发明通过对初始特征组合,保证了低存储开销与较高分析速度,能够更好的表征恶意软件。
20.3、本发明使用自动化机器学习算法筛选基于树的最佳机器学习分类模型,相较于传统机器学习模型训练技术中的参数调整过程,本发明增强了训练数据与模型之间的契合度,提高了便捷性和效率。
21.4、本发明使用可解释性算法,构建检测模型解释机制,筛选出的特征对多数训练样本的分类结果具有高贡献度,保证了检测模型的可解释性与可验证性。
22.5、本发明通过在信息安全技术领域,特别的在andorid恶意软件检测技术上,引入了领域自适应方法,根据已有数据和检测模型,使用少量新时期android恶意软件,保证了本发明提出的模型检测准确率的时序稳定性,有效地缓解了android恶意软件检测中存在的概念漂移问题。
附图说明
23.图1是本发明的检测方法流程图;图2是本发明中构建特征分量筛选模型的子流程图。
具体实施方式
24.下面结合附图及实施例对本发明做进一步详细说明:如图1所示,一种面向概念漂移的可解释android恶意软件检测方法,具体包括以下步骤:步骤1,收集足够量的人工android恶意应用软件分析报告,组成android恶意应用软件人工分析报告样本库。
25.本实施例是从kharon数据集中抽样android恶意软件分析报告组成android恶意应用软件人工分析报告样本库,android恶意应用软件分析报告语言为英文,其中总单词数为4957个。
26.步骤2,收集足够量的恶意与良性android应用软件样本,组成初始android应用软
件样本库,其中恶意样本与良性样本数量保持一致。
27.本实施例是从omnidroid数据集中收集android恶意软件2900个,良性软件2900个,android应用软件样本为apk格式。其中,恶意软件定义为virustotal网站中超过50%的杀毒引擎检测结果为阳性,良性软件定义为virustotal网站中超过或等于50%的杀毒引擎检测结果为阴性。
28.步骤3,在android恶意应用软件人工分析报告库中,提取android恶意应用软件逆向分析高频词,其中排名前a的有效单词,a为不小于4的正整数,作为检测模型使用的特征种类。
29.本实施例使用词频统计算法,提取android恶意应用软件逆向分析高频词,本实施例中a为4,作为检测模型使用的特征种类的有效单词为android编程语言关键字,从去除了冠词、代词、数量词等无意义单词的android恶意应用软件人工分析报告库提取,得到检测模型使用的特征种类为权限、api包名、意图名、dalvik字节码。其中,去除单词包括但不限于:the、is、to、a、and、in、of、also、from。
30.步骤4,根据初始android应用软件样本库,使用自动化机器学习算法,对应每种检测模型使用的特征种类,构建筛选特征向量,训练特征分量筛选模型,其数量为a个。
31.如图2所示,具体包括以下子步骤:4.1从初始android应用软件样本库中投影一种检测模型使用的特征种类。
32.4.2若该种特征已被投影过,选择一种检测模型使用的特征种类中未被投影过的特征,执行步骤4.1。
33.4.3若该种特征未被投影过,将投影后数据中包含的该种特征全部互异数据,作为该种特征的筛选特征向量。构建特征分量筛选数据集,其中包括所有样本的样本特征向量。
34.本实施例中,初始android应用软件样本库中每个样本含有安装包名、文件名、hash码、投影权限、api包名、意图名、dalvik等45种特征,通过投影获得只含有投影权限、api包名、意图名、dalvik字节码四种特征中任意一种特征的对应数据。一个样本的特征向量,筛选特征向量的分量出现在样本中,则分量对应位置记为出现次数;反之,记为0,生成序列,恶意样本在序列后追加1;反之,追加0。例如dalvik字节码的筛选特征向量为[“shl-int”,“long-to-int”,“if-gt”],一个样本的样本特征向量为[5,3,21,1],其意义为该恶意样本中含有dalvik字节码“shl-int”5个、“long-to-int”3个、“if-gt”21个。本实施例中权限、api包名、意图名、dalvik字节码四种特征的特征筛选向量分别为184、4185、223、436维。
[0035]
4.4将特征分量筛选数据集输入自动化机器学习算法中,选择输出管道中准确率最高的管道,作为该种特征的特征分量筛选模型。
[0036]
本实施例中使用tpot自动化机器学习算法,选择输出管道中准确率最高的管道应用基于树的机器学习模型。
[0037]
4.5若存在未输出特征分量筛选模型的特征种类,执行步骤4.1。
[0038]
本实施例中步骤4获得权限、api包名、意图名、dalvik字节码四种特征分量筛选模型。
[0039]
步骤5,根据每个特征分量筛选模型,使用可解释机器学习算法,分别计算其筛选特征向量中所有分量的沙普利平均绝对值,其中排名前b的分量,b为不小于1的正整数,作为一个检测模型使用的子特征向量。排名前b的分量,其沙普利平均绝对值的和不少于剩余
分量沙普利平均绝对值的和的f倍,f为不小于4的正整数。
[0040]
本实施例中b为9,使用的可解释机器学习算法为shap算法,计算得到权限检测模型使用的子特征向量为[“send_sms”,“get_tasks”,“read_phone state”,
ꢀ“
receive_boot_completed”,“receive_sms”,“install_shortcut”,“get_accounts”,“vibrate”,“receive”],api包名检测模型使用的子特征向量为[“java.util.concurrent.locks”,“android.telephony”,“android.text”,“android.os”,“android.content.res”,“android.view.inputmethod”,“android.media”,“android.animation”,“java.lang.ref”],意图名检测模型使用的子特征向量为[“android.provider.telephony.sms_received”,“android.intent.action.boot_completed”,“android.intent.action.view”,“com.google.android.c2dm.intent.receive”,“android.intent.action.create_shortcut”,“android.intent.action.package_added”,“android.intent.action.data_sms_received”,“android.intent.action.phone_state”,“android.intent.action.user_present”],dalvik字节码检测模型使用的子特征向量为[“div-float”,“xor-int/lit8”,“and-int/2addr”,“rsub-int”,“or-int/lit16”,“rem-long”,“invoke-super/range”,“iput”,“if-nez”]。
[0041]
步骤6,合并所有检测模型使用的子特征向量,作为检测模型使用的特征;根据初始android应用软件样本库,提取检测模型使用的特征对应数据,以任意顺序水平拼接各检测模型使用的子特征向量,组成初始训练数据集。
[0042]
其中,根据检测模型使用的特征,使用逆向工具androguard,匹配android应用软件apk解压后文件,若检测模型使用的特征出现在android应用软件apk解压后文件中,则记录出现次数;反之,记为0,以生成序列,恶意样本在序列后追加1;反之,追加0,作为检测模型样本特征向量。
[0043]
本实施例中所有检测模型使用的子特征向量合并方式为水平拼接,得到的检测模型使用的特征种类为36种。组成初始训练数据集的过程与步骤4.3中构建特征分量筛选数据集的过程相同。
[0044]
步骤7,在初始训练数据集上,使用基于树模型的机器学习算法,训练初始检测模型,并输出检测模型使用的特征,作为人工验证检测模型的依据。
[0045]
本实施例中基于树模型的机器学习算法为catboost算法。
[0046]
步骤8,对未知安全性的android恶意软件,提取检测模型使用的特征对应数据,输入训练好的初始检测模型中,检测出该应用是否为android恶意软件。
[0047]
其中,根据检测模型使用的特征,使用逆向工具androguard,匹配android应用软件apk解压后文件,若检测模型使用的特征出现在android应用软件apk解压后文件中,则记录出现次数;反之,记为0,以生成序列,恶意样本在序列后追加1;反之,追加0,作为检测模型样本特征向量。
[0048]
本实施例中使用python整合androguard工具的“get_permissions”“get_services”“get_methods”“get_classes”“get_instructions”命令,从apk文件中提取权限、api包名、意图名、dalvik字节码特征,组成待测样本。构建待测样本向量,检测模型使用的特征出现在样本中,待测样本向量对应位置分量记为出现次数;反之,记为0。使用初始检
测模型分析待测样本向量,输出检测结果。若检测结果为1,待测android应用软件为恶意软件;若检测结果为0,待测android应用软件为良性软件。
[0049]
步骤9,根据国内外主流应用市场和安全网站,使用爬虫技术,获取android恶意软件样本,组成模型迁移恶意软件样本库,其中恶意软件公布时间距收集日期不大于c月,c为不小于1的正整数,恶意软件数量为d个,d为不小于100的正整数。
[0050]
本实施例中c为12,爬取网站为github,测试年份为2019年、2020年,其中2019年模型迁移恶意软件样本库含有149个样本,2020年模型迁移恶意软件样本库样本数为181个。
[0051]
步骤10,根据模型迁移恶意软件样本库,提取检测模型使用的特征对应数据,组成模型迁移数据集。
[0052]
其中,根据检测模型使用的特征,使用逆向工具androguard,匹配android应用软件apk解压后文件,若检测模型使用的特征出现在android应用软件apk解压后文件中,则记录出现次数;反之,记为0,以生成序列,恶意样本在序列后追加1;反之,追加0,作为检测模型样本特征向量。
[0053]
本实施例中提取检测模型使用的特征对应数据方法与步骤8中相同。
[0054]
步骤11,根据模型迁移数据集与初始训练数据集,使用同分布检验算法,计算检验统计量,判定android恶意软件是否出现概念漂移。
[0055]
本实施例中同分布检验算法为mann-whitney u检验算法,采用的检测临界值为5。
[0056]
步骤12,若android恶意软件出现概念漂移,使用迁移学习领域自适应算法,迁移初始检测模型,迭代e次,e为小于等于5的正整数,训练新检测模型,用e次迭代中准确率最高的检测模型替代初始检测模型。
[0057]
本实施例中使用的自适应算法为jda算法,e为5。
[0058]
步骤13,以时间间隔c月为周期,重复执行步骤8-步骤12处理,更新检测模型,检测android恶意软件。
[0059]
本实施例中采用2018年、2019年、2020年三年数据作为测试数据,其中2018年初始检测模型准确率为96%,2019年执行步骤8-步骤12前为34%,执行后准确率提升至80%,2020年执行步骤8-步骤12前为43%,执行后准确率提升至87%。
[0060]
综上所述,本发明通过人工android恶意软件分析报告引入检测特征,基于自动化机器学习算法与可解释机器学习算法改进传统的特征包装方法,融合同分布检验与迁移学习算法,提高android恶意软件检测模型的可解释性,降低概念漂移问题对检测模型准确率的影响。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献