当前位置:首页 期刊杂志

SimMal:基于异构图学习的恶意软件关联分析系统

时间:2024-07-28

章瑞康,周 娟,袁 军,李文瑾,顾杜娟

(绿盟科技集团股份有限公司,北京100089)

0 引言

随着网络环境日趋复杂,越来越多的恶意软件混合使用不同的技术,已经发展成为影响网络安全极为常见和严重的威胁之一。如恶意软件“Stuxnet ”因为能够对工业基础设施造成巨大破坏引起了黑客的广泛关注,与此同时也有相当数量的“Stuxnet ”被发现通过使用不同的技术来持续性攻击特定类型的网络和基础设施[1];根据绿盟科技发布的网络安全观察报告,以“GandCrab ” 勒索软件家族为例,其背后组织在一年半时间内非法获取20 亿美元,攻击者通过暗网对“GandCrab ” 勒索软件僵尸网络进行管理面板,从而保持长时间匿名,并使用多种方式传播,包括漏洞利用工具包、钓鱼邮件、木马程序。如今有许多恶意软件使用多种攻击技术和载体,具有高隐蔽性、持久化和规避传统防御的特性[2]。

恶意软件的复杂程度越高,对安全分析人员所需要的技术和知识水平要求就越高,恶意软件分析需要一系列的方法和技术来进行,挖掘恶意软件的威胁和意图、识别所利用漏洞和确定攻击来源等,这一系列分析帮助安全运维人员做出应急响应和防御措施。如图1 所示,目前关于恶意软件的检测分析方法主要有人工分析、动态行为分析和恶意代码分析,恶意代码分析又分为静态分析和动态分析[3]。静态分析方法旨在提取恶意软件代码块、strings 、控制流、函数调用等特征进行分析[4]。动态分析使用沙箱监控恶意软件在运行过程中产生的行为数据,如API 调用序列、进程调用、文件操作、网络通信等信息[5]。由于动态行为之间存在关联性,有研究工作对其构建动态图,使用图神经网络学习恶意软件的特征表示,利用机器学习进行恶意/ 非恶意二分类或恶意软件家族分类[6-8]。

图1 恶意软件分析技术

任何一种分析工具都有缺陷,例如静态分析过程中,对恶意软件的二进制代码进行反汇编会产生不明确的结果;使用沙箱在虚拟化环境中监控恶意软件的动态行为,如对受感染主机的文件修改、与外部控制服务器的通信等,借助沙箱完成自动化分析尽管可以节省人力资源和时间成本,但这并不是一个恶意软件的全面化解决方案,沙箱环境和实际环境存在差异,恶意软件在沙箱中可能具备规避检测的能力,尽管沙箱帮助安全分析员获取恶意软件产生的动态行为数据,但从恶意软件的行为数据上判断潜在的家族或攻击组织需要分析人员掌握大量的经验知识。所以使用单个或少数几种分析工具不足以应对复杂恶意软件所带来的挑战,系统化的恶意软件分析显得十分必要,整合不同的恶意软件分析结果将帮助分析人员深入了解恶意软件的攻击过程、攻击意图和产生的威胁。相关研究中,贾焰等人提出了一种构建网络安全知识图谱的实用方法,以漏洞知识为核心与网络资产和攻击事件相关联,但没有具体对恶意软件进行分析建模[9];Xiao 等人将恶意软件在运行时调用的API 构建为恶意软件行为的有向无环图,抽取出API 序列并通过SAE深度学习模型进行编码,最后通过机器学习分类器预测恶意软件家族[6],该方法仅考虑恶意软件的API序列,并且随着恶意软件的发展变种等情况,分类器的性能也会显著降低。

因此,本文设计了一种系统化的恶意软件关联分析方法SimMal,它集成了恶意软件的动态及静态分析数据,并融合安全专家的知识数据构建以恶意软件为核心的异质网络信息图(以下简称异构图),安全分析人员通过在线图展示可以清晰地观察恶意软件攻击过程中产生的数据外联、恶意荷载C2服务器、攻击目标等基础信息,以及其使用的攻击技术和利用漏洞等安全知识。为了挖掘恶意软件家族,通过抽取离散特征构建机器学习分类器的方式泛化性和可解释性不足,不能直观获取相同家族恶意软件的关联关系,并难以对未知家族的恶意软件准确判断。因此本文还设计了一种基于metapath2vec 改进的异构图表示学习方法,计算恶意软件间的相似共性,筛选出高度相似样本辅助安全研究员分析,从而理清恶意软件关联脉络,挖掘背后的恶意软件家族和APT 组织,达到攻击溯源的目的。

1 SimMal 系统框架

恶意软件的静态分析或动态行为分析产生了大量的离散型数据,比如恶意代码的字符串特征、网络流量、进程执行命令等,在信息安全领域中,存在许多通用的网络安全知识,比如CVE (Common Vulnerabilities and Exposures) 漏洞库;ATT&CK 攻击技术矩阵;公开的APT 研究报告也记录了APT 组织所使用的攻击工具、恶意软件和攻击流程等信息。这些不同类型的数据存在关联,传统的恶意软件分析通常是从恶意软件个体本身的角度出发,去分析自身的属性,很少从个体关联关系的角度去分析恶意软件攻击场景,从而难以准确地挖掘出潜在的攻击载体和组织。而图计算和基于图的认知分析弥补了这方面的不足,它可以充分表达事物的联系和依赖属性,将这些数据融合为异构图,从关联性角度分析恶意软件[10]。

SimMal 系统将恶意软件的动/ 静态分析数据和外部补充的安全知识数据根据一定模式抽取转换为异构图的形式存储,并支持多类型数据的查询及关联,清晰展开恶意软件与其他类型数据的关联并支持扩展从而进行深度挖掘;图计算分析能够自动计算恶意软件之间的相似性,支持静态属性相似计算和动态行为数据相似计算,协助安全分析人员进行综合研判。图2 展示了SimMal 的整体框架,自底向上一共可分为四个部分,依次为数据抽取层、数据处理层、数据计算层和可视化关联分析层。

图2 SimMal 系统框架图

如图2 所示,数据抽取层收集了恶意软件的动静态特征数据和安全知识数据,这些海量的多源异构数据输入到数据处理层后分为了结构化数据和非结构化数据,针对如APT 分析报告这种非结构化文本数据,SimMal 采取了正则匹配和自然语言处理技术(实体识别和关系抽取) 来识别文本中的恶意软件、APT 组织、IOC 等关键字[9],依据实体唯一值(如恶意软件md5、IP 地址值等) 融合以上多源数据包含的实体并建立实体之间的联系。

SimMal 基于恶意软件本体模型将融合后的数据转换为结构统一的图数据,并在图数据库HugeGraph中持久化存储。本体是一种知识表示方法,它旨在建立一个面向具体应用领域的模型,明确领域内的概念、术语及相互关系。本研究参考MAEC(Malware Attribute Enumeration and Characterization) 恶意软件描述语言和STIX(Structured Threat Information Expression)结构化威胁情报表达语言[11],设计了以恶意软件为核心的本体结构,如图3 所示。恶意软件本体模型中包含多种类型实体,如Ssdeep 模糊哈希算法计算的文件hash 值;基于规则抽取的恶意软件行为从而关联到ATT&CK 攻击技术;虚线框中列举了恶意软件的动态特征如通信Domain 和IP 地址、关联URL等;APT 分析报告中解析出的观测数据与恶意软件特征进行对应关联,形成包含恶意软件、威胁情报和安全知识的本体模型。通过恶意软件本体模型可以扩展出多种类型数据的关联,如APT 威胁组织使用过的恶意软件及其常用的攻击技术,同一家族的恶意软件的高频特征。

图3 恶意软件本体结构

数据计算层提供恶意软件相似性计算服务,包括Ssdeep 相似性计算和w-metapath2vec 异构图相似计算。其中Ssdeep 是一种构建哈希散列特征码的技术,基于文本的分片哈希算法计算恶意代码的特征值。Ssdeep 值可以用来识别已知文件的修改版本,即使在新的文件中插入或修改数据[12]。Ssdeep 相似性计算从静态特征维度上提供相似关联,辅助研究人员分析恶意软件之间是否存在变种关系。

基于w-metapath2vec 的异构图计算从恶意软件的动态行为数据角度,将图上的节点转换为向量的形式,通过比较向量的相似度来判断恶意软件之间的关联性。metapath2vec 是一种可解释性强的模型,它基于元路径(metapath) 并根据Skip-gram模型学习异构图的表示[13],由于在恶意软件分析中不同的动态特征重要性和稀疏度不一,本文提出了带权重的metapath2vec 算法模型w -metapath2vec,提高了恶意软件向量表达能力和相似性计算结果的可信度。SimMal 计算模块从静态分析和动态分析维度协助安全分析人员展开关联分析,进一步地通过对比与有恶意软件家族或APT 组织标签的样本的相似性做出综合研判。

在可视化关联分析层,分析人员查询某恶意软件时,SimMal 自动推荐出与待查询恶意软件相似的其他恶意软件,包括了Ssdeep 相似和异构图相似两种模式,并支持一键展开待查恶意软件与推荐相似恶意软件之间的关联情况,驱动恶意软件研究人员的分析能力。

2 异构图计算框架

在上亿节点数量级的恶意软件异构图中,仅靠安全分析人员手动地下钻关联分析难以挖掘出背后潜在的攻击载体和攻击技术,导致不能及时分析出恶意威胁和给出相应的缓解措施,Ssdeep 相似计算从单一的静态特征维度判断恶意软件与恶意代码文本相似性,无法从攻击技术、网络通信等动态行为上进行分析。为了高效并准确地计算恶意软件在动态特征上的相似性,SimMal 异构图计算框架提出带权重metapath2vec 模型(w-metapath2vec),基于安全分析专家设定的关联元路径学习图的特征表达,具有较强的可解释性。

图4 展示了异构图计算框架,主要包括特征构图模块、metapath 构建模块、w -metapath2vec 计算模块和数据应用模块。

图4 异构图计算框架

2.1 w-metapath2vec 模块

在领域知识图谱中,通常需要根据领域专家经验来设计节点间的关联模式,随机游走/跳跃的节点关联容易造成有歧义不具备相关性的表达。

元路径metapath 作为一种表达源实体和目标实体间复合关系的形式,基于元路径随机游走的策略可以确保不同类型的节点语义关系被恰当输入到Skip -gram 模型[14],从而有效保留异构图的结构和语义相关信息。w-metapath2vec 设定多种元路径,首先在给定一种元路径模式下进行随机游走,将自然语言文本中的上下文概念映射到异构图中,从而学习异构图中的节点特征[13],最后根据预定义的权重结合不同路径下的节点表示。

元路径metapath 定义如下:

其中,Ri代表了不同类型节点Vi和Vi+1之间的关系,L 表示该元路径长度。一个为了表示恶意软件相关性的典型示例是M →P →M,表示的是两个恶意软件(M) 之间创建了相同的进程(P),可以通过进程节点在异构图中关联起来。SimMal 结合了恶意软件分析人员的专家经验,共定义了10 种有意义的元路径模式来表示恶意软件相关性,表1 列举了部分元路径。

表1 恶意软件metapath

不同的元路径从不同的角度来衡量恶意软件之间的相关性,恶意软件在通信上的关联首先可以通过一跳元路径M →D →M 学习,其中D (Domain)表示通信域名;由于域名和IP 存在解析关系,由路径M→D→I→M可以更深度地挖掘恶意软件在通信上的关联;元路径M→B→Te→B→M从恶意行为(B:Behavior,Te;Technique)角度,表示不同恶意软件的行为属于同一种ATT&CK 技术。图5 为metapath 示例。

图5 metapath 示例

在metapath 指引下,随机游走必须按照节点类型选择下一跳,其概率转移公式如下:

给定一条metapath,将会生成节点在该路径下的表示向量,安全专家共定义了10 种不同元路径模式,使用多视角融合算法来结合不同元路径下的节点表示,假设给定n种元路径模式,通过metapath2vec训练后,每个节点都会产生n种向量表示,最终的向量表示为:

其中,wi表示在第i条元路径下向量表示的Veci的权重(i=1,…,10),权重wi由恶意软件分析专家根据关联重要性定义,比如当互斥体类型的节点共现频率高,即使性质不同的恶意软件在互斥体节点上也能呈现强关联性,那么与互斥体相关的元路径权重则相对较低。

2.2 数据应用

w -metapath2vec 模型能够计算出异构图中每个恶意软件的综合表示向量,通过计算表示向量之间的余弦相似度可以得到任意两个恶意软件之间的相似性。在数据应用层中,根据相似度的值进行排序,得到每个恶意软件TOP-K个相似的其他恶意软件。

数据应用层以关联性分析为基础,同时结合Ssdeep静态特征的对比分析,辅助安全分析人员进行综合研判。在每天数以万计的恶意样本数据中,SimMal统计出有恶意家族和APT 威胁组织标签的样本集合,通过计算与新增样本间的相似度来筛选出若干个疑似存在攻击来源的恶意软件并提供给恶意软件分析人员,极大提高了恶意软件分析的效率。

3 实验和结果分析

本节进行了恶意软件家族分类实验,通过对比其他图表示学习算法的实验结果说明了w -metapath2vec 算法模型的有效性;另外本节列举了具体的关联分析案例,以安全分析人员的视角来使用Sim-Mal 系统,说明了SimMal 在辅助分析时的作用。

3.1 恶意软件家族分类

在恶意软件家族分类实验中,本文抽取了来自9个恶意软件家族共计47839个恶意软件实例,具体统计数据见表2 。

表2 恶意软件家族分类数据集

使用w-metapath2vec 模型对4 万多个恶意软件实体进行相似度计算,对每一个恶意软件实例,取其TOP -K(K=1,3,5) 即相似分数排名为前1,3,5的其他恶意软件构建集合,若第TOP -K恶意软件的家族与当前恶意软件家族相同,标记为正,否则为负。本文进行了5 轮测试,其中每一轮测试随机从4 万多个恶意软件实体中抽取1000个样本作为测试集,最后将平均准确率作为TOP -K的结果,如表3 所示。

表3 恶意软件家族分类结果

从表3 可以看出,在w-metapath2vec 计算模型下,所有TOP -K的恶意软件家族分类准确率均超过95%,其中TOP -1 相似计算准确率可高达97.9%,随着TOP-K增大,准确率呈下降趋势。

另外在恶意软件家族分类实验中,本文比较了其他图表示学习模型:DeepWalk[15]和metapath2vec 。DeepWalk 为同质图表示学习模型,将不同类型的节点都转换为统一类型,生成同质图后基于DeepWalk策略随机游走并向量化;metapath2vec 模型中不考虑多视角元路径,直接基于所有元路径模式进行序列采样。表4 列举了不同模型下恶意软件家族分类的TOP-K 平均准确率,可以发现w -metapath2vec 模型在所有TOP -K 中准确率都超过了其他两个模型,说明w-metapath2vec 融合了不同场景下的恶意软件相似性并纳入专家经验设置权重,可以更好地学习恶意软件节点表示,提高了家族分类的准确率。

表4 不同模型恶意软件家族分类结果

3.2 关联分析场景

SimMal 系统协助安全分析人员从关联分析角度挖掘恶意软件之间的相关性,针对日增的恶意软件数据,SimMal 提出的异构图学习算法支持动态更新计算日增数据与带家族标签和APT 威胁组织标签恶意软件的相似度,筛选出相似度较高的恶意软件,反馈给安全分析人员展开分析。

针对现网中的真实恶意软件数据,以2021年2月某一天的恶意软件数据为例,SimMal 发现在新增的恶意软件数据中,恶意软件84eeb5f5f8c04aab49fc-8e3b02912d4b(恶意软件md5) 和46ada7d6ad61e06705-05ba8bd1752d46 与有家族标签和APT 标签的恶意软件3503df1647988-0fdf484ace875ff3588(名称LODCTR.EXE)具备多种共性,如图6 所示,新增恶意软件与LODCTR.EXE 之间在创建文件、通信IP 、创建进程和攻击行为等方面存在强关联性。

图6 关联分析案例

安全分析人员对上述三个恶意软件进行分析判定,发现新增的恶意软件84eeb5f5f8c04aab49fc8 -e3b02912d4b 和46ada7d6ad61e0670505ba8bd1752d46 与LODCTR.EXE 恶意软件都属于ramnit 蠕虫家族,新增的两个恶意软件原始文件是phoenix winphlash 工具程序,被ramnit 蠕虫家族感染后,在运行过程中创建名为DesktopLayer.exe 的可执行文件,并调用IE 浏览器,访问ramnit 蠕虫的C2 服务器fget - career.com,期间会创建大量临时文件,因此在图关联上会展示出进程、通信IP 和文件三个维度的强关联,研究人员的分析验证了异构图计算恶意软件相似度的有效性。

Ssdeep 静态特征关联信息也帮助研究人员分析判断恶意软件之间是否存在变种等情况,例如SimMal发现恶意软件202ea51fdc798076c0ab7f29a90d3619 和恶意软件d05c0e74105255e91bd0f508da7d48e3 在Ssdeep特征值上相同,在异构图上行为和通信维度相似,经分析发现两者关联同一篇APT 分析报告[16],属于变种关系。

4 结论

本文提出的SimMal 系统以恶意软件为核心,融合多源异构数据建立恶意软件网络异构图,将离散的恶意软件检测数据整合到全面的可关联扩展数据,获取恶意软件利用漏洞信息、使用的攻击技术以及通信数据等,相当于给恶意软件进行画像,能清晰地展示并剖析恶意软件,同时安全研究人员可以在知识图谱中手动下钻关联分析,提高研究人员对恶意软件的认知能力。

SimMal 系统利用了异构图关联表示的优势,提出的w-metapath2vec 带权多视角图表示学习模型充分挖掘异构图的语义和结构特征,相比DeepWalk 和metapath2vec 能更好学习到恶意软件节点的表示,在恶意软件家族分类的对比实验中充分说明了该模型的有效性。基于恶意软件的图表示向量和Ssdeep值,SimMal 对恶意软件进行相似度计算来找出具备多种共性的恶意软件,从图的关联性角度辅助研究人员分析与恶意软件存在动/ 静态特征一致的其他恶意软件实体,包括恶意软件和恶意软件家族等,还可通过分析恶意软件的行为及使用工具与APT组织的行为及使用工具之间的关联性来判断攻击者信息,从而挖掘恶意软件潜在的攻击载体和组织。

使用沙箱恶意软件检测或是使用其他机器学习算法对恶意软件进行分类可以获取恶意软件离散的信息,而SimMal 系统整合恶意软件离散信息并融合安全领域知识,有效地支持安全研究人员的深入分析,极大提高了人工分析效率。另外SimMal系统也存在一些不足之处,比如在异构图计算框架中,w-metpath2vec 模型对每条元路径的权重设计完全依赖于专家经验,导致可扩展性不足。为弥补这一不足,考虑通过计算不同模式下向量间的距离来计算权重值,希望在未来的研究工作中得以实现并与人工设置的权重进行对比分析。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!