基于图数据库的系统日志图谱模型构建与分析*
2023-09-07郑中一李赛飞江晓峰
郑中一,李赛飞,江晓峰
(1.西南交通大学 计算机与人工智能学院,四川 成都 611756;2.西南交通大学 信息科学与技术学院,四川 成都 611756)
0 引 言
日志分析技术以网络环境中各类设备产生的记录为目标,通过自动化分析网络中的各类改变以发现网络威胁并及时发出警报,可显著提高计算机系统的防护能力。目前成熟的日志分析技术已经能够准确地检测出漏洞利用、病毒植入或异常系统行为等事件。然而,随着高级持续性威胁(Advanced Persistent Threat,APT)的出现[1],传统日志分析技术的局限性也随之体现:一方面,其主要信息来源为日志数据,维度相对单一;另一方面,其难以表示数据中异常事件的关联性。
为提升关联能力,研究人员开始将图的思想融入日志分析。相比于文本数据,将日志中的事件和关系转换为节点和边以构成图结构能直观体现出数据间的关联性。Diederichsen等人[2]针对网络日志文件提出一种方法,将日志实体材料化为图结构,并通过Neo4j数据库驱动以提供查询和可视化。朱元庆等人[3]基于系统日志的派生关系将日志转化为无向图,并应用XGBoost算法优化图中各边的权重值。但该工作构建的日志图中关系较为单一。薛见新[4]分析了基于终端侧、系统日志和应用程序日志的关联、网络侧和终端侧的关联3个维度的攻击溯源日志图构建技术。余真奇[5]提出了一种按起源图思想构建系统日志图的方法。
为丰富信息来源,研究人员将图进一步扩展为图谱。图结构除能建模日志中的复杂事件和关系外,也能有效地处理多源数据的集成和关联,即形成图谱。MITRE组织构建了一个知识图谱“CyGraph[6]”,其将网络设施、安全态势、威胁和任务依赖知识与日志数据融合为一个全局模型。Nimbalkar等人[7]讨论了一种通过语义表示将日志实体链接到外部知识的方法,但并未包含威胁情报这一外部知识。Narayanan等人[8]的研究较好地弥补了这一不足。他们提出一种能够集成多源威胁情报的网络安全知识图谱,并以日志数据为对象进行了推理分析。Kurniawan等人[9]提出了一种基于知识图谱的日志分析框架,其基于语义网融入了多种威胁检测技术,并提供了内部系统知识和外部安全知识的上下文关联。陶源等人[10]提出网络安全等级保护日志分析图谱模型,构建了几种将等保测评数据与系统日志相融合的理论分析框架。
目前图谱相关研究大多用其构建的模型直接对原始日志或经过简单关联的日志图进行分析。我们认为,前述两个方向的研究思路可以进行有效结合,以形成更加完整的图谱模型。为验证此观点,本文提出了一种基于图数据库的系统日志图谱模型。一方面,其对系统日志内部的多种关系进行建模,将文本数据转换为更直观易懂的图数据;另一方面,该模型实现了日志与外部多维知识的有效融合,便于分析人员以全局视角研究网络安全事件。
1 图谱模型设计
知识图谱是一种结构化的语义知识库,用于描述现实世界中的概念及其相互关系。其基本组成单位是“实体—关系—实体”三元组[11]。
如图1所示,基于一篇综述网络安全知识图谱应用场景的文献[12]提出的4维图谱结构,本章将以行为数据维度为核心,辅以安全知识、威胁情报和环境数据3个维度,设计并构建日志图谱模型。
图1 通用网络安全知识图谱结构
1.1 安全知识
安全知识库通常是为个人、政府、安全产品和服务社区开发特定威胁模型和方法的基础。在本模型中,其作用是从抽象层面描述或标记系统日志所代表的行为。
2020年,来自麻省理工学院的研究团队构建了一个综合网络安全知识图模型,并命名为“BRON[13]”。如图2所示(图中数字代表实体内的节点数量),BRON将对抗战术技术和常识矩阵(Adversarial Tactics Techniques and Common Knowledge,ATT&CK)、通用攻击模式枚举和分类(Common Attack Pattern Enumeration and Classification,CAPEC)、通用弱点枚举(Common Weakness Enumeration,CWE)以及通用漏洞披露(Common Vulnerabilities and Exposures,CVE)等知识库依次关联,形成一种由高维战术至低维漏洞的层次结构。鉴于BRON已经开源,本文图谱模型直接将其作为“安全知识”这一维度的知识。
图2 BRON知识图内部结构
1.2 威胁情报
威胁情报(Cyber Threat Intelligence,CTI)是一种基于证据的知识,包括上下文、机制、标示、含义和建议,这些知识与资产所面临的威胁或危害相关,可用于指导应对威胁或危害的决策[14]。在本模型中,它的作用是在理论层面指导基于日志的异常事件关联。
由于威胁情报的提取和分析并非本文的研究重点,故我们在试验图谱模型时引入了若干常见攻击的“战术技术过程(Tactics Techniques Procedures,TTPs)”描述作为威胁情报。
1.3 环境数据
环境数据是指图谱模型具体应用环境的数据。一般以目标系统的网络拓扑图为基础,加入设备对应的操作系统、IP地址等属性构成。其在本模型中的作用是以对目标系统的物理组成与结构进行建模。本文实验环境的网络拓扑将在第2章中给出。
1.4 行为数据
行为数据是目标系统在实际工作过程中产生行为的记录。本文模型的行为数据由Sysmon生成,其是一款由微软开发的日志传感器,能监控系统的动态行为并记录于日志。Sysmon日志是由多种字段信息构成的结构化数据,我们从中筛选出图结构化所需的主要字段,如表1所示。
表1 Sysmon日志主要字段信息
将文本格式的日志转换为图数据结构的关键在于梳理日志中的关联关系。除较为明显的时间关系外,我们还挖掘出了另外3种关联关系:进程—日志、进程—进程、父进程—子进程。基于这些关系,我们可以有效地构建出Sysmon日志图。
(1)日志—日志(Syslog-Syslog)。“日志—日志”关系可基于日志的生成时间进行构建。我们首先根据Hostname字段对日志分类,然后按时间顺序将日志节点进行串联,如图3所示。
图3 “日志—日志”关系内部结构
(2)进程—日志(Process-Syslog)。“进程—日志”关系隐藏在日志的ProcessGuid字段内容中。实际上,一个进程包含多条日志,同一进程下的日志有着相同的ProcessGuid。为更清楚地表示该关系,我们将“进程”这一抽象概念进行了实体化:首先提取出所有ProcessGuid,并创建对应数量的“进程”节点进行一一绑定;之后将每个进程所包含的日志节点与之相连,形成图4所示的“进程—日志”关系。这样一个进程内的所有日志便可通过一个节点统一表示,大大减少了后续构建进程间关系时的连线数量。
图4 “进程—日志”关系内部结构
(3)进程—进程(Process-Process)。“进程—进程”关系包含在EventID为“10”的日志中。根据Sysmon对事件编号的定义,10号事件为“进程访问”,当一个进程访问另一个进程时便会产生这类日志。具体而言,10号事件日志独有SourceProcessGuid和TargetProcessGuid两个字段,分别用于记录源进程和目标进程的ProcessGuid,据此可以构建进程间的访问关系。
同时,由于10号事件日志自身没有Process-Guid,故无法与进程实体相连。为避免其成为孤立节点,我们设计了图5所示结构,即将其插入到“进程—进程”关系中间。
图5 “进程—进程”关系内部结构
(4)父进程—子进程(Parentp-Chidp)。“父进程—子进程”关系包含在EventID为“1”的日志中。根据Sysmon对事件编号的定义,1号事件为“进程创建”,当一个进程创建另一个新进程时便会产生这类日志。具体而言,1号事件日志独有ParentProcessGuid字段,记录了创建该进程的父进程的ProcessGuid,据此可以构建进程间的父子关系,如图6所示。
图6 “父进程—子进程”关系内部结构
此外,为探究“父进程—子进程”关系是否包含于“进程—进程”关系,我们通过统计兼具两种关系的进程组的数量,分别计算出两组日志数据集中两种关系的重叠率。表2数据表明,这两种关系仅有少量重叠,应被视为独立的两种关系,分别进行建模。
表2 “父进程—子进程”与“进程—进程”重叠情况
1.5 图谱融合
前四节分别探讨论述了图谱中各个维度的内部关系。本节我们定义了表3所示的维度间关系对各维度进行关联,以构成完整的图谱模型。
表3 图谱模型维度间的关联关系
本文图谱模型的完整结构如图7所示(BRON的内部结构在此省略),其呈现出分层结构,旨在实现高维威胁情报与低维设备资产(Asset)之间的相互映射。模型中实体与关系的数据库文件的具体编写将在第4章中举例说明。
图7 网络安全日志图谱模型结构
2 实验环境
2.1 网络拓扑
本文实验的靶场主要由3个部分组成,其拓扑信息如图8所示。
图8 实验靶场网络拓扑图
(1)数据生成区。数据生成区以服务器为物理基础,由服务器上运行的若干虚拟机具体组成。其中每台虚拟机均安装了日志传感器Sysmon和日志转发软件Nxlog。此外,“服务器1”所管辖的局域网被特别配置为了“域”,可由域管理员账号统一访问和管理。
(2)攻击端。攻击端设定为一台已接入服务器3所管辖局域网内的Kali Linux主机。
(3)数据汇总分析端。数据汇总分析端由一台通过软件防火墙与实验环境相隔离的主机构成,是本文图谱模型的实际部署位置。
2.2 仿真攻击
本文实验的日志数据集中包含两种攻击,主要步骤如表4、表5所示。
表4 横向移动(Lateral movement)攻击步骤
3 图谱模型实验与评估
在实际开发过程中,可通过图数据库来驱动日志图谱模型。图数据库一般由“实体”和“关系”两种文件组成,文件中的每行代表实体的一个节点或关系的一条边,每列代表实体或关系的一种属性。
本文选择ArangoDB图数据库来驱动模型的构建与实验。以“威胁情报”为例,图7中实体“CTI”的部分实现如图9所示。其中“_key”属性是数据库规定的节点唯一标识符,其余如战术名和攻击指令模板等为自定义实体属性;图7中实体内关系“CTI-CTI”和实体间关系“CTI-TTP”的部分实现如图10所示。其中规定“_from”和“_to”属性分别用于记录边的开始和结束节点,格式为“实体名/节点标识符”。
图9 图谱模型实体文件编写
图10 图谱模型关系文件编写
3.1 算法与实验结果
本文图谱的层次结构代表其有着较大的深度,此时基于广度优先搜索(Breadth-First Search,BFS)的图遍历算法具备更好的适用性和搜索效率,故我们基于该算法进行相关实验。算法流程如下:
以“横向移动”为例,攻击过程中,某主机的安全软件将数据集中17465号日志记录的命令行操作(向外发送了一个未知应用程序)定义为异常事件,于是我们以该日志节点为遍历起点进行事件关联。关联过程分为3步,结果如图11所示。
图11 “横向移动”攻击事件关联结果
(1)日志层向上遍历至CTI层。该步骤旨在将异常日志映射到相应的攻击过程上。设定BFS深度为3,搜索路径为“Syslog-TTP”“Technique-Mitigation”(BRON内部关系)和“CTI-TTP”关系。遍历结果显示,该日志与44号ATT&CK技术有映射关系。该技术属于远程服务利用技术,可设置11号等缓解措施进行防御。并且CTI中记录的横向移动攻击的第2步也使用了该技术。
(2)CTI层横向遍历。该步骤旨在获取CTI中对应的完整攻击过程。设定BFS深度为1,搜索路径为“CTI-CTI”关系。遍历结果显示,CTI中横向移动相关的攻击过程共有3步。
(3)CTI层向下遍历至资产层。该步骤旨在关联攻击事件,还原攻击全貌。设定BFS深度为6,搜索路径依次为“CTI-TTP”“Technique-Mitigation”“Syslog-TTP”“Process-Syslog”“Parentp-Childp”和“Asset-Process”关系。遍历结果显示,黑客在CTC备机(asset/9)和主机(asset/8)间进行了横向移动。
通过分析关联结果中的详细信息得出,由于CTC主备机同属一个域内,横向移动第1步通过网络共享发现CTC主机(asset/8);第2步利用网络共享服务从CTC备机(asset/9)向主机发送代理程序文件;第3步通过备机(asset/9)远程运行代理程序,建立攻击端与主机间的代理连接,实现横向移动。此外,还发现CTC备机上与攻击事件相关的3个进程(process/741,894,1055)均来自同一个父进程(process/884),经验证该父进程是建立CTC备机与攻击端之间代理连接的进程,即黑客初始接入的位置。
3.2 图谱评估
对图进行评估可以帮助我们了解和描述图的特征和性质,从而更好地理解和分析图数据。本文从基本指标和查询性能两个方面对图谱模型进行评估。
(1)基本指标。图谱的基本指标如表6所示。这些指标可帮助我们了解图的整体特征、规模大小、关联程度和信息传递方式等,为进一步的分析、挖掘和算法设计提供基础。
表6 本文图谱模型的基本指标
(2)查询性能。我们使用本文模型分别在两套数据集中查询两种攻击涉及的日志(重复5次),同时在基于Elasticsearch引擎的日志分析平台上对两套数据集执行类似操作,以比较查询性能。测试环境为一台搭载了Intel Core i7-9700 3.00 GHz CPU和64 GB RAM的主机。
表7数据显示,鉴于图谱模型在日志数据间构建了关联关系,相较于日志分析平台的逐条查询方式,其拥有更高的查询效率。然而,测试数据也体现出图数据库的查询效率受数据集大小影响更为明显,说明当数据量过大时,应考虑搭建分布式图数据库以保证其查询性能。
表7 查询耗时记录
4 结 语
随着网络攻击的不断进化,传统日志分析技术已经难以满足日益增加的网络安全需求,将新的智能技术与日志分析技术融合已经成为安全领域的研究热点。本文提出的模型有效弥补了传统日志分析技术信息来源单一和难以关联异常事件的不足,并表现出优秀的查询性能。未来,基于本模型的研究工作可借助实体抽取等技术引入更加丰富的威胁情报,可融入网络流量数据以更全面地描述系统行为,还可利用知识推理技术挖掘图谱中的隐藏信息,进一步提升模型的分析能力。