[论文翻译]SFCGDroid:基于敏感函数调用图的 android恶意软件检测

摘要:

        安卓系统因其开源的特性,目前已成为全球最流行的操作系统之一,因此黑客制作恶意软件的门槛也越来越低,越来越多的恶意软件开始威胁人们的生活。图用来表示程序的语法和语义结构,可以自然地表示恶意行为,因此我们提出了一种名为SFCGDroid的恶意软件检测方法,它基于敏感函数调用图。首先,我们对安卓应用程序进行反编译,生成函数调用图(FCG),并在FCG上提取敏感函数调用图(SFCG)。其次,我们提取两类特征:(1)使用 Skip-gram 模型获得函数嵌入;(2)将 SFCG 视为社交网络,提取敏感 API 的三元组属性。这两类特征结合起来作为 SFCG 的特征表示,并输入图卷积网络(GCN)进行恶意软件检测。在对 26939 个安卓软件数据集的实验中,本文中的 SFCGDroid 可以达到 98.22% 的准确率和 98.20% 的 F1 分数

3 方法

        SFCGDroid 的整体结构如图 1 所示。APK 经过反编译后提取 FCG,再从 FCG 中提取 SFCG,然后将函数语义特征与敏感的API 三元组表示特征相结合,发送给 GCN 进行检测。

3.1 SFCG 提取

        SFCG 的要求是从 APK 文件中提取 FCG。我们使用 apktool [29] 和 androguard [30] 工具进行反编译以获得 FCG。我们根据 FCG 提取 SFCG,提取过程如算法 1 所示。

        我们需要输入 APK 文件、敏感 API 列表和订单号。敏感 API 列表来自 [7](Gong, L., Li, Z., Qian, F., Zhang, Z., Chen, Q.A., Qian, Z., Liu, Y.:
Experiences oflanding machine learning ontomarket-scale mobile
malware detection. In: Proceedings of the Fifteenth European Con-
ference on Computer Systems, pp. 1–14 (2020))。敏感 API 是指某些 API 可以执行敏感操作,如读取短信、读写文件等,而且敏感 API 与恶意软件关联度很高。目前,Android SDK 提供了 50,000 多个 API,其中执行敏感操作的敏感 API 有 426 个,而敏感 API 只占其中很小一部分。阶次参数表示敏感 API 节点到达其他节点的距离,需要将 FCG 转换为无向图。

在算法 1 中,第 2 行中的函数 getFCG() 获取 APK 文件的 FCG,第 3 行中的函数 toUndirected() 获取 FCG 的无向图 UnFCG,第 4 行中的函数 getSAPIsOfFCG() 获取 FCG 的敏感 API。第 5 行中的 Si 表示敏感 API 列表中的每个敏感 API,第 6 行中的函数 getNeiOrder() 是为了获取无向图 UnFCG 中与敏感 API 节点距离小于或等于阶参数值的一些节点,因此集合 N 中既有敏感 API 节点,也有非敏感 API 节点。第 8-15 行查找集合 N 中的节点之间是否存在边连接,然后在 FCG 中获取这些节点之间的边,从而构建 SFCG。由于 SFCG 中的节点和边都来自 FCG,因此 SFCG 是 FCG 的诱导子图。最后,根据找到的节点和边构建 SFCG。(有个问题,这个产生的子图的节点之间都会有边连接吗,有没有连接上的吗)

3.2 功能语义特征

        在获得 SFCG 之后,我们还需要获得函数语义特征。独热编码是一种简单的方案,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值