paper—基于 GCN 的安卓恶意软件检测模型
目录
摘要
一、引言
二、基础概念与相关工作
2.1 静态检测
2.2 动态检测
2.3 图卷积神经网络及函数调用图
2.3.1 函数调用图
2.3.2 图卷积神经网络及图嵌入
三、基于敏感API调用模式的检测模型
四、实验测试与结果分析
4.1 评价标准
4.2 数据集及相关环境
4.3 测试方法
4.4 API调用模式特征有效性分析
4.4.1 敏感API调用模式特征可视化分析
4.4.2 基于敏感API调用模式特征的恶意软件检测
4.5 综合辅助特征的检测测试
五、结语
摘要
一、引言
- 该方法首先提取待检测样本的 FCG,通过本文提出的图精简方法对其中的低敏感度 API 节点进行删减,以降低数据处理负荷;
- 基于图卷积神经网络(GCN)对精简后的函数调用图进行分析,提取特征,获取图中每个API 节点的嵌入表示。
- 提出一种基于 GCN 的安卓恶意软件敏感 API 调用模式,使用图嵌入实现对恶意代码部分的函数调用结构信息挖掘;
- 提出图精简以及敏感 API 权重计算方法,有效降低检测系统的数据复杂度,提升了检测系统效率;
- 提出多元特征融合的安卓恶意软件检测模型,综合多种特征对安卓恶意软件进行判定,有效提升系统性能;
- 基于大量良性以及恶意安卓软件样本,对单个分类器、分类器联合、特征有效性等进行详尽的验证测试。
二、基础概念与相关工作
2.1 静态检测
2.2 动态检测
2.3 图卷积神经网络及函数调用图
2.3.1 函数调用图
- V 表示图中所有顶点的结合,在 APK 的函数调用图中,每个顶点对应一个 Android API;
- E 表示函数之间的调用关系。
- 通过 APK-Tool 或 Androguard 工具对 APK进行反编译后,可从 samli 代码(Android虚拟机的反汇编语言)中提取API 及调用关系,从而形成 APK 的函数调用图。
2.3.2 图卷积神经网络及图嵌入
三、基于敏感API调用模式的检测模型
3.1 API调用模式特征
3.1.1 基于敏感API的函数调用图精简
- 若某一节点为非敏感 API 节点,且其邻居节点中不含敏感 API节点,则对该节点进行删除;
- 若某一函数节点为非敏感 API 节点,其邻居节点中含有敏感API,则保留该节点。
3.1.2 基于GCN的敏感API图嵌入
- 每个节点的嵌入表示均会获取邻居节点信息并进行更新;
- 在下轮迭代中,携带了远端节点信息的嵌入表示会不断随着节点之间的连接进行传播。
3.1.3 敏感API嵌入权重分配
3.2 辅助判定特征
- Opcode 频度特征。首先对 APK 进行反汇编,并从所有 smali 文件中提取对应种类 opcode 数量。本方法以词袋模型为基础,共统计了 256 类 opcode 数量并将其表示为的特征向量。
- 敏感权限特征。本方法基于 AndroidManifest.xml 文件提取 APK 安装时申请的权限列表作为特征,其中纳入统计范围的共 120 个权限项目,将其表示为长度为120 的特征向量:。表示方法采用 one-hot 形式,当该 APK 申请了对应权限时,P 取值为 1,无对应权限申请时,取值为 0。
- API 调用频度特征。本检测系统在 API 频度特征提取中,仅对部分敏感 API 进行频度统计,敏感 API 项基于 TF-IDF 计算得出权重排名的前200 项。基于 Androguard 对 APK 进行解包后获取 samli 文件,统计相应敏感 API 项目的调用次数,并将其归一化为频度特征。
3.3 特征及分类器结构
四、实验测试与结果分析
首先基于可视化方法对 API 调用模式特征之间的区分度进行实验观察,随后使用上文提出的特征提取方法以及检测模型进行检测器训练与测试。
4.1 评价标准
4.2 数据集及相关环境
- 多特征融合检测模型的运行及测试环境为 CPU Intel (R)E5,16GB 内存,GPU 为 GTX1080,120GB SSD + 4TB HDD,基于 Ubuntu16.04 操作系统。
- 实验数据集中恶意 APK 应用来自于 VirusShare 病毒数据库以及 Drebin 安卓恶意软件检测数据集,良性样本由小米应用商城爬取并经过 VirusTotal 检测,保证良性样本数据集不包含其它 类型样本。
- 良性样本共计 4780 个,恶意样本共计 5600 个,样本总量为 10380。将其按照 9∶1 的比例随机划分为训练集和测试集。
4.3 测试方法
4.4 API调用模式特征有效性分析
4.4.1 敏感API调用模式特征可视化分析
4.4.2 基于敏感API调用模式特征的恶意软件检测
4.5 综合辅助特征的检测测试
五、结语
- 本文提出了一种新型敏感 API 调用模式特征,该特征基于 GCN 对函数调用图进行 API 节点的嵌入计算,实现对 API 节点在函数调用图中的调用模式表征;针对函数调用图规模较大的问题,提出一种半保留式的函数调用图精简方法,有效降低了对函数调用图进行分析时的数据复杂度;基于卷积神经网络搭建了对应的子分类器,有效实现了安卓恶意软件检测。
- 分析与实验测试结果显示,敏感API 调用模式特征可有效对 APK 中的函数调用模式进行表征,在采用权重排序前 30 的敏感 API 项的调用模式作为特征时,可获得 97.6%的检测精度,相较于其它频度特征可携带更多有效信息,实现高效的安卓恶意软件检测。
- 本检测模型联合了 Opcode 频度特征、API 频度特征、 敏感权限特征,将所有特征集成至同一特征矩阵中,进一 步提升了检测模型性能,检测精度达到 99%。与同类工作进行比较,本文拥有更优的检测性能,验证了基于多种特征融合的安卓恶意软件检测模型的有效性。
- 未来可对本检测模型中的敏感 API 检测机制进行升级,进一步细化 API 的挑选机制,从而减少待分析的 API 数目,达到提升检测效率的目的。
paper—基于 GCN 的安卓恶意软件检测模型相关推荐
- 基于深度学习的恶意软件检测Python代码及数据
资源下载地址:https://download.csdn.net/download/sheziqiong/85947873 资源下载地址:https://download.csdn.net/downl ...
- 基于PaddlePaddle实现的目标检测模型SSD
原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 本文链接:基于PaddleP ...
- 安卓恶意软件检测论文内容整理
Transferable Cost-Aware Security Policy Implementation for Malware Detection Using Deep Reinforcemen ...
- 基于深度学习的恶意软件检测
深度神经网络可以有效地挖掘原始数据中的潜在特征,而无需大量数据预处理和先验经验.神经网络在计算机视觉.语音识别和自然语言处理方面取得了一系列的成功,当然,成功的原因是多方面的,其中的一个因素就是神经网 ...
- Android 加固与监测,基于Android平台的恶意软件检测和软件加固技术研究
摘要: 随着智能手机技术的发展,人们越来越多地把工作和生活的计算平台从传统的PC平台转移到移动平台.智能手机储存了大量的用户隐私,例如通信记录,位置信息等,因而成为攻击者的攻击目标.作为主流移动平台之 ...
- 基于yolov5s实践国际象棋目标检测模型开发
在我前面的一篇文章中讲解实现了基于改进的yolov5s-spd模型实现了五子棋目标对象检测模型系统的设计开发,这里紧接前文,突发奇想,是否可以借鉴同样的思路实现象棋的检测模型开发呢?理论上面肯定是可以 ...
- 基于卷积神经网络的目标检测模型的研究_黄咨_2014_上海交大
一.传统检测模型和卷积神经网络对比 传统检测模型:采用人工特征提取方法获取目标的特征描述.然后输入到一个分类器中学习分类规则. 人工特征提取方法的缺点: (1)对设计者提出比较高的学术要求, (2)提 ...
- 【摘要】HinDroid:一个基于异质图的安卓恶意软件智能检测系统
作者: 摘要: 安卓恶意软件爆发式增长,其对智能机用户的损害情况也日益严峻.网安领域中,对安卓恶意软件的检测已经变得越来越重要.安卓恶意软件日益增长的复杂性呼吁新的防御技术,能够对抗新的威胁,并使其难 ...
- 基于数据分析的web安全检测
算法分析与设计 网络攻防大实验 云安全与大数据 零.kaggle简介 Kaggle是由联合创始人.首席执行官安东尼·高德布卢姆(Anthony Goldbloom)2010年在墨尔本创立的,主要为开发 ...
最新文章
- opensuse13.2安装 sass和compass
- 如何将图片中的一个任意四边形区域的图像转化为矩形【附源码】
- “error LNK2019: 无法解析的外部符号”的几种可能原因
- 如何防止空链接,跳转到网页顶端
- cf414B(dp)
- 获取文本中你须要的字段的 几个命令 grep awk cut tr sed
- 1148 Werewolf - Simple Version (20 分)
- VS2017 安装 QT5.9
- python socket出现ip已经使用_Python:只接受特定的IP(socket)
- MyBatis源码解析(十二)——binding绑定模块之MapperRegisty
- E - 娜娜梦游仙境系列——莫名其妙的插曲
- ui分离的进程 如何查找窗口句柄_如何使用 Linux screen
- 中国各省所处的经纬度范围
- PSM价格敏感度模型
- mtp android7,Android7.0修改手机型号,mtp名称等
- java导出excel与word文档
- MC34063升压电路中常见的几种问题
- 学计算机的参加数学建模有什么用吗,数学建模是什么?对于编程来说有什么意义?...
- 真正的IT技术男是什么样的?
- 22222222222
热门文章
- php生成字母头像,Identicon:实现根据用户账号生成像素头像php版
- springboot+vue+elementui大学生社团活动报名系统平台
- php网页播放器源码免费,基于Flowplayer打造一款免费的WEB视频播放器附源码
- 关于保险的基础知识总结
- Windows窗口消息大全,全不全自己看
- java无法验证发布者_Win10弹出无法验证发布者怎么解决?
- Nvme驱动补丁 解决Usb3.0/3.1驱动和磁盘控制器WIN7蓝屏方案
- js 前端导出报错 格式不正确_vue项目前端导出word文件(bug解决)
- python库有哪些餐厅_Python告诉你上海有哪些高性价比的西餐厅
- [python]pip freeze和pipreqs的区别和使用方法