首页
社区
课程
招聘
[分享]用 API 语义加强现有的分类器,以检测不断改进的安卓恶意软件
发表于: 2021-4-10 20:57 11638

[分享]用 API 语义加强现有的分类器,以检测不断改进的安卓恶意软件

2021-4-10 20:57
11638

本篇文章是阅读2020年CCS论文《Enhancing State-of-the-art Classifiers with API Semantics to Detect Evolved Android Malware》后的阅读笔记。

1.概述:

基于机器学习(ML)分类器已被广泛部署用来检测Android恶意软件,但同时ML分类器的应用也面临着一个新出现的问题——鉴于恶意软件的发展,此类分类器的性能会随着时间的推移而显着降低(或称为衰老)。

 

先前的工作已经提出使用再训练(evolution-insensitive retraining)或主动学习(active learning )来逆转和改善老化的模型。但是,基础分类器本身仍然是盲目的,其没有意识到恶意软件的演变。而且更为严重的是,这种对Android恶意软件的改进不敏感的再学习或者主动学习,会付出很大代价,即成千上万个恶意软件样本的标签和巨大的人工成本。

 

这篇文章的创新点在于,提出了一个称为API-Graph的框架,使用 API 语义的相似性,即 (similarity information among evolved Android Malware,语义上等价或类似的API使用)来减缓 performance degrades。

 

不同恶意软件变体的语意相似性
也就是说,检索语义等效的相似API的使用,利用改进的Android恶意软件之间的相似性API语意信息来增强最新的恶意Android软件分类器,从而降低分类器的退化速度,这项工作会节省主动学习和再学习所需的大量人工工作。

 

现在将ML应用于恶意软件检测的一个新问题是恶意软件的发展,恶意软件会不断改进进而避免被检测到,这会导致ML分类模型随着时间的推移而导致性能显着下降,这个问题被定义为模型老化或类似的相关概念。不仅仅是实验室的虚拟检测环境,甚至是基于ML的商业分类器的检测率,也会在短短三个月内从几乎100%降至80%以下。

 

目前的主要改进方法,例如通过在线学习引入新的恶意软件样本;或者检测早期建模的信号并重新训练模型以进行改进;或者还有些引入主动学习,选择一小部分代表性的进化恶意软件样本对ML分类器模型进行改进。虽然可以在一定程度上对检测率有所改进,但底层模型仍未意识到恶意软件的演变,尤其是进化恶意软件之间的语义改变。而且这些工作都需要成千上万个带有标签的新恶意软件样本,以使基础模型适应进化过程,涉及到了大量的人工标记工作,成本也是个很大的问题。

 

图片描述

2.XLoader:

为了说明API-Graph如何在进化过程中捕获各种恶意软件版本之间的相似语义,文中举例了名为XLoader的恶意软件示例,这是一款间谍软件和银行木马,会窃取个人身份信息(PII)和财务数据。尽管XLoader从2018年4月到2019年末已演变为六种不同的变体,并在实现方面进行了较大的更改,但这些变体中的许多语义仍然保持不变。
图片描述
上图显示了API-Graph构造的关系图的一小部分,它捕获了Android API,权限和异常之间的相互作用。XLoader恶意软件通过三种不同的实现方式将PII发送到恶意软件服务器,即HTTP请求,普通套接字连接和SSL套接字连接。

 

API-graph通过用发送PII的方式捕获XLoader的三个不同版本之间的语义相似性,从而帮助经过V1训练的ML分类器检测到演化的V2和V3恶意软件版本。

 

所有这三个API(SSL.SSLSocketFactory.createSocket,SocketFactory.createSocket、openConnection,即上图所示)都会抛出IOException和useINTERNET权限,也就是说,这三个API就关系图中的邻域而言足够接近,并且可以在一个群集中组合在一起。因此,ML分类器在关系图的帮助下可以捕获V2 / V3和V1之间的相似性,并在进化后将V2和V3检测为恶意软件。

3.API-Graph系统架构:

下图显示了API-Graph的总体架构,该架构建立了一个称为API关系图的概念,该关系图捕获了所有Android API的语义和相似性。

 

API-Graph有两个主要阶段:(i)建立API关系图(ii)利用API关系图。

 

图片描述
首先,API-Graph通过收集与某个API级别相关的Android API文档并提取实体(例如API和权限)以及这些实体之间的关系来构建API关系图。

 

其次,API-Graph框架利用API关系图来增强现有的恶意软件检测器。

 

具体来说,API-Graph使用图嵌入算法将关系图中的所有实体转换为向量(嵌入空间中两个实体之间的向量差反映了关系的语义相似度)。

 

因此,API-Graph通过解决优化问题来生成所有实体嵌入,从而使具有相同关系的两个实体的向量相似。 然后,API-Graph将嵌入空间中的所有API实体聚类在一起,将相似的API组合在一起。这些API集群进一步用于增强现有分类器,以便它们可以在检测过程中使用某些API级别捕获这些与Android恶意软件等效的API语义改进,。

 

要作用在于减少了人工标记所需成本的同时能够减缓了现有检测模型的检测率衰退。

 

找到不同实现上的语义的相似性的核心步骤为:

 

建立一个 relation graph:

  • node: entity(实体节点)
  • edge: relation between two entities(实体节点指点的关系)
    图片描述

根据先前的工作提供的关系分类法,对Android API定义了十种关系类型,其中涵盖了关于API配置文件的各种信息,如上表所示,这十种关系类型也归纳为五类。

 

随后从图中提取出 API 语义 (将每个 API entity 转变为一个 embedding),并将类似语义的进行分组为 API clusters (API-Graph 的 result)

 

使用指标 AUT (area under time) (在 TESSERACT 中提出:TESSERACT 使用 active learning 选择一小部分具有代表性的改进的安卓恶意软件)
图片描述
随后,作者将 API-Graph 应用于四个安卓恶意软件检测器上并进行测试,分别为 MAMADROID, DROIDEVOLVER (通过 online learning 持续引入新的恶意软件样本), BREBIN, DREBIN-DL。

4.API-Graph中relation graph结构:

分为两部分:

  1. 建立 API Relation Graph: collecting Android API Documents related to a certain API level 并提取 entities 和 relations
  2. 使用 API Relation Graph 去加强现有的恶意软件检测技术
    将所有 entities 利用图嵌入算法转换为 向量(vector) (使用 graph embedding algorithm)
  • 将所有 entities 利用图嵌入算法转换为 向量(vector) (使用 graph embedding algorithm)
    图片描述
  • 两个 entities 之间的 vector difference in the embedding space 即为两个 entities 之间的语义相似度
  • 使用优化使两个有相同关系的 entities 的 vector 变为类似的 (similar)
  • 聚类语义类似的 APIs 生成 clusters
    图片描述

5.API-Graph中图的构建和使用

5.1 API Relation Graph (异构图,有向图)

API关系图 [公式] 定义为有向图,其中 是所有节点(称为实体)的集合, 是两个节点之间的所有边的集合(称为关系)。API关系图是异构的,即如下所述存在不同的实体和关系类型。

 

Entity Types:API关系图中的实体有四种类型,它们是Android中的基本概念:method,class,package和permission。前三种实体类型是组织Java程序的关键代码元素,后一种描述了Android API执行期间所需的资源。这四个实体共同提供了足够的能力来捕获API之间的内部关系。

 

Relation Types: 之前所提到的五类关系
图片描述

5.2 提取entity的策略

从 API 文件中提取 entity,API 文件以 class 为分类 (organized in class)
图片描述

  1. 从每个 per-class document file 提取 class entity
  2. 从完整 class name 中拆分出 package name (i.e. package entity)
  3. phase per-class document files 为 Document Object Model (DOM) 并从中抽取属于某一个 class 的 method entity
  4. phase the manifest file 中的所有 permissions 并从中抽取 permission entity

5.3 提取 relation的策略

  • 从 structured texts(结构化文本) 中提取 relation (6种)
    直接进行文件解析
  • 从 unstructured texts(非结构化文本) 中提取 relation (4种,基于模板的关系匹配)
    使用 NLP 的一种基于模型关系配对的方法
    • 手动生成配对模型 (template set)
      手动检测1%的 API 文件研究描述 relation 的 pattern
    • 迭代扩展 template set
      用半自动策略迭代生成 template set
      图片描述
  • 使用 NLP 进行加强的模型匹配
    将段落拆分为句子,然后使用 NLP 对每个句子进行预处理:
    • 提取主干:将所有单词化为基本远行
    • 基于 declaration 的指代消解 (co-reference resolution):指代消解指在文本中确定代词指向哪个名词短语
    • entity 名称规范化:用 exact value 替代所有的多态名称

将预处理后的句子与模型进行匹配
图片描述

5.4 应用API Relation Graph

将图中的 API 转换为 embedding representation (即 vector), 并将这些 embeddings 分类为 clusters

 

使用 TransE 进行转换(模型的基本想法是前件的向量表示h与关系的向量表示r之和与后件的向量表示t越接近越好,即h+r≈t。这里的“接近”可以使用L1或L2范数进行衡量)
图片描述

  • 首先提取出 permission entity, 并且添加基于 permission 的新的 relation
  • 将图中分实体 e 和关联 r 分别用向量 Le和 Lr表示
  • 使用 TransE 算法对每个三元组 (h,r,t)最小化 [公式] (h,t 为 entities, r 为 relation)
    图片描述
  • 使用 K-Means 算法将 embeddings 分组,使用每个 cluster 中心的 embedding 来表示这个 cluster,并用 Elbow 算法决定 cluster 的数目

注:在API-Graph成功地对API进行聚类之后,API-Graph会采用聚类(尤其是每个聚类中心的嵌入)来表示群聚类中独立API的语义。

 

最后,对于目前主流的四种Android恶意检测分类器, 将其中的 API feature format 替换为 cluster 进行改进,以此查看本文所提出方法的效果。
图片描述

6.实验结果

注:w / o表示没有API-Graph的分类器,即原始分类器;w /表示使用API​​-Graph增强的分类器

6.1 模型可维护性分析

目的是找出API-Graph框架可以在维持高性能分类器的同时节省多少人工。 具体来说,文章比较了在维持理论分类器和增强分类器方面进行主动学习所需的人力。

 

结果表明,用了API-Graph之后,分类器所需要更新的时间间隔变大,所需的重新训练样本数降低,原因是这些分类器都在一定程度上具有捕获恶意软件演化的功能。
图片描述

 

图片描述
图片描述
结论:当维护四个不同的高性能恶意软件分类器时,API-Graph可显着减少(i)手动标记的样本数量和(ii)重新训练频率。

6.2 模型可持续性分析

图片描述
结论:API-Graph显着增强了经过演变的恶意软件样本的现有Android恶意软件分类器的可持续性,这表明API-Graph能够有效减缓模型老化。

6.3 特征空间稳定性分析

测量了同一家族的演化版Android恶意软件的特征空间稳定性,以证明AP-IGraph可以捕获语义相似性

 

图片描述上图显示了以API和API集群为特征的每个恶意软件家族的特征稳定性得分分布,该图的一个重要观察结果是,以API集群为特征的所有恶意软件家族的特征稳定性得分非常接近1,远高于具有独立API的恶意软件家族的特征稳定性得分。

 

此观察结果说明,由于恶意软件开发人员倾向于使用语义相似的API来实现相同或相似的功能,因此API-Graph可以捕获恶意软件的演变。

 

结论:API-Graphs成功捕获了一个家族中进化的恶意软件样本之间的语义
相似性

6.4 同一聚类中的相似程度分析

在这个指标中,测量API在同一集群中的接近度,以证明API-Graph的有效性。
图片描述
结论:语义上相近的api在嵌入空间中被API-Graph分组在同一个或相近的集群中

7.总结

Android恶意软件会随着时间的推移不断发展,以避免被现有分类器检测到。这篇文章提出了API-Graph来捕获API之间的语义相似性(称为API语义),并使用API​​语义增强最新的分类器,以便它们仍可以对演化的恶意软件样本进行分类。

 

具体来说,API-Graph构建所谓的API关系图,将图中的每个API实体都覆盖到一个称为API嵌入图的嵌入中,然后将嵌入形式中的API分组聚类为群集。

 

这些集群用于替换现有分类器使用的每个单独的API,接着应用API-Graph增强了四个最先进的分类器,并使用作者创建的数据集对其进行了评估,该数据集包含2012年至2018年之间超过322K个Android应用程序。结果表明,API-Graph可将这四个分类器中要标记的样本数量显着减少32%–96%

 

图片描述

 

以上为分享内容,谢谢!
文章链接:Enhancing State-of-the-art Classifiers with API Semantics to Detect Evolved Android Malware


[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

最后于 2021-4-10 21:07 被夏日悠长编辑 ,原因: 添加文末链接
收藏
免费 5
支持
分享
最新回复 (2)
雪    币: 67
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
之前一直以为临时会员只能看帖,不能回复和发帖来着,今天阅读了一下规则才发现其实很多版块是可以发帖的,后续将会把自己认为比较好的阅读笔记逐步发上来和大家一起学习,谢谢!
2021-4-10 21:02
0
雪    币: 3126
活跃值: (3411)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2021-4-17 15:21
0
游客
登录 | 注册 方可回帖
返回
//