基于函数指纹的违法APK 检测

2022-10-14 02:01◆肖䶮汉
网络安全技术与应用 2022年9期
关键词:特征向量决策树指纹

◆肖䶮汉

(公安部第三研究所 上海 200000)

1 引言

近年来,随着通信技术和移动互联网的高速发展,通过手机进行交友、获取资讯、购物逐渐成为了人们生活中不可或缺的一部分[1]。但与此同时,移动互联网也逐渐成为不法分子的活跃平台,以APK为载体从事网络色情、赌博、钓鱼等违法活动日益猖獗,对人民的身心健康以及财产安全带来了巨大的安全隐患。能够高效准确完成违法APK 的自动识别,成为了保障网络安全、维护社会和谐稳定中的重要一环。

本文提出了一种基于函数指纹的违法APK 检测模型,该模型引入了函数指纹的概念,在此基础上利用TF-IDF 和随机森林算法完成了分类模型的构建。该模型具有构建复杂度低、准确率高等特点,能够有效完成违法APK 的自动识别分类。

2 相关工作

在移动互联网平台上,针对在APK 分析领域中的分类研究已经有一定的成果[2],例如,2013 年,B San 等人[2]提取APK 的权限列表,通过分析恶意APK和正常APK权限的统计特征进行恶意APK识别。2016 年SY Yerima 等人[3]根据APK 的API、OPCODE、权限三种类型特征构造贝叶斯网络对恶意APK 进行分类。2018 年,Q.Zhou 等人[4]利用APK 中的Syscall 构造二分类模型。2019 年,Wang S 等人[5]监控APK 运行过程中TCP 流量信息来进行恶意APK 识别。2021年褚堃等人[6]将APK 转换为灰度图,使用卷积神经网络进行恶意APK 识别。但这些APK 分类的研究主要集中对木马、间谍、后门等恶意APK 的进行分类验证,这些恶意APK 往往会有较为明显的异常特征。而赌博、色情、诈骗这些违法APK 其隐蔽性更强,检测更为困难。而对这些违法APK 分类识别的相关研究尚属空白。

3 具体实现

本文提出的违法APK 检测模型的框架由以下三个主要部分组成:函数指纹抽取、TF-IDF 特征构建、分类器构建。检测模型框架图如图1 所示。

图1 检测模型框架图

3.1 特征抽取

函数是软件程序的基本构成元素,是程序实现软件功能的基础核心。每一个函数都有其核心功能。由于核心函数往往是通过调用底层系统或第三方库的API 函数实现的,故函数中的API 调用序列是函数功能的一项重要标识。本文正是基于此提出函数指纹这种新概念,将函数中的API 调用序列作为函数的标识特征,也就是函数的指纹。例如图2 所示的sendinfo 函数,其函数指纹S(sendinfo)可以表示为:

图2 示例函数sendinfo

S(sendinfo)={…,getDeviceId,getSubScriberId,execute,…}(1)

特征抽取模块主要工作就是利用Androguard 逆向工具[7]对APK文件进行反编译,将APK 文件逆向成java 代码,然后分析APK 中的所有函数,计算所有函数的API 调用序列。抽取函数指纹具体步骤如下:

3.2 特征向量构建

TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于资讯检索与资讯探勘的常用加权技术[8]。这种统计方法,用以评估字词对于一个文件集或一个语料库的重要程度,常用于文本分类。一般来说一个字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。根据理论,TF-IDF 值越高的特征越具有区分性,故我们通过TF-IDF 完成发特征向量的构建。令APK 样本库D={d1,d2,d3…dn},函数指纹库S={s1,s2,s3…sm},di为样本库中第 i 个 APK 样本,di=为函数指纹sk在di出现的频次。

利用公式(4)计算每一个函数指纹的TF-IDF 值,选取TF-IDF 值较高的TOP(K)构建样本的特征向量。

3.3 分类模型

在分类模型模块中,我们选择使用随机森林算法[8]进行分类模型构建。随机森林就是构造多棵决策树,每棵决策树都是一个分类器,那么对于一个输入样本,每一个决策树都会产生一个结果。N 棵树会有N 个分类结果。随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出。决策树的构成过程则是遍寻特征向量,不断找出信息增益最大的特征,从而构造一棵分类树。随机森林分类模型生成具体步骤如下:

1) 假设违法APK 总训练集大小为N,随机森林由M 棵树组成。

2) 每棵树随机且又放回的从训练集N 中抽取D 个样本,作为该分类树的训练集。

3) 假设每个样本的特征向量维度为n,从中随机抽取m 个特征组成特征向量。

4) 对于特征向量中的每一个特征A,根据其是否存在将训练集分割为D1 和D2,利用公式计算在A 的条件下样本集合D 基尼系数Gini(D,A),其中k 为分类个数。Ck为D 中属于第k 类的样本子集。

5) 选择基尼指数最小的特征及其对应的切分点作为最有特征和最优切分点。从现节点生成两个子节点,将训练数据集依特征分配到两个子节点中。

6) 重复3)、4)操作,最终生成分类决策树。

7) 重复2)到5)直到完成M 棵决策树的构造。

4 实验验证

4.1 实验准备

为了验证检测框架效果,我们从某违法网站平台上收集了违法APK 样本1144 个,同时从华为应用市场下载了298 个正常APK 样本,总计1442 个APK 作为本次实验的数据集,70%用作训练集,30%用作验证集。其中违法APK 样本又分为涉赌APK、诈骗投资APK、涉黄APK 三类。其具体类型与数量分布如表1 所示。

表1 实验样本数据

4.2 实验结果分析

为了评价检测模型的效果,我们引入准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 值(F1)四种评估指标对实验结果进行综合评价。其中F1 是精准率和召回率的综合衡量,其值越高,检测分类结果越好。本次实验分别测试检测模型在k=10,k=50,k=100,k=200,k=500,k=1000,k=2000 七种情况下的检测分类效果,其中k 为特征向量的维度,检测值取10 次交叉验证结果的平均值。具体检测结果如图3 和表2 所示。

图3 不同特征向量维度下的检测结果图

表2 不同特征向量维度下的检测结果表

从图3 和表2 可以看出。准确率、精确率、召回率、F1 四种检测指标的变化趋势一致,准确率和召回率甚至完全相同。四种指标都随着k 值的增大不断升高,在到达200 后开始下降。说明在k=200时,该模型检测效果最好,四种检测指标均超过了0.92。

5 总结

本文提出了一种基于函数指纹的违法APK 检测模型。该模型抽取APK 的函数指纹特征,利用TF-IDF 筛选、构建特征向量,并引入随机森林分类模型完成检测模型的构建。该检测模型实现复杂度低且具有较好的分类效果。实验结果表明,该检测模型对常见的几种违法APK检测准确率高达92%。下一步,我们将进一步收集违法APK,验证该模型在大规模数据集下的检测效果。同时尝试引入其他维度特征,进一步提高该模型对违法APK 的检测效果。

猜你喜欢
特征向量决策树指纹
二年制职教本科线性代数课程的几何化教学设计——以特征值和特征向量为例
克罗内克积的特征向量
像侦探一样提取指纹
为什么每个人的指纹都不一样
一种针对不均衡数据集的SVM决策树算法
决策树和随机森林方法在管理决策中的应用
一类特殊矩阵特征向量的求法
EXCEL表格计算判断矩阵近似特征向量在AHP法检验上的应用
基于决策树的出租车乘客出行目的识别
基于自适应稀疏变换的指纹图像压缩