连年来Windows坏心软件数目继续增多, 主要原因是变体技巧的兴起与普及, 大多坏心软件都出现过新变体, 新变体接收多态引擎和代码羞耻技巧创建. 当前防病毒用具多接收基于签名的方法, 为每个变体创建签名费时劳苦, 况兼坏心软件变体不错躲闪基于签名的检测. 坏心软件相通性度量方法不错检测坏心软件变体, 同期通过相通样本聚类有助于发现高价值的家眷特征, 减少东谈主工标注量. 因此妹妹五月天, 若何准确度量Windows坏心软件相通性有试验应用价值.
跟着软件的继续发展, 软件间关系复杂且互相影响渐渐形成软件生态系统, 坏心软件也不例外, 将坏心软件生态系统建模为坏心软件关系鸠合不错灵验量度坏心软件间的相通性. 传统坏心软件相通性度量方法主若是对单个坏心软件的二进制代码进行抽象分析[1-11], 并莫得接头坏心软件间的关系且易受到代码羞耻技巧影响. 异质图技巧不错刻画不同坏心软件间的复杂关系, 一经用于坏心软件检测, 可是其在坏心软件相通性度量方面还莫得被系统计划. 本文将计划若何应用异质图技巧对坏心软件关系鸠合建模, 完满存效地坏心软件相通性度量, 搞定如下两方面问题.
(1) 传统异质图相通性度量方法主若是基于元旅途的方法, 基于元旅途的异质图相通性度量方法[12, 13]无法量度远距离结点的相通性况兼需要大批大家申饬界说元旅途, 邻近镶嵌方法ProxEmbed [14]关于这些问题提倡较好的搞定念念路. 可是坏心软件间的关系复杂, 两种类型结点之间可能存在多种关系(举例: 两个坏心软件写文献与这两个坏心软件删除文献具有不同的关系语义), 构建的异质图属于多重异质图[15], 邻近镶嵌方法莫得分裂不同类型的关系, 难以学习到坏心软件之间复杂的关系暗意.
(2) 为了幸免被杀毒软件查杀, 坏心软件演化过程中好多坏心软件会保抓相通功能但接收不同完满方式, 导致机器学习模子的性能随时刻着落, 该问题被称为模子老化问题[16]. 跟着坏心软件版块演进, 坏心软件使用不同API完满相通功能, 模子老化问题径直影响坏心软件相通性度量斥逐.
本文提倡基于多重异质图的坏心软件相通性度量方法RG-MHPE. 最初, 为了幸免代码羞耻技巧的影响, 从PE文献头中索求静态特征、从沙箱运行斥逐中索求动态特征后构建多重异质图, 对坏心软件关系鸠合建模; 然后, 提倡基于关系旅途的增强型邻近镶嵌方法并完满坏心软件相通性度量. 同期, 为了缓解模子老化, 从Microsoft developer network (MSDN)官方网站上爬取Windows API参考文档, 构建API关系图, 从中找出Windows API间的相通关系, 进一步教训坏心软件相通性度量斥逐.
本文主要孝敬如下.
(1) 应用异质图建模坏心软件间关系, 提倡基于多重异质图的坏心软件相通性度量方法RG-MHPE.
(2) 提倡基于关系旅途的增强型邻近镶嵌方法MHPE (multiple heterogeneous ProxEmbed), 搞定邻近镶嵌方法无法应用于多重异质图的问题.
(3) 应用MSDN官方文档构建API关系图并对API聚类, 灵验缓解MHPE方法老化问题, 进一步教训坏心软件相通性度量斥逐.
(4) 在企业提供数据集上实验, 考据所提模子相关于坏心软件相通性度量方法和异质图相通性度量方法, 具有更好斥逐.
2 联系责任本节从坏心软件相通性度量和异质图相通性度量两个方面张开先容.
2.1 坏心软件相通性度量坏心软件相通性度量主要包括基于结构化步履序列的模子、基于结构化步履图的模子和基于动态行动的模子.
(1)基于结构化步履序列
基于结构化步履序列的模子将二进制代码抽象为字节序列、字符串特征、反汇编后的操作码序列等. 文献[1]提倡的CARDINAL方法将每个函数调用参数的数目拼接在一王人, 输入Bloom过滤器, 构造的签名不错快速互比拟较得到相通性分数. 文献[2]提倡一种基于语义等价基本块最长寰宇子序列的笼统匹配方法, 该方法以基本块为元素, 应用最长寰宇子序列对两条旅途进行语义相通性建模. 文献[3]对齐全文献或单个基本块接收滑动窗口方法, 分别瞎想两个二进制文献之间或二进制文献中两个函数之间的相通性.
(2)基于结构化步履图
基于结构化步履图的模子将二进制代码抽象为图模子, 包括罢休流图、函数调用图等. 文献[4]为罢休进程图中每个基本块索求输入-输出对行为其功能(或标签), 然后实行图匹配方法. 文献[5]提倡一个罢休流图集相通搜索系统, 通过特征向量间的距离来量度坏心软件相通性. 文献[6]提倡的discovRE方法, 通过索求轻量级语法级别的特征进行预过滤, 提高搜索效力. 文献[7]提倡简化的辅导依赖图(reductive instruction dependency graph, RIDG), RIDG用图结构刻画辅导间的依赖关系, 并障碍刻画步履间相通性. 上述方法是基于图匹配的方法, 连年来又提倡基于图镶嵌的相通性度量方法. 文献[8]提倡一种跨平台二进制间隙搜索器Vulseeker, 通过构造秀气语义流图, 接收余弦距离度量两个二元函数的相通性. 文献[9]提倡Genius方法, 通过二部图匹配量化属性罢休流图的相通性. 文献[10]提倡Gemini方法, 使用图镶嵌方式将罢休流图更动为向量, 接收向量间余弦相通度量度坏心样本间的相通性. 文献[11]将坏心软件二进制文献暗意为图像, 同家眷的样本在图像中推崇相通.
(3)基于动态行动
基于动态行动的模子, 通过动态运作歹意样本获取行动特征, 进行相通性度量. 文献[17]关心API调用序列的动态分析, 使用LD算法量度API序列间的距离行为相通度分数, 完满坏心软件检测. 文献[18]实作歹意代码, 统计步履里面汇编辅导迁徙概率, 得到汇编辅导的全马尔科夫图, 然后使用图核函数度量两个辅导迁徙图的相通度. 文献[19]将坏心软件运行时系统调用序列构建为系统调用依赖图, 使用同类样本的系统调用依赖图构建组关系图(组关系图刻画了不同组系统调用之间的关系), 接收SaMe-NP算法量度未知样本和已知家眷之间的相通性. 文献[20]提倡抽象接头动态辅导基本块聚合的语义特征和罢休流图的结构特征的步履相通性分析方法, 从语义和结构两个维度对坏心步履相通性进行分析, 具有较高的准确度和可靠性. 文献[21]索求字符串名命特征、注册表变化特征、API函数调用序列特征行为坏心代码行动指纹, 通过指纹匹配算法瞎想不同坏心代码之间的相通性度量, 分析坏心软件是否是已知样本的变种.
2.2 异质图相通性度量异质图模子一经用在安卓坏心软件检测[22, 23]和Windows坏心软件检测[24, 25], 可是其在坏心软件相通性度量方面还莫得被系统的计划.
异质图一经被庸俗应用于相通性度量等数据挖掘问题[26]. 传统异质图相通性度量方法主要基于元旅途, 这类方法接头伙同两个结点的元旅途种类, 不同元旅途推崇出不同的语义信息. 文献[12]提倡PathSim方法, 量度同类结点间基于对称旅途的相通性, 文献[27]提倡有不竭的随即游走模子PCRW, 度量文献异质图中结点的相通性. 文献[13]提倡HeteSim方法, 量度自便元旅途下的相通性. 基于元旅途的相通性度量方法仅适用于量度两个相近结点间的相通性, 况兼元旅途的遴选需要大家申饬.
为搞定上述问题, 文献[28]将深度学习和强化学习结合, 自动发现结点之间体现相通性的旅途. 文献[29]提倡了HowSim方法, 通过引入衰减图的主张, 将SimRank膨大到异质图场景下, 它具有无元旅途的脾性, 并同期拿获结构和语义相通性. 文献[14]提倡邻近镶嵌的主张, 将结点间的旅途行为结点间的鸠合结构, 通过将旅途镶嵌成向量量度结点间相通性. 文献[30–32]以为结点之间的旅途仅仅线性序列, 关于复杂的鸠合结构其表征智商有限, 分别应用更复杂的结构(交互旅途[30]、有向无环图[31]、子图增强旅途[32])建模结点间的鸠合结构. 可是, 这些方法都莫得搞定邻近镶嵌无法应用于多重异质图的问题.
3 RG-MHPE方法基于多重异质图的坏心软件相通性度量方法(RG-MHPE)架构如图1所示, 包括异质图建模和相通性度量两部分. 本文最初将坏心软件关系鸠合建模成多重异质图, 然后在多重异质图中度量坏心软件间的相通性. 在异质图建模阶段, 索求坏心PE文献的动静态特征构建多重异质图, 为了防患坏心软件演进过程中使用不同API完满相通功能导致模子性能着落, 应用MSDN官方文档建模API关系图并对API聚类, 优化静态特征. 在相通性度量阶段, 为了搞定邻近镶嵌无法应用到多重异质图的问题, 提倡关系旅途的主张校正邻近镶嵌方法, 然后应用镶嵌向量瞎想两结点之间的相通度. 后续章节将分别先容异质图建模、相通性度量、API关系图建模及API聚类等.
图 1 RG-MHPE方法框架图 3.1 异质图建模本节先容若何从坏心软件中索求稳健的动静态特征并构建多重异质图.
3.1.1 异质图界说为了便捷异质图建模责任的先容, 最初给出异质图界说.
界说1. 异质图(heterogeneous graph). 一种包含多种类型实体(结点)和关系(边)的图, 记为G=(V, E), 其中V和E分别暗意实体和关系, 用A暗意实体类型聚合, R暗意关系类型聚合, 条目|A|>1概况|R|>1. 图G的鸠合模式(network schema)界说在实体类型A和关系类型R之上, 记为TG=(A, R).
图2(a)是异质图的一个实例, 图2(b)则是图2(a)的鸠合模式. 从鸠合模式不错看出该异质图包括4种类型的实体(PE文献、API、文献、域名)和3种类型的关系(PE文献调用某个API, PE文献探望某域名, PE文献写某文献).
图 2 PE文献探望行动异质图示例界说2. 多重异质图(multiplex heterogeneous graph). 在异质图G中, 至少存在两种类型的结点 $ {a_i}, {a_j} \in A $ , 它们之间的关系类型数目大于1, $ \left| {R\left( {{a_i}, {a_j}} \right) \in R} \right| > 1 $ .
图2(c)是多重异质图的一个实例, 两相邻结点之间有多种关系(PE文献和文献之间即有写的关系, 又有删除的关系), 图2(d)是图2(c)的鸠合模式, 相关于图2(b)的鸠合模式, PE文献和文献之间除了“写”关系, 还多了“删除”关系.
3.1.2 特征索求为了构造能抒发坏心软件之间复杂关系的异质图, 接收静态特征和动态特征相结合的方式进作歹意软件相通性度量.
(1)静态特征. 为了幸免代码羞耻对特征索求的影响, 本文从PE文献导入表中索求Windows API[24]调用列表, 应用第3.3节提到的API关系图从API中得到API簇行为特征.
(2)动态特征. 坏心软件动态行动不受代码羞耻的影响. 本文将坏心样本上传到VirusTotal ( https://www.virustotal.com/gui/), 从复返的沙箱申诉中索求文献步履、鸠合步履、注册表步履等行为动态特征. 其中, 文献步履包括PE文献对文献的读、写、删除、复制、出动、掀开, 鸠合步履包括PE文献探望某IP或肯求某域名, 注册表步履包括PE文献设立或删除注册表项.
3.1.3 多重异质图构建应用PE文献至极动静态特征构建的异质图中包括8种类型的实体和13种类型的关系, 其中两结点之间可能会有多种类型的关系, 构建的异质图属于多重异质图, 图3为构建多重异质图的鸠合模式.
图 3 多重异质图鸠合模式实体包括文献名、文献、目次、注册表项、IP、域名、PE文献、API簇. 关系包括:
(1) PE文献调用API簇.
(2) PE文献探望IP.
(3) PE文献肯求域名.
(4) PE文献读文献.
(5) PE文献写文献.
(6) PE文献出动文献.
(7) PE文献删除文献.
(8) PE文献掀开文献.
(9) PE文献复制文献.
(10) PE文献设立注册表项.
(11) PE文献删除注册表项.
(12) 文献属于目次.
(13) 文献名定名文献.
需要强调少量: 第3.3节API关系图建模及聚类过程一经包含API与DLL之间的关系, 是以图3中接收API簇行为结点; 可是, 后续实验的部分基准方法中异质图建模方法不接收API关系图建模及聚类, 则需要增多DLL结点以及API属于DLL的关系(详见第4.2.3节).
3.2 相通性度量本节先刻画支配镶嵌方法的局限性, 然后先容基于关系旅途的增强型邻近镶嵌方法.
3.2.1 支配镶嵌的局限性异质图相通性度量方法, 是通过构建异质图刻画坏心软件关系鸠合, 进作歹意软件相通性度量. 邻近镶嵌方法[14]具有不需要大家申饬、不错度量远距离结点相通性的优点, 在异质图相通性度量畛域取得一定的得手. 可是在坏心软件关系鸠合中, 两结点之间可能有多种类型的关系(图4中, PE1和PE3之间既有删除的关系, 又有掀开的关系), 这么的异质图属于多重异质图, 邻近镶嵌应用结点序列行为两个结点之间的旅途, 无法在多重异质图中度量结点间的相通性. 邻近镶嵌方法在对异质图旅途采样时, 得到PE1和PE3之间的两条旅途(如图4(a)所示). 这两条旅途在该方法中, 都将结点序列输入LSTM模子得到沟通的旅途镶嵌向量, 镶嵌斥逐忽略了结点间不同关系的语义各别.
图 4 邻近镶嵌与基于关系旅途的邻近镶嵌为了搞定该问题, 本文提倡关紧缚点的主张, 关紧缚点在接头结点本身的同期也接头了结点间的关系, 将相邻结点和它们之间的关紧缚合构建关紧缚点, 多个关紧缚点序列组成关系旅途, 如图4(b)所示. 针对图4中PE1和PE3之间不同的关系, 构建各自的关紧缚点序列(关系旅途)输入LSTM模子, 得到不同的旅途镶嵌向量, 表征不同的关系语义, 如图4(c).
3.2.2 联系界说界说3. 异质图中的旅途(path)是异质图中结点的序列, 秀气为 ${v_1} \to {v_2} \to \ldots \to {v_t}$ , 其中 $ {v_i} \in V $ , $ t $ 是旅途长度.
界说4. 异质图中的关紧缚点是将异质图中两相邻结点以及它们之间某类型的关紧缚合后形成的结点, 记作 $ n = \left( {{v_i}, e_{i妹妹五月天, j}^r, {v_j}} \right) $ , 其中 ${v_i}, {v_j} \in V, \; e_{i, j}^r \in {E_r}$ , $ {E_r} $ 包含统统类型为 $ r \in R $ .
界说5. 异质图中的关系旅途是异质图中关紧缚点的序列, 秀气为 ${n_1} \to {n_2} \to \ldots \to {n_t}$ , 其中 $ {n_i} \in N $ , $ N $ 为所关掂量结点的聚合, $ t $ 是关系旅途的长度.
3.2.3 基于关系旅途的增强型邻近镶嵌方法应用异质图刻画PE文献之间语义关系, 将坏心软件的相通性度量问题更动为异质图中结点相通性度量问题. 为了度量第3.1.3节多重异质图中结点之间的相通性, 提倡基于关系旅途的增强型邻近镶嵌方法MHPE (multiple heterogeneous ProxEmbed). 具躯壳式: 最初对多重异质图进行关系旅途采样, 生成关系旅途,婷婷成人 再应用深度学习序列模子(如: LSTM)得到两结点之间关系旅途的镶嵌向量, 然后交融不同关系旅途的镶嵌向量. 为了表述方法便捷, 先将图3简化为4类实体和4种关系, 得到如图5所示的基于关系旅途的增强型邻近镶嵌方法进程, 其中(1)暗意关系旅途采样, (2)暗意单条旅途镶嵌暗意, (3)暗意多旅途镶嵌交融.
图 5 基于关系旅途的增强型邻近镶嵌方法(1) 关系旅途采样
对多重异质图G进行关系旅途采样, 是从G中每个结点入手进行 $ \mathrm{\lambda } $ 次、长度为 $ \mathrm{\gamma } $ 的随即游走采样, 同期对结点序列及结点间不同类型的关系采样, 得到一组关系旅途 $ {P} $ .
关于要进行相通性度量的肯求结点 $ q $ 和标的结点 $ v $ , 从中 $ {P} $ 索求结点 $ q, v $ 之间的子关系旅途, 这些子关系旅途对应特定的关紧缚点序列. 将从结点 $ q $ 入手到结点 $ v $ 斥逐的子关系旅途聚合界说为 $ P(q, v) $ , 从结点 $ v $ 到结点 $ q $ 的子关系旅途聚合界说为 $ P(v, q) $ , 取 $ Q\left( {q, v} \right) = P\left( {q, v} \right) \cup P(v, q) $ 行为两结点之间的关系旅途聚合.
(2) 单条旅途镶嵌暗意
对结点之间的关系旅途 $ s \in Q\left( {q, v} \right) $ 进行镶嵌暗意, 先将关系旅途 $ s $ 中的关紧缚点 $\left\{ {{n_i}:i = 1, \ldots, t} \right\}$ 序列输入单层LSTM, 再应用最大池化层结合各时刻段的输出, 得到旅途s的镶嵌暗意:
$ {h_s} = maxPooling(\{ {a_i}:i = 1, \ldots, t\} ) $ (1)其中, $ {a}_{i} $ 为LSTM在时刻 $ i $ 的输出, 是一个 ${d}$ 维向量.
关系旅途中的每个关紧缚点 $ {n}_{i} $ 包含两个相邻结点 $ {v_i}, {v_j} $ 和对应关系 $ e_{i, j}^r $ , 每个关紧缚点的特征是两个相邻结点特征和对应关系特征的拼接, 结点 $ {v_i} $ 包含4类特征: 1)结点类型: 接收k维one-hot编码, k是结点类型的数目|A|. 2)结点的度: 这是一个标量. 3)结点邻居的散播: 是一个k维向量. 该向量每个维度记载结点 $ {v_i} $ 特定类型邻居的数目, 并对这维向量取对数(对每个维度加1, 幸免某类邻居数目为0时无法取对数). 4)邻居类型熵: 由邻居类型散播瞎想得到的标量. 关于关系 $ e_{i, j}^r $ , 遴选关系的类型进行m维one-hot编码行为其特征, m是关系类型的数目|R|.
(3) 多旅途镶嵌交融
为了交融结点 $ q, v $ 之间不同关系旅途的语义, 本文通过最大池化层将 $ Q\left(q, v\right) $ 中所关掂量旅途的镶嵌暗意 $ {h}_{s} $ 交融, 生玉成体镶嵌向量 $ f\left(q, v\right) $ , 公式如下:
$ f\left( {q, v} \right) = maxPooling(\{ {h_s} \cdot {{\rm{e}}^{ - \alpha |s|}}:s \in Q\left( {q, v} \right)\} ) $ (2)为了让更短旅途有更大权重, 在使用池化层时加入超参数 $ \alpha $ , $ \alpha $ 越大长旅途的权重越低.
算法1. MHPE.
输入: 异质图 $ G $ , 历练元组 $ D $ , 每个结点随即游走次数 $ \lambda $ , 随即游走长度 $ \gamma $ , 镶嵌维度 $ d $ , 超参数 $ \alpha , \beta , \mu $ ;
输出: 模子参数 $ \Theta $ .
1. 开动化关系旅途聚合 $ P = \phi $
2. $ {\text{for}} $ $ {\text{all}} $ $ v \in V $ ${\text do}$
3. ${{\text{for}}}$ $ i = 0:\lambda $ $ {\text{do}} $
4. $P \leftarrow P \cup {\mathit{SampleRelationPath}}(G, v, \gamma )$
5. $ {\text{end}} $ $ {\text{for}} $
6. $ {\text{end}} $ $ {\text{for}} $
7. $ B \leftarrow GenerateBatches(D) $
8. $ {\text{for}} $ $ {\text{all}} $ $ {\text{batch}} $ $ b \in B $ ${\rm{do}}$
9. ${\text{Initialize loss for batch }b \; {\rm{as}}}$ $ {L_b} = 0 $
10. $ {\text{for}} $ $ {\text{all}} $ $ q, u, v \in b $ ${{\rm{do}}}$
11. $ Q(q, v) = P(q, v) \cup P(v, q) $
12. $ Q(q, u) = P(q, u) \cup P(u, q) $
13. ${\rm{Compute}}$ $ f(q, v) $ $ {\text{with}} $ $ Q(q, v), d, \alpha $ $ {\text{by Eq}}{\text{.2}} $
14. ${\rm{Compute}}$ $ f(q, u) $ $ {\text{with}} $ $ Q(q, u), d, \alpha $ $ {\text{by Eq}}{\text{.2}} $
15. $ {L_b} = {L_b} + l(\pi (q, v), \pi (q, u)) $ ${\text{, according to Eq}}{\text{.4}}$
16. $ {\text{end}} $ $ {\text{for}} $
17. $ {L_b} = {L_b} + \mu \Omega (\Theta ) $
18. $ {\text{update}} $ $ \Theta $ $ {\text{based on}} $ $ {L_b} $ $ {\text{by gradient descent}} $
19. $ {\text{end}} $ $ {\text{for}} $
20. $ {\text{return}} $ $ \Theta $
3.2.4 相通度瞎想及模子历练$ q, v $ 结点间的相通度 $ \pi \left( {q, v} \right) $ 是由前述邻近镶嵌向量 $ f\left( {q, v} \right) $ 和一个 $ d $ 维参数向量 $ \theta $ 相乘得到:
$ \pi \left( {q, v} \right) = {\theta ^{\rm{T}}}f\left( {q, v} \right) $ (3)为了历练前述相通性度量模子, 从坏心软件关系鸠合对应的异质图G中遴选历练元组聚合 $D = \{ ( {q_i}, {v_i}, {u_i} ):i = 1, \ldots, m \}$ , 其中 $ {v_i} $ 比拟于 $ {u_i} $ 与 $ {q_i} $ 更相通, 即最大化 $ \pi \left( {{q_i}, {v_i}} \right) $ 和 $ \pi \left( {{q_i}, {u_i}} \right) $ 之间的各别, 使用一个排行亏空函数:
$ l\left( {\pi \left( {{q_i}, {v_i}} \right), \pi \left( {{q_i}, {u_i}} \right)} \right) = - \log {\sigma _\beta }(\pi \left( {{q_i}.{v_i}} \right) - \pi \left( {{q_i}, {u_i}} \right)) $ (4)其中, ${\sigma _\beta }\left( x \right) = \dfrac{1}{{1 + {{\rm{e}}^{ - \beta x}}}}$ 为超参数.
关于历练元组聚合D, 最终的亏空函数为:
$ L(\Theta ) = \sum\nolimits_{i = 1}^m {l\left( {\pi \left( {{q_i}, {v_i}} \right) - \pi \left( {{q_i}, {u_i}} \right)} \right)} + \mu \Omega \left( \Theta \right) $ (5)其中, $ \Theta $ 是该模子历练中统统参数, 包括参数向量 $ \theta $ 和LSTM的参数, $ \Omega ( \cdot ) $ 是正则化项, 这里使用L2正则化, $\; \mu $ 是正则化的超参数.
历练过程的标的是使公式(5)最小化, 如算法1所示. 其中, 在第2–6行是关系旅途采样, 第7行是将历练集分batch历练.
3.3 API关系图建模及API聚类跟着坏心软件版块演进, 坏心软件使用不同API完满相通功能, 包括使用不同版块的API, API编码方式不同等(举例: 坏心软件家眷gandcrab的样本在加载DLL文献时, 部分样本使用LoadLibraryW 函数, 部分样本使用LoadLibraryA函数, 两个函数功能沟通, 接收的编码方式不同). 为了防患坏心软件演进过程中使用不同API完满相通功能导致模子性能着落(模子老化), 接收API关系图建模及聚类方法. 最初提倡API关系图界说, 并从MSDN官方文档中索求信息构建API关系图, 然后进行API镶嵌暗意及API聚类. API关系图构建及API聚类进程如图6所示.
图 6 API关系图构建及API聚类进程 3.3.1 API关系图界说界说6. API关系图是一个有向图, 暗意为G=<E, R>, 其中E是统统结点(又称实体)的聚合, R是结点间统统边(又称关系)的聚合, API关系图包含多种类型的实体和关系.
实体类型: 在本文构建的API关系图中, 有4种类型实体, 分别是: API (API函数)、DLL (动态汇聚库)、头文献、结构体.
关系类型: 本文界说了5种类型的关系, 如表1所示, 其中包含API的多种刻画信息, 这5种关系不错归纳为3类.
表 1 API关系图中的关系(1)组织类关系: 刻画不同类型实体间的组织结构. 举例, define_in刻画API概况结构体在头文献中界说, implements_in刻画API在DLL中被调用.
(2) 原型类关系: 刻画API函数的原型(或声明). 举例, uses_parameter刻画API使用某种结构体类型行为参数, returns刻画API复返值的类型为结构体.
(3)参考类关系: 刻画两个实体之间的参考关系. 举例, see also暗意一个API参考另一个API的刻画.
3.3.2 API关系图构建API关系图构建过程包括API文档鸠合、实体索求、关系索求3个阶段.
(1) API文档鸠合
从MSDN下载微软对Windows API的刻画性文档. Windows API 按照层级刻画: 从表层的头文献, 到其中界说的函数和结构体. 每个API和结构体在一个HTML文献中刻画, 包括组织结构、联系参考、函数原型等信息. 每个文档包含结构化文本和非结构化文本, 结构化文本包含组织样式、联系参考、函数原型的马虎信息. 非结构化文本刻画了函数的功能、条目等信息以及函数原型的详备信息.
(2) 实体索求
API和结构体文档中刻画了API需要的动态汇聚库和被界说的头文献, 不错从该文档等分别索求API、结构体, DLL和头文献等实体.
(3) 关系索求
1)从结构化文本中索求关系: 这类关系不错径直通过剖释HTML文档得到, 在索务实体过程中, 同期索求define_in、implements_in、see also等关系.
av天堂2)从非结构化文本中索求关系: API的参数和复返值等信息在非结构化文本中索求, 通过对参数的刻画性翰墨进行字符串匹配, 找到API和结构体间的uses_parameter和returns关系.
3.3.3 API聚类API聚类包括API镶嵌和聚类两个阶段, API镶嵌是将API关系图中的API更动为暗意其语义的向量, 使用TransE模子[33]完满关系图中的API镶嵌, 再应用K-means算法完满API镶嵌向量聚类, 得到API簇.
4 实验分析本节使用企业提供数据集进行相通性度量实验, 从4个方面进行模子对比.
4.1 数据集及实验设立为了考据模子的相通性度量性能, 先从团结企业得到15689个样本申诉, 筛去加壳、抗沙箱、良性样本的申诉, 得到747个坏心软件( https://github.com/ASUIDH/MHPE/), 时刻跨度为2012–2019年. 该申诉为JSON格局, 包括PE头和坏心软件沙箱行动等信息, 是将坏心软件上传到VirusTotal得到. VirusTotal集成多种防病毒居品和文献分析用具, 包括PEiD (PE Identifier)、pefile、Cuckoo Sandbox等, 不错灵验分析坏心软件加壳信息、PE头信息和沙箱行动.
经统计, 本文使用的VirusTotal申诉包含72个杀毒引擎的秀气斥逐, 左证近况调研, 大部分论文华取1–5的整数值行为分裂样本是否为坏心的阈值, 即大于就是阈值个数的杀毒引擎秀气某样本为坏心, 本文将该样本秀气为坏心. 本文目标是进作歹意软件相通性度量, 为了裁减样本标签噪声的影响, 本文将大于就是5个杀毒引擎秀气为坏心的样本, 打上坏心标签; 少于5个杀毒引擎秀气为坏心的样本以为是良性的, 不参与分析. 坏心软件家眷秀气通过AVclass[34]得到, AVclass是一个应用VirusTotal上不同防病毒居品对坏心软件进大师眷秀气的开源用具. 上述747个坏心样本通过AVclass得到了78个家眷, 通过家眷信息得到坏心软件相通性关系, 即沟通家眷的样本相通度秀气为相通, 不同家眷的样本相通度秀气为不相通.
为了考据模子的抗老化智商, 增多时刻跨度为2020年第2季度至2021年第2季度的坏心样本. 为了保证每个时刻段某个家眷样本不外少, 同期参与构建异质图样本的动态行动不外少, 因此对统统样本再行筛选, 得到2019年及之前的样本709个和2019年之后的样本1581个, 共2290个坏心软件.
4.2 对比喻法及预处理 4.2.1 基准方法将所提RG-MHPE和MHPE方法与基于罢休流图的坏心软件相通性度量方法[10]、基于邻近镶嵌方法[14]以至极他相通性度量方法进行对比.
Gemini[10]最初索求坏心代码罢休流图, 并将其操作码特征行为罢休流图中基本块属性, 通过图神经鸠合为罢休流图中的每个基本块学习镶嵌向量, 然后将统统基本块的镶嵌向量加权乞降得到最终镶嵌向量, 终末应用余弦距离瞎想相通度, 应用排行亏空进行优化.
DWR[14]通过Deepwalk[35]为每个结点学得属性向量, 然后将两结点之间的哈达玛积行为相通性镶嵌, 应用排行亏空进行优化.
MPP[12]应用元旅途行为特征, 提倡PathSim方法瞎想两个结点的相通性分数, 然后设立权重参数对统统旅途的相通性分数加权乞降, 应用排行亏空进行优化. 其中, 元旅途的生成方法参考文献[36].
HowSim[29]最初陈设两个结点之间的旅途, 并左证已知的实在斥逐优化衰减图参数, 然后应用衰减图迭代优化相通性矩阵, 得到自便两结点之间的相通性.
ProxEmbed[14]使用两个结点间的旅途镶嵌向量进行相通性度量, 该方法莫得接头不同类型的关系.
MHPE接头不同类型的关系, 对邻近镶嵌方法ProxEmbed进行校正. 可是该方法仅接收单个API行为特征, 并莫得应用API关系图对API进行聚类.
4.2.2 超参数设立各方法的超参数设立如下.
Gemini方法: 镶嵌维度为32, 镶嵌深度为2层, 基本块属性遴选Block+O, 其中包括6个块级属性和后代的数目, 共7个属性(基本块属性在Gemini是一个有3种遴选的超参数).
DWR方法: 镶嵌维度d为32, 旅途采样为从每个结点采样次数γ为20次, 采样长度t为80的旅途采样, 窗口大小w为5.
HowSim方法: 最正道路陈设长度L为3, 误差畛域 $ \epsilon $ 为0.01, 默许衰减图设立为 $c\left(r\right)=0.2, \; r\in R$ , 历练样本对|Λ|为1000 (即应用实验设立中的历练样本进行衰减图优化)
ProEmbed方法: 镶嵌维度d为128, 每个结点采样次数λ为20, 旅途采样长度γ为80, α为0.5, β为1, μ为0.0001.
MHPE方法: 镶嵌维度d为128, 每个结点采样次数λ为20, 旅途采样长度γ为80, α为0.5, β为1, μ为0.0003.
RG-MHPE方法: 与MHPE方法沟通.
4.2.3 数据预处理Gemini方法: 通过Python的二进制分析框架angr ( https://github.com/angr/angr)生成坏心样本的罢休流图和基本块的汇编代码.
DWR、MPP、ProxEmbed、MHPE等方法: 按照第3.1.2节操作, 从747个坏心PE软件的JSON申诉中得到样本的动静态特征, 构建异质图. 该异质图中不使用API簇行为结点, 而使用API行为结点, 同期增多DLL结点以及API属于DLL的关系.
RG-MHPE、HowSim方法: 应用API参考文档构建API关系图, 左证肘部法例[37]对API聚类形成500个API簇, 按照第3.1.2节操作, 从747个坏心PE软件JSON申诉中得到样本的动静态特征, 构建异质图, 构建的异质图包括39756个结点和199330条边.
4.3 评价目标实验使用评价目标包括:
(1)归一化折损累计增益(normalized discounted cumulative gain, NDCG):
$ NDCG = \frac{{DCG}}{{iDCG}} $ (6)其中, $ DCG = \displaystyle\sum\nolimits_{i = 1}^k {\dfrac{{re{l_i}}}{{{{\log }_2}\left( {i + 1} \right)}}} $ , $ DCG $ 接头针对某样本的相通性排行中每个样本的相通性和排行位置的影响. $re{l_i}$ 暗意第 $ i $ 个斥逐的相通性, $ {\log _2}\left( {i + 1} \right) $ 暗意第 $ i $ 个斥逐的位置对排行斥逐变成的影响, 相通性大的斥逐在排序列表中排行靠前则排行斥逐好, 相通性大的斥逐排行靠后则排行斥逐差. $ iDCG $ 为联想现象下排行的 $ DCG $ , 斥逐按摄影似性从大到小的规定排序瞎想 $ DCG $ .
(2) 平均精度均值(mean average precision, MAP):
$ MAP = \frac{1}{m}\sum\nolimits_{i = 1}^m {A{P_i}} $ (7)其中, MAP为统统样本相通性排行AP的均值, $ A{P_i} = \dfrac{1}{{{N_i}}} \cdot \displaystyle\sum\nolimits_{r = 1}^{{N_i}} {\frac{r}{{p\left( r \right)}}} $ , 其中 $ i $ 暗意第 $ i $ 个样本, $ m $ 为总样本数, $ {N_i} $ 为第 $ i $ 个样本具有相通样本的总和, $ P\left( r \right) $ 暗意斥逐列表从前去后看, 第 $ r $ 个相通斥逐在列表中的位置.
(3) Jaccard悉数:
$ J\left( {A, B} \right) = \frac{{A \cap B}}{{A \cup B}} $ (8)Jaccard悉数不错用来量度两个聚合 $ A, B $ 的相通性, 界说为 $ A $ 与 $ B $ 错乱的大小和 $ A $ 与 $ B $ 并集大小的比值.
(4)函数随时刻变化弧线底下积(area under time, AUT)[38]:
$ AUT\left( {f, N} \right) = \frac{1}{{N - 1}}\sum\nolimits_k^{N - 1} {\frac{{|f({x_{k + 1}}) + f\left( {{x_k}} \right)|}}{2} \cdot (1/N)} $ (9)其中, AUT代表相通性度量函数随时刻变化弧线下的面积, 用于比较时刻衰减情况下不同度量函数的性能. 其中 $ f({x_k}) $ 为度量函数 $ f $ 在点 $ {x_k} $ 时的目标, 度量函数 $ f $ 在本文中为NDCG和MAP, $ {x_k} $ 是第k个时刻窗口在图中的横坐标, N为测试时刻窗口的数目.
4.4 对比实验本节设立4组实验进行模子对比, 包括模子相通性度量性能实验(第4.4.1节), 模子抗老化智商实验(第4.4.2节)、API特征踏实性实验(第4.4.3节)和超参数影响实验(第4.4.4节).
4.4.1 模子相通性度量性能实验该实验参考文献[14]中的实验设立, 将统统PE文献结点分为两类, 有同类家眷样本的结点为肯求结点, 莫得同家眷样本的结点为非肯求结点, 将肯求结点中20%行为历练肯求结点, 80%行为测试肯求结点. 在历练阶段, 关于每个历练肯求结点 $ {q_i} $ , 随即中式一个相通节点 $ {v_i} $ 和一个不相通结点 $ {u_i} $ 组成历练元组 $ \left( {{q_i}, {v_i}, {u_i}} \right) $ , 共遴选1000个元组行为历练集. 在测试阶段, 关于每个测试肯求结点, 构建了一个实在排行, 该排行是左证其家眷秀气构建的, 即同家眷的样本间相通性排行高于不同家眷样本. 针对每个测试肯求结点, 测度历练肯求结点外的统统结点相通性排行, 并与实在排行比较, 瞎想排行前10结点的NDCG和MAP来评估方法性能. 为了裁减随即性, 类似3次实验斥逐取平均值.
实验斥逐如表2所示, 斥逐标明本文所提方法的相通性度量斥逐最好. RG-MHPE和 MHPE相通性度量斥逐好于罢休流图方法Gemini, 讲明基于多重异质图的相通性度量方法在坏心软件畛域行之灵验. RG-MHPE、MHPE和ProxEmbed的相通性度量斥逐好于DWR, 再次讲明邻近镶嵌方法比单纯的结点镶嵌斥逐好. RG-MHPE、MHPE相通性度量斥逐好于MPP, 讲明基于多重异质图邻近镶嵌的方法好于基于元旅途的方法. RG-MHPE和MHPE相通性度量斥逐好于HowSim, 讲明了多重异质图邻近镶嵌的方法在多重异质图场景下能更灵验拿获图结构信息, 进行结点相通性度量. RG-MHPE和MHPE相通性度量斥逐好于ProxEmbed, 讲明在复杂的坏心软件关系鸠合中, 将坏心软件关系鸠合建模为多重异质图, 分裂不同类型的关系, 成心于教训相通性度量斥逐的准确性. RG-MHPE相通性度量斥逐好于MHPE, 讲明应用API关系图并对API聚类, 成心于对功能相通但完满方式不同的坏心样本进行相通性度量.
表 2 不同方法的相通性度量斥逐对比此外, 从表2看出使用罢休流图进行相通性度量的Gemini斥逐好于DWR、MPP、HowSim、ProxEmbed, 证实静态特征粒度更细、语义更丰富的罢休流图, 在坏心软件检测畛域实用斥逐较好. 本文为了幸免代码羞耻的影响, 莫得使用罢休流图, 只接收从PE文献头中导入表索求的导入API行为静态特征, 静态语义不够丰富, 导致表征学习智商相对有限的上述4个模子斥逐差于Gemini, 而本文所提方法有更出色的表征学习智商, 相通性度量斥逐好于Gemini.
本文所提方法针对大部分家眷样本相通性度量斥逐较好, 可是在少部分家眷样本相通性度量上相关于部分其他度量方法斥逐莫得较着教训. 举例: (1) sivis家眷的部分样本会推崇出特地强的特异性, 它们会读写大批的文献, 且这些文献基本都莫得其他家眷的样本进行读写操作. 在这种场景下, 仅依靠PathSim这类基于元旅途进行统计的方法, 就能得到精湛的相通性度量斥逐, 使用咱们的方法进行表征学习斥逐并莫得教训. (2) parite家眷和agentb家眷的样本在某些动态行动方面推崇很相通, 举例文献读写、鸠合行动. 导致咱们的方法会得到这两个家眷较高的相通性度量斥逐, 无法对这两个家眷样本进行分裂.
4.4.2 模子抗老化智商实验为了考据API关系图建模及API聚类在模子抗老化方面的智商, 本实验使用第4.1节提到的2290个样本. 将这2290个样本按时间分为10组, 2019年之前的样本为1组, 2019–2021年的样本按季度分为9组(2020年第1季度莫得样本数据), 其中2019年之前有535个样本, 2019年及2019年之后共有1755个样本. 然后, 对比API关系图建模使用前后的相通性度量斥逐的变化趋势. 实验使用2019年之前的80%样本进行历练, 2019年之前剩余的20%样本和2019年至2021年9个季度的样分内别进行测试.
实验斥逐如图7所示, 相通性度量模子在未使用API簇时老化速率相对较着, 加入API关系图对API聚类后, 模子老化速率得到缓解, 讲明应用API关系图对API进行聚类后, 模子抗老化智商好于未对API进行聚类. 其中, 2019年第1季度实验斥逐较差, 因为2019年第1季度大多数样本为MyWebSearch样本, 这些样本在2019年之前并未出现. 跟着2019年其他季度MyWebSearch比例渐渐减少, 相通性度量目标回升. 从2020年第2季度入手, 模子全体又处于着落趋势, RG-MHPE比MHPE相对踏实. 由于短缺2020年第1季度的样本数据, 因此MAP和NDCG相通性度量的AUT目标各分红两个时刻段分别瞎想, 最终模子的AUT目标是两个时刻段AUT数值的和. AUT对比斥逐如表3所示, RG-MHPE的抗老化智商好于MHPE.
图 7 应用API关系图对API聚类前后, 模子老化速率对比 表 3 应用API关系图对API聚类前后, AUT目标对比 4.4.3 API特征踏实性实验本实验是考据API关系图建模及API聚类对API特征随时刻变化踏实性的影响.
最初左证团结家眷坏心软件出现的时刻规定对其进行排序, 分为5组. 保证前边组的坏心软件出当前刻要严格先于背面组, 咱们称最早一组坏心软件为组0, 然后使用Jaccard悉数瞎想组0的坏心软件和其他组坏心软件(组1–组4)之间的API踏实性分数.
图8展示了3个坏心软件家眷对API特征踏实性的完满斥逐. 图8(a)和图8(b)的斥逐标明, API簇的踏实性要好于单独的API, 其踏实性分数在0.5之上, 可是单独API的踏实性分数可能会着落到0.3以下. 图8(c)的斥逐标明, API簇的踏实性随时刻着落速率慢于单独的API. 在坏心软件演化过程中, 接收API关系图建模不错灵验教训API特征的踏实性.
图 8 应用API关系图对API聚类前后, 不同家眷API的Jaccard悉数 4.4.4 超参数影响本实验考据超参数对模子斥逐的影响, 调动模子的超参数α, β, d, 不雅察相通性度量斥逐的变化.
实验斥逐如图9所示, 旅途长度削减参数α∈[0.1, 1]时模子推崇最好, 如果α太大, 模子学习斥逐将变得很差. 亏空函数削减参数β=1时模子推崇最好, 标明相通性度量模子的亏空函数不需要进行太多或太少的削减. 镶嵌维度d=32时模子推崇最好, 这么的镶嵌维度既能保证模子学到坏心软件之间的相通关系, 又不会产生过拟合.
图 9 RG-MHPE下不同超参数取值(α, β, d)对相通度的影响 5 结 论本文将异质图邻近镶嵌方法用于坏心软件相通性度量, 同期左证坏心软件关系鸠合复杂的特质, 提倡多重异质图的邻近镶嵌方法教训原始邻近镶嵌方法的性能. 此外, 为了教训相通性度量模子的抗老化智商, 应用MSDN官方文档构建API关系图并对API聚类, 优化API特征. 实验斥逐标明: 比拟现存方法, 本文所提模子RG-MHPE在相通性度量性能和模子抗老化智商等方面推崇更好. 后续责任将从以下3个方面开展.
(1)本文使用坏心软件动静态特征构建坏心软件关系鸠合, 所用动态特征是从VirusTotal APIv2版块 ( https://developers.virustotal.com/v2.0/reference#file-behaviour)的沙箱申诉中索求的, 该申诉是用cuckoo sandbox实作歹意样本的斥逐. 可是动态分析会受样本运行时刻和环境的影响, 带来旅途粉饰和动态特征弗成十足推崇等问题[39]. 为了减少上述问题对模子性能及适用范围的影响, 后续责任中一方面会尝试遴选VirusTotal其他版块API, 得到更多版块的沙箱申诉, 另一方面是对开源沙箱进行优化或自研发沙箱, 同期可接收较好的脱壳用具增多可用样本量.
(2)本文应用MSDN官方文档构建API关系图并对API进行聚类, 增强模子的抗老化智商. 可是, Windows API发生过屡次版块演进, 本文并未接头统统版块的API (如: 仅接头C说话的Win32 API并索求其中的关系, 没接头C++和.NET说话的API). 同期, 本文仅在API参考文档中索求了5种基本关系, 其他关系对模子的影响有待进一步计划.
(3)基于关系旅途的增强型邻近镶嵌方法对未知坏心软件家眷样本相通性度量推崇不睬想妹妹五月天, 此外, 模子在历练过程中是随即遴选1000个历练元组, 当数据量增大、坏心软件家眷种类增多时, 历练元组的随即遴选可能导致斥逐不太踏实. 因此, 如安在不增多复杂度的基础上教训模子的踏实性, 有待进一步计划.