Enhancing State-of-the-art Classifiers with API Semantics to Detect Evolved Android Malware笔记

使用API语义增强最新分类器来检测不断发展的安卓恶意软件

由于恶意软件的不断发展,机器学习分类器的性能会随着时间显著降低。先前的工作已经提出使用再训练或主动学习来改善其性能,但需要巨大人工成本来标记恶意软件样本。本文提出APIGraph,以在语义上等效或相似的API使用方面,利用发展变化的安卓恶意软件之间的相似性信息来增强最新的恶意软件分类器,从而自然减慢了分类器的老化,节省大量人力。

APIGraph整体架构图如下

在这里插入图片描述

APIGraph有两个主要阶段:

1.建立API关系图

通过收集与某个API级别相关的安卓API文档并提取实体(如API和权限)以及实体之间的关系来构建API关系图。
实体:主要有四种类型:method、class、package、permission
关系:归纳为以下五类

实体提取:

(1)从每个类文档中提取类实体
(2)从完整的类名中拆分包名称来提取包实体
(3)将每个类的文件解析问文档对象模型,提取属于类的方法实体
(4)解析清单文件,提取权限实体

关系提取:

(1)从结构化文本进行关系解析
(2)对非结构化文本利用基于模板的关系匹配
先手动指定匹配模板,再迭代扩展模板集,最后使用NLP增强的模板匹配

2.利用API关系图

APIGraph将关系图中的每个API转换为一个嵌入表示,然后将这些嵌入分组为簇。算法如下图所示。
在这里插入图片描述

(1)APIGraph提取权限实体并基于通用权限添加新关系
(2)APIGraph将实体𝑒 ∈ 𝐸嵌入向量le,关系𝑟 ∈ 𝑅嵌入向量lr
(3)应用TransE算法对每个三元组最小||𝑙ℎ +𝑙𝑟 −𝑙𝑡 ∥22
(4)通过K-means将API嵌入到不同的组中并利用Elbow确定簇数
APIGraph成功对API进行集群后,利用群集(尤其是群集中心的嵌入)来表示集群中独立API的语义。

有效性评估

1.模型可维护性分析

APIGraph在维持分类器高性能的同时可以节省多少人工成本
在这里插入图片描述
在这里插入图片描述

APIGraph可以为MamaDroid,DroidEvolver,Drebin和Drebin-DL分别节省要标记的样品量33.07%,37.82%,96.30%和67.29%,并且降低了再培训频率
在这里插入图片描述

每个分类器具有APIGraph的AUT高于没有APIGraph的AUT。这表明APIGraph确实可以减慢四个不同分类器之间模型的老化

2.模型可持续性分析

减慢分类器老化的效果
在这里插入图片描述

四个分类器的平均AUT值分别提高了19.2%,19.6%,15.6%,8.7%,表明APIGraph能减缓模型老化。
在这里插入图片描述

DREBIN-DL和DREBIN是四个分类器中老化方面最好的,F1只从接近1下降到0.8以上

3.特征空间稳定性分析

捕获来自同一家族的不断发展的恶意软件之间的相似性
在这里插入图片描述

以API集群为特征的所有家庭的得分非常接近1,远高于直接以API为特征的家庭的得分。该观察结果说明,由于恶意软件开发人员倾向于使用语义相似的API来实现相同或相似的功能,因此APIGraph可以捕获恶意软件的演变
在这里插入图片描述

API群集的功能稳定性得分几乎是平坦的,并且不会随着时间的推移而大大降低。相比之下,具有独立API的功能稳定性得分不仅很低(接近0.75),而且会随着时间的推移而降低。

4.API紧密度分析

在这里插入图片描述
在这里插入图片描述

其中在图1中,这些API清楚地分成了不同的集群。例如,与PII相关的API,例如getDeviceId(),getSubscriberId();与网络相关的API(例如来自“ java.net”,“ javax.net”,“ android.net.Network”的API).而“ java.lang”包中的API可以清楚地分为两类:一组包含用于过程管理和系统命令执行的安全敏感型API,另一组包含那些Java内置数据结构API,例如java.lang.Long.compare()。这个事实表明,像MamaDroid所采用的那样,一种简单的包级API聚类方法在捕获语义信息方面是不准确的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着物联网系统的不断发展,机器到机器的通信变得越来越重要。MQTT作为一种轻量级的通信协议,已经被广泛应用于物联网系统中。而Python作为一种灵活且强大的编程语言,可以用来增强MQTT-based的机器到机器通信。 首先,Python提供了丰富的库和工具,可以帮助开发人员更加便捷地使用MQTT协议。通过使用Python的MQTT客户端库,开发人员可以快速地建立起MQTT连接,并且方便地进行消息的发布和订阅操作。同时,Python还提供了各种各样的扩展库,可以用来处理与MQTT相关的数据和事件。 其次,Python具有较为友好的语法和良好的可读性,这使得开发人员可以更加高效地编写和维护MQTT-based的机器到机器通信代码。同时,Python还支持异步编程,这意味着可以编写高效的并发MQTT通信程序,从而提高系统的性能和响应速度。 此外,Python还可以与各种传感器、执行器和其他物联网设备进行良好的集成。开发人员可以利用Python的丰富库和工具,将MQTT通信与物联网设备的控制和监测结合起来,从而实现更加智能和灵活的物联网系统。 综上所述,通过使用Python来增强MQTT-based的机器到机器通信,可以使物联网系统变得更加灵活、高效和功能丰富。Python为开发人员提供了丰富的工具和良好的支持,从而可以更好地应对物联网系统中的各种挑战和需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值