You Are What You Do: Hunting Stealthy Malware via Data Provenance Analysis abstract。

解决的问题

对于传统检测工具而言,很难检测现在的具有隐蔽性的恶意软件。本文针对此问题提出一种方法来检测该类软件。

Architecture

arch

思路及实现

为了检测隐蔽的恶意软件,决定 PROVDETECTOR 有以下特点:

  • 仅学习正常数据的异常检测
  • 使用因果路径,系统事件序列
  • 仅学习溯源图上一部分因果路径

溯源图构建

表示提取 Representation Extraction

PROVDETECTOR 采用因果路径作为输入特征,具体因果路径示例如下:

causal graph

直接从溯源图中提取出全部路径将会导致依赖爆炸问题,因此采用基于稀有度的路径选择算法进行路径选取,选 tok K。

嵌入 Embedding

即使获取了 top K 路径之后还存在着各种问题:

  • 因果路径长度不同
  • 节点和边的标签是非结构化数据,例如文件名

Intuition:将因果路径作为一个句子。

使用 doc2vec 的 PV-DM 模型来学习路径的嵌入,这个方法有几个优点:

  • 自监督,可以仅学习好的数据
  • 能够保持相似性,原路径相似映射到向量空间中他们也是距离更近的
  • 能够考虑到词序

异常检测

对溯源数据进行观察得到以下观点:

  • 计算机程序和系统是复杂和动态的,很难用数学概率分布模型对程序行为进行建模
  • 相似的进程可能有着不同的工作流,在嵌入空间中很难用一条曲线来区分正常和异常的数据

基于溯源数据的特点,PROVDETECTOR 使用 局部异常因子 Local Outlier Factor 作为检测模型,该方法是一种基于密度的方法。如果一个点的局部密度低于其邻居,则该点被视为异常值。

最终决策(Final Decision Making):使用基于阈值的方法来做最终决定,这种方法可以在路径选择过程中提前停止,减少检测开销。