Heterogeneous Graph Matching Networks for Unknown Malware Detection论文阅读笔记

写博以供备份。

Heterogeneous Graph Matching Networks for Unknown Malware Detection (用于未知恶意软件检测的异构图匹配网络)

传统方法:基于签名的检测和基于行为检测

  • 基于签名的检测:只能检测已有的恶意软件,对每种恶意软件产生一个签名特征标记来产生恶意软件库
  • 基于行为的检测:依赖训练样本

检测未知恶意软件的四个主要挑战:

  • 系统实体间的非线性和分层异构关系,即需要我们考虑程序执行中各个操作之间的语义关联
  • 两个程序间缺乏距离/相似性度量,这个在本文中解决
  • 大量的数据空间使信息系统需要处理大量数据
  • 程序的别名,使保留程序 ID 白名单这种方法不可靠

本文:

提出一种有效的数据驱动方法 (这里的数据指一个时间窗口内目标程序对应过程事件的数据,即一个程序打开了一个文件或连接到一个服务器等等)

提出 MatchGNet,能够基于程序执行行为的不变图模型同时学习图表示和相似度

将恶意软件定义为执行环境未知的、与所有现有的正常软件有区别的软件

首先提出一个不变的图模型 (invariant graph modeling),来捕捉不同对系统实体间的异构关联/依赖关系

提出分层注意力图神经 encoder 来学习程序表示

提出基于 Siamese Network 的相似性学习,训练参数并得出未知软件和一个一直良性软件之间的相似性评分

注意,MatchGNet 只训练现有的良性软件,在与未知软件比较之后相似性评分低于一定阀值的都归为恶意软件

具体方法:

1.IGM 不变图建模

将系统事件数据构建为一个包含不同实体异构图,能够捕获程序的行为

不变图:能够发现成对实体之间稳定的显著的依赖,能够用来分析系统状态然后进行推理

每个软件都可以对应一个异构图 G

异构图包含了3个不同的实体:process 进程 (P),files 文件 (F),internet sockets internet 套接字 (I)

包含了3种依赖 (关系):一个进程访问一个文件,一个进程派生另一个进程,一个进程连接到一个 internet 套接字,分别为 P → F, P → P, P → I

定义异构图 G = (V, E), V 为类型集合 V = P ∪ F ∪ I, E 为边的集合, E = (vs, vd, r) (vs: source entity, vd: destination entity, r: relation),每个图都对应一个邻接矩阵 A。

2.HAGNE 分层注意力图神经编码器 (本文重点)

通过考虑到节点级别,层级别和路径级别的上下文重要性,使用注意力架构来学习程序的表示,即 graph embedding

1.基于异构的上下文搜索 B1

基于元路径的查找路径相关的邻居集

提出一种基于元路径的上下文搜索,定义一个元路径集:

一个节点 v 的路径相关的邻居集为:

其中,u 为 v 在元路径 Mi 上可到达的邻居节点

2.节点级别的注意力神经聚合器 B2

通过基于随机游走得分选择性地聚合每个与路径相关的邻居集中的实体,来生成 node embedding

基于上面所得到的邻居集进行节点聚合,但不同的邻居节点可能有不同的影响,所以要给不同邻居节点赋合适的权重

整个过程基于重启随机游走算法 (RWR)完成,重启随机游走算法能够很好的计算同质图中成对的节点之间的关联分数

在本文中便将 RWR 扩展到了异构图领域,即在每一步中,只会移动到邻居集上的节点,而不是所有连接着的节点

在随机游走完成后,每个被访问的邻居节点都会有一个 visiting count,通过 L1 归一化 visiting count 作为节点级别的权重

公式化表示如下,对于节点 v 的邻域

权重为:

其中,(a^i_ {(v)(j)})(u^i_ {j}) 的权重

通过聚合函数 AGGnode 来获得对应的第 k 层的程序表示,其中 k = 1, 2, ...,K,

其中,(h^{(i)(k)}_ {v}) 为程序 v 在元路径 Mi 上在第 k 层的特征向量, ∈(k) 为先前层表示与聚合后的上下文表示之间的权重,(h^{(i)(0)}_ {u}) 初始化为 Xv

在得到聚合化的表示后,使用 MLP 将其转化为 hidden linear space。

3.层级别的密集连接的神经聚合器 B3

将不同层生成的 node embedding 聚合为一个密集连接的 node embedding

从 ResNet 和 DenseNet 中受到启发,提出一种 skip-connection 方法

使用 B2 所有的中间表示,对所有的中间表示都提取出一个子图结构,并用 MLP 以级联的方式聚合起来,其中最终结果的表示能够自适应的选择不同的子图结构

聚合器 AGGlayer() 为如下,其中 [·; ·] 为级联操作

4.路径级别的注意力神经聚合器 B4

计算每条元路径的权重并且基于之前的结果计算 graph embedding

在之前的过程中,基于不同元路径的不同的 embeddings 都已经产生了,接下来就要为每条元路径赋于不同的权重

对于任意元路径 Mi 对应的embedding (h^{(i)(K+1)}_ {v}),其权重 βi

其中,(h^{(j)(K+1)}_ {v}) 为其他元路径 Mj 的 embedding,b 为一个可训练的注意力向量,Wb 为可训练的权重矩阵,可以将输入特征映射到 hidden space,|| 表示级联操作,σ 为非线性门函数

使用前馈神经网络计算一条元路径相关的邻居集与其他元路径相关的邻居集之间的关联性,并用 softmax 进行归一化处理,最终基于所有元路径的联合表示为 hG :

其中,ATT() 为上述 βi

3.SL 相似性学习

基于 Siamese Network,在本文中,Siamese Network 由两个 HAGNE 组成,这两个 HAGNE 分别学习对应的程序的图表示,最后输出相似度

每一个 HAGNE 都以程序的图 snapshot (即一定时刻的静态表示) 作为输入,对应的图表示 hG 作为输出

对于 P 对的程序图快照

有对应的配对的 ground truth 信息 yi,如果两个快照来自同一个软件,则 yi = +1,否则 yi = -1

对于每对快照,都用 cos 值来计算两个程序 embeddings 之间的相似性,结果为:

对应的,目标函数为:

通过 Adam 优化器优化目标函数,得到合适的参数

当使用 SL 进行未知恶意软件检测时,则将两个输入分别为:一个为已知的良性程序,一个为未知程序

对于未知程序,首先构造对应程序的不变图 IGM,然后送入 HAGNE 的到对应的程序 embedding,最后通过 SL 计算相似度

如果一个未知软件有多个快照产生的 embedding,仅报告最高的得分,如果所有的现有程序的最高相似度低于阀值,则触发警报,否则选取前 k 个程序

原文地址:https://www.cnblogs.com/sjtuguyang/p/14005335.html