1 研究背景

1.1 问题

Android软件由于其来源特性容易受到hacker攻击
现有的基于传统机器学习的apk检测方法在挖掘软件行为语义信息方面存在局限性,且检测结果缺乏可解释性

1.2 传统机器学习方法

  1. 基于字符串
    方法:将提取的特征表示成字符串序列,然后编码成向量
    优点:易于理解和实现
    缺点:未能捕捉特征之间的深层语义关系
  2. 基于图像
    方法:将APK转换为图像并应用图像识别技术进行分类
    优点:简单高效
    缺点:容易忽视应用内的关键语义信息
  3. 基于图的方法
    方法:构建图结构以捕捉特征之间的语义关系
    优点:能更有效地表示复杂的应用行为
    缺点:构建复杂的图结构会带来较大计算负担和资源消耗

一般流程:
反编译APK->提取多种不同的特征->以不同方式组合和处理,获得所应用的表示向量->将表示向量用于训练分类器以检测恶意软件

2 方法论

在这里插入图片描述

2.1 特征提取

方法:静态特征提取
文件:Manifest.xml、class.dex
特征:permission、API、URL、uses-feature
三视图:permission view、API view、URL & uses-feature view
URL、uses-feature的数量较少,因此合并
工具:

  • Androguard:反编译apk,提取特征
  • PScout:建立apk及其使用的权限的映射

2.2 多视图文本生成

使用:gpt-4-1106-preview

2.2.1 功能描述模板

在这里插入图片描述
生成键值对形式的功能描述
例如:
[“android.permission.WRITE_SMS”: “allows sending and editing SMS”]
存储机制:
若某个permission、API、URL、uses-feature之前生成过对应的功能描述,则直接使用先前的描述而不再生成
显著提升了LLM生成效率并减少token消耗

2.2.2 视图总结模板

在这里插入图片描述

2.3 检测分类

使用OpenAI 的嵌入模型text-embedding-ada-002,将文本描述转化为向量
使用向量训练DNN模型进行二分类

2.4 获取诊断报告

结合多视图文本描述与DNN检测结果生成检测结果诊断报告,为检测结果提供可解释性分析
在这里插入图片描述

3 实验

3.1 实验数据

来源:AndroZoo
良性样本:11189
恶意样本:12128

3.2 基准实验

在这里插入图片描述

3.3 消融实验

去除其中一个视图,或者去除功能描述、视图总结后检测效果对比
在这里插入图片描述
API视图对结果的影响最大

4 改进方向

  1. 引入更多静态特征,丰富视图种类
  2. 采用交互式动态与静态组合特征检测方法
  3. 建立有效的错误检查和纠正机制,预防LLM幻觉
  4. 调用远程LLM易受到网络波动影响,导致巨大token开销。可以本地部署LLM并使用Android安全领域的知识微调
  5. 基于开源LLM结合检索增强生成(RAG)进一步设计思维链,以确保输出的质量和稳定性

原文链接:
AppPoet: Large Language Model based Android malware detection via multi-view prompt engineering

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐