基于区块链的主机安全监控方法、装置、介质及电子设备与流程

文档序号:23794285发布日期:2021-01-30 09:53阅读:96来源:国知局
基于区块链的主机安全监控方法、装置、介质及电子设备与流程

[0001]
本公开涉及计算机技术领域,具体涉及一种基于区块链的主机安全监控方法、基于区块链的主机安全监控装置、计算机可读介质及电子设备。


背景技术:

[0002]
随着计算机以及互联网技术的不断发展,企业在享受互联网发展红利的同时,也在不断遭受网络攻击,给企业业务、资产、形象等带来了不同程度的影响,网络安全问题越来越得到重视。而且近年来网络攻击呈现出从个人单兵作战到团队协作、从关注系统漏洞到关注业务漏洞的状态,因此大型企业组织面临了更复杂的定向威胁攻击(advanced persistent threat,apt)。
[0003]
发现攻击行为、还原攻击路径、确定被攻击影响范围、攻击取证成为了企业在遭受安全攻击时最为关切的事情。然而,在当前的大型组织中,企业内部网络拓扑复杂,安全入侵检测设备主要分布在各网络节点、边缘,虽然可以发现攻击行为但无法确定攻击者是否成功攻陷目标主机,攻击成功后是否借助隐蔽通道造成了更大的影响,因此网络安全设备存在检测盲区,另外攻击者在攻陷主机后可能会删除日志记录,给漏洞影响排查带来一定影响。因此,如何准确、可信地进行主机安全监控是目前亟待解决的问题。
[0004]
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

[0005]
本公开的目的在于提供一种基于区块链的主机安全监控方法、基于区块链的主机安全监控装置、计算机可读介质及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的安全监控准确性差、存在监控漏洞等技术问题。
[0006]
根据本公开的一个方面,提供一种基于区块链的主机安全监控方法,该方法包括:
[0007]
监听主机在网络通信中的流量数据,并判断所述流量数据是否为恶意流量;
[0008]
若所述流量数据为恶意流量,则获取所述主机的安全状态信息,并将所述安全状态信息保存至安全状态区块链;
[0009]
生成对应于所述恶意流量的入侵日志,并将所述入侵日志和所述安全状态信息保存至日志存储区块链。
[0010]
在本公开的一些实施例中,基于以上技术方案,所述判断所述流量数据是否为恶意流量,包括:
[0011]
对所述流量数据进行特征提取以得到所述流量数据的流量特征;
[0012]
将所述流量特征输入预先训练的支持向量机模型,以通过所述支持向量机模型识别所述流量数据的数据类型,所述数据类型包括正常流量和恶意流量。
[0013]
在本公开的一些实施例中,基于以上技术方案,所述对所述流量数据进行特征提取以得到所述流量数据的流量特征,包括:
[0014]
获取所述流量数据中的应用层协议流量,并对所述应用层协议流量进行特征提取以得到所述应用层协议流量的协议流量特征;
[0015]
当所述应用层协议流量中存在文件对象时,对所述文件对象进行特征提取以得到所述文件对象的文件对象特征;
[0016]
在所述主机的沙盒中运行所述文件对象,并根据运行结果确定与所述主机相关的文件运行特征;
[0017]
根据所述协议流量特征、所述文件对象特征以及所述文件运行特征确定所述流量数据的流量特征。
[0018]
在本公开的一些实施例中,基于以上技术方案,所述获取所述主机的安全状态信息,包括:
[0019]
获取所述主机的运行状态数据;
[0020]
根据所述运行状态数据以及所述恶意流量确定所述主机的安全状态信息。
[0021]
在本公开的一些实施例中,基于以上技术方案,所述根据所述运行状态数据以及所述恶意流量确定所述主机的安全状态信息,包括:
[0022]
对所述运行状态数据进行特征提取以得到所述主机的状态特征;
[0023]
确定与所述恶意流量相对应的流量特征;
[0024]
将所述状态特征以及所述流量特征输入预先训练的随机森林模型以得到所述主机的安全状态信息。
[0025]
在本公开的一些实施例中,基于以上技术方案,所述将所述安全状态信息保存至安全状态区块链,包括:
[0026]
将所述主机的网络地址以及所述安全状态信息保存在待共识的当前安全状态区块的区块主体中;
[0027]
在满足区块生成条件时,获取安全状态区块链中上一安全状态区块的区块头数据,并根据所述区块头数据计算得到父区块哈希值;
[0028]
根据所述当前区块的区块主体中保存的数据计算所述当前安全状态区块的区块主体哈希值;
[0029]
将所述父区块哈希值、所述区块主体哈希值以及当前时间的时间戳保存在所述当前安全状态区块的区块头中;
[0030]
将所述当前安全状态区块广播至安全状态区块链网络以对所述当前安全状态区块进行共识认证,并在认证通过时将所述当前安全状态区块链接至所述安全状态区块链上。
[0031]
在本公开的一些实施例中,基于以上技术方案,所述将所述入侵日志和所述安全状态信息保存至日志存储区块链,包括:
[0032]
将所述主机的网络地址、所述入侵日志以及所述安全状态信息保存在待共识的当前日志存储区块的区块主体中;
[0033]
在满足区块生成条件时,获取日志存储区块链中上一日志存储区块的区块头数据,并根据所述区块头数据计算得到父区块哈希值;
[0034]
根据所述当前日志存储区块的区块主体中保存的数据计算所述当前日志存储区块的区块主体哈希值;
[0035]
将所述父区块哈希值、所述区块主体哈希值以及当前时间的时间戳保存在所述当前日志存储区块的区块头中;
[0036]
将所述当前日志存储区块广播至日志存储区块链网络以对所述当前日志存储区块进行共识认证,并在认证通过时将所述当前日志存储区块链接至所述日志存储区块链上。
[0037]
根据本公开的一个方面,提供一种基于区块链的主机安全监控装置,该装置包括:
[0038]
流量数据监听单元,被配置为监听主机在网络通信中的流量数据,并判断所述流量数据是否为恶意流量;
[0039]
安全状态保存单元,被配置为当判定所述流量数据为恶意流量时,获取所述主机的安全状态信息,并将所述安全状态信息保存至安全状态区块链;
[0040]
日志存储单元,被配置为生成对应于所述恶意流量的入侵日志,并将所述入侵日志和所述安全状态信息保存至日志存储区块链。
[0041]
根据本公开的一个方面,提供一种计算机可读介质,其上存储有计算机程序,其特殊之处在于,所述计算机程序被处理器执行时实现以上任一所述的方法。
[0042]
根据本公开的一个方面,提供一种电子设备,其特殊之处在于,包括处理器和存储器;其中,存储器用于存储所述处理器的可执行指令,所述处理器被配置为经由执行所述可执行指令来执行以上任一所述的方法。
[0043]
本公开实施例所提供的技术方案具有监控准确性强、可靠性好等优点。通过快速准确地识别主机当前安全状态,可以确定网络攻击对企业的影响范围;通过建立基于状态机的主机状况信息,能够追溯主机的历史安全状态;基于主机层面识别入侵来源,能够还原攻击路径,提升企业的应急响应能力;将主机状态识别与日志存储进行职责分离,基于区块链去中心化、不可否认性等特性,可以确保日志的不可否认性和完整性。
[0044]
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0045]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0046]
图1示意性地示出了本公开一些实施例中基于区块链的主机安全监控方法的步骤流程图。
[0047]
图2示意性地示出了本公开一些实施例中判断流量数据属性的步骤流程图。
[0048]
图3示意性地示出了本公开一些实施例中对流量数据提取特征的步骤流程图。
[0049]
图4示意性地示出了本公开一些实施例中获取主机安全状态信息的步骤流程图。
[0050]
图5示意性地示出了本公开一些实施例中确定主机安全状态信息的步骤流程图。
[0051]
图6示意性地示出了本公开一些实施例中基于区块链保存安全状态信息的步骤流程图。
[0052]
图7示意性地示出了本公开一些实施例中基于区块链保存日志的步骤流程图。
[0053]
图8示意性地示出了本公开一些实施例中基于区块链的主机安全监控装置的组成框图。
[0054]
图9示意性地示出了本公开提供的一种主机安全监控系统的整体架构。
[0055]
图10示意性地示出了安全检测模型的检测判断原理示意图。
[0056]
图11示意性地示出了日志存储模块的区块链网络原理示意图。
[0057]
图12示意性地示出了基于主机安全监控系统的主机安全监控流程。
[0058]
图13示意性示出本公开实施例中一种程序产品的示意图。
[0059]
图14示意性示出本公开实施例中一种电子设备的模块示意图。
具体实施方式
[0060]
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施例使得本公开将更加全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
[0061]
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0062]
在本公开的相关技术中,可以通过流量分析或者本地扫描两种方式对主机安全状态进行监控。
[0063]
流量分析方式是通过在网络主干道旁路部署入侵检测系统,对网络中的数据包进行分析,与预定义的攻击成功特征进行匹配,如果与特征相匹配,则判断目标主机被入侵,记录攻击日志并进行告警。这种方式能够在网络主干道检测到入侵行为,但当攻击者和内部已攻陷主机构建隐蔽通道后再对局域网资产进行攻击时,此时由于入侵检测系统无法检测到攻击流量,无法判断攻击影响范围、确定攻击者的后续攻击路径;另外流量分析需要依赖恶意流量特征,对于0day、基于时间的攻击、业务攻击等很难识别。
[0064]
本地扫描方式是在主机安装客户端检测程序,基于自定义规则定时对客户端进行扫描,发现主机存在文件异常、用户异常、日志异常、网络异常、进程异常等行为时进行告警上报,后台对上报日志进行存储。这种方式能够在所有主机上部署,从而全面的检测到主机的安全状态,但检测规则更新具有一定滞后性,只能检测到已知入侵行为,也无法确定攻击者的后续攻击路径。
[0065]
另外,以上两种安全监控方式都采用传统的日志存储技术,日志存在篡改、丢失等风险。
[0066]
基于流量分析、本地扫描或者其他方式的主机安全状态监控技术都采用中心化管理,只能在中心节点获取当前网络资产的安全状态,各个主机之间缺乏统一可信的通信及互联机制,无法得知通信对方的安全状态;由于主要在网络主干节点检测或只对自身安全状态进行检测,造成无法监控局域网内部的恶意流量连接及攻击行为,存在检测盲区;另外由于缺乏统一可信的日志同步及存储技术,现有技术无法同时满足发现攻击行为、还原攻
击路径、确定被攻击影响范围、攻击取证等需求。
[0067]
针对以上相关技术中存在的问题,本公开提供了一种基于区块链的主机安全监控方法。图1示意性地示出了本公开一些实施例中基于区块链的主机安全监控方法的步骤流程图。如图1所示,该方法主要可以包括以下步骤:
[0068]
步骤s110.监听主机在网络通信中的流量数据,并判断流量数据是否为恶意流量。
[0069]
处于安全监控状态下的当前主机可以通过有线通信链路或者无线通信链路与互联网上的其他主机进行网络通信,本步骤对当前主机在网络通信过程中的流量数据进行监听,并通过流量分析判断当前通信的流量数据是否为具有攻击行为或者携带异常文件的恶意流量。
[0070]
步骤s120.若流量数据为恶意流量,则获取主机的安全状态信息,并将安全状态信息保存至安全状态区块链。
[0071]
根据步骤s110中的判断结果,如果监听到的流量数据被判定为恶意流量,那么当前主机即存在被恶意入侵的风险。主机的安全状态信息反映了主机是否被恶意流量成功入侵。如果当前主机被成功入侵,那么当前主机的文件、用户、日志、网络、进程等相关内容可能出现异常。相反地,如果恶意流量对当前主机入侵失败,那么当前主机的相关内容将处于正常状态。主机的安全状态信息可以表示为“安全”和“入侵”两种安全状态标识,其中,“入侵”表示主机被成功入侵。作为安全状态区块链网络的其中一个节点,当前主机可以将安全状态信息保存至安全状态区块链上,使得安全状态区块链网络中的其他节点都能够及时且准确地获取当前主机的安全状态。
[0072]
步骤s130.生成对应于恶意流量的入侵日志,并将入侵日志和安全状态信息保存至日志存储区块链。
[0073]
针对监听到的恶意流量的入侵行为,可以进行日志记录生成对应的入侵日志。将入侵日志以及主机的安全状态信息同时保存至日志存储区块链上,可以实现对入侵行为及入侵结果的共享存储,使得日志存储区块链网络中的其他节点可以有效追溯安全监控的历史记录。
[0074]
在本公开实施例提供的基于区块链的主机安全监控方法中,通过快速准确地识别主机当前安全状态,可以确定网络攻击对企业的影响范围;通过建立基于状态机的主机状况信息,能够追溯主机的历史安全状态;基于主机层面识别入侵来源,能够还原攻击路径,提升企业的应急响应能力;将主机状态识别与日志存储进行职责分离,基于区块链去中心化、不可否认性等特性,可以确保日志的不可否认性和完整性。
[0075]
本公开可以利用预先训练的机器学习模型对流量数据的属性做出判断。图2示意性地示出了本公开一些实施例中判断流量数据属性的步骤流程图。如图2所示,在以上实施例的基础上,步骤s110中的判断流量数据是否为恶意流量,可以包括以下步骤:
[0076]
步骤s210.对流量数据进行特征提取以得到流量数据的流量特征。
[0077]
流量数据的流量特征可以包括与通信内容相关的通信数据特征以及与源主机相关的源主机特征。源主机是在网络中与当前主机进行数据通信的另一主机,源主机特征可以包括源主机的当前安全状态信息以及源主机的历史安全状态信息。源主机的当前安全状态信息和历史安全状态信息可以是从安全状态区块链中直接获取的信息。
[0078]
步骤s220.将流量特征输入预先训练的支持向量机模型,以通过支持向量机模型
识别流量数据的数据类型,数据类型包括正常流量和恶意流量。
[0079]
支持向量机(support vector machine,svm)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面。svm使用铰链损失函数(hinge loss)计算经验风险并在求解系统中加入了正则化项以优化结构风险,是一个具有稀疏性和稳健性的分类器。通过预先训练的支持向量机模型可以对提取到的流量特征进行分析计算,并根据分析计算结果将对应的流量数据分类为正常流量或者恶意流量。
[0080]
图3示意性地示出了本公开一些实施例中对流量数据提取特征的步骤流程图。如图3所示,在以上实施例的基础上,步骤s210.对流量数据进行特征提取以得到流量数据的流量特征,可以包括以下步骤:
[0081]
步骤s310.获取流量数据中的应用层协议流量,并对应用层协议流量进行特征提取以得到应用层协议流量的协议流量特征。
[0082]
应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文,例如可以包括文件传输协议(file transfer protocol,ftp)、超文本传输协议(hypertext transfer protocol,http)等等。通过对应用层协议流量进行特征提取可以获得网络地址、端口、协议类型、连接时间、数据包长度、数据包内容等多种协议流量特征。
[0083]
步骤s320.当应用层协议流量中存在文件对象时,对文件对象进行特征提取以得到文件对象的文件对象特征。
[0084]
应用层协议流量中除了请求报文和响应报文的相关数据之外,还可以携带文件对象用以进行文件传输。如果监听到的应用层协议流量中存在文件对象,那么本步骤可以将文件对象分离出来,并对其进行特征提取以得到相应的文件对象特征。文件对象特征例如可以包括文件名称、文件格式、文件大小等特征。
[0085]
步骤s330.在主机的沙盒中运行文件对象,并根据运行结果确定与主机相关的文件运行特征。
[0086]
沙盒(sandbox)是一种安全机制,可以为运行中的文件对象提供隔离环境。沙盒可以严格控制文件对象在运行过程中所能访问的资源,例如,沙盒可以提供用后即回收的磁盘及内存空间。在沙盒中,网络访问、对真实系统的访问、对输入设备的读取通常被禁止或是严格限制,而且沙盒中的所有改动对操作系统也不会造成任何损失。本步骤将分离得到的文件对象在主机的沙盒中运行,可以安全可靠地对文件对象的运行过程进行监控,再根据文件对象的运行结果确定与主机相关的文件运行特征。文件运行特征例如可以包括主机的cpu状态、内存状态、网络出口流量状态等特征。
[0087]
步骤s340.根据协议流量特征、文件对象特征以及文件运行特征确定流量数据的流量特征。
[0088]
在应用层协议流量中存在文件对象的情况下,可以将以上步骤提取得到的协议流量特征、文件对象特征以及文件运行特征组合成为流量数据的流量特征。而如果应用层协议流量中没有携带文件对象,则可以直接根据协议流量特征确定相应的流量数据的流量特征。
[0089]
如果根据流量特征判断监听到的流量数据为恶意流量,那么该恶意流量可能会产
生入侵主机等恶意攻击行为,因此也会对主机的安全状态产生一定程度的影响。图4示意性地示出了本公开一些实施例中获取主机安全状态信息的步骤流程图。如图4所示,在以上实施例的基础上,步骤s120中的获取主机的安全状态信息,可以包括以下步骤:
[0090]
步骤s410.获取主机的运行状态数据。
[0091]
步骤s420.根据运行状态数据以及恶意流量确定主机的安全状态信息。
[0092]
主机的运行状态数据是通过采集当前主机的本地信息得到的,基于对运行状态数据和恶意流量的分析可以确定当前主机安全状态信息。图5示意性地示出了本公开一些实施例中确定主机安全状态信息的步骤流程图。如图5所示,在以上实施例的基础上,步骤s420.根据运行状态数据以及恶意流量确定主机的安全状态信息,可以包括以下步骤:
[0093]
步骤s510.对运行状态数据进行特征提取以得到主机的状态特征。
[0094]
通过对运行状态数据进行特征提取,可以获得主机的cpu使用率、内存占用率、网络流量大小、root权限用户等多种状态数据。
[0095]
步骤s520.确定与恶意流量相对应的流量特征。
[0096]
与恶意流量相对应的流量特征可以包括如以上实施例中通过特征提取得到的协议流量特征、文件对象特征以及文件运行特征等多种特征。
[0097]
步骤s530.将状态特征以及流量特征输入预先训练的随机森林模型以得到主机的安全状态信息。
[0098]
随机森林模型是利用多棵决策树对样本进行训练并预测的一种分类器。本步骤利用随机森林模型可以对状态特征和流量特征进行分析以确定主机的安全状态信息。以二分类标识为例,本步骤可以将主机的安全状态信息分类为“安全”和“入侵”两种类型。
[0099]
利用区块链技术对主机的安全状态信息进行保存,可以在保证信息准确的前提下,在区块链网络的多个节点中进行数据共享。图6示意性地示出了本公开一些实施例中基于区块链保存安全状态信息的步骤流程图。如图6所示,在以上实施例的基础上,步骤s120中的将安全状态信息保存至安全状态区块链,可以包括以下步骤:
[0100]
步骤s610.将主机的网络地址以及安全状态信息保存在待共识的当前安全状态区块的区块主体中。
[0101]
组成安全状态区块链的每个安全状态区块都包括有区块头和区块主体两部分数据存储区域,其中区块主体用于存储当前安全状态区块中记录的全部数据,例如主机的网络地址以及安全状态信息便保存在当前安全状态区块的区块主体中。区块头是用于存储当前安全状态区块与上一安全状态区块的链接信息,利用区块头中存储的数据可以将所有安全状态区块逐一链接形成完整的安全状态区块链。
[0102]
步骤s620.在满足区块生成条件时,获取安全状态区块链中上一安全状态区块的区块头数据,并根据区块头数据计算得到父区块哈希值。
[0103]
在满足一定的区块生成条件条件时,本步骤可以获取安全状态区块链网络中的上一安全状态区块(即最近生成的新的安全状态区块)的区块头数据,根据该区块头数据可以计算得到当前安全状态区块的父区块哈希值。例如可以使用sha256算法对上一安全状态区块的区块头数据进行哈希运算得到一哈希值,以作为当前安全状态区块的父区块哈希值。本步骤中的区块生成条件可以是距离上一安全状态区块的生成时间达到一时间阈值,也可以是当前安全状态区块的区块主体中存储的数据达到一数据量阈值,另外还可以是其他的
用于触发新区块生成的任意预设条件,本实施例对此不做特殊限定。
[0104]
步骤s630.根据当前安全状态区块的区块主体中保存的数据计算当前安全状态区块的区块主体哈希值。
[0105]
当前安全状态区块的区块主体中存储有在一段时间内形成的主机的网络地址以及安全状态信息。根据区块主体中保存的数据,本步骤可以得到一哈希值作为当前安全状态区块的区块主体哈希值。以哈希编码为例,区块主体中的所有网络地址以及安全状态信息可以以默克尔树(merkle tree)的形式保存在区块主体中。具体可以将网络地址以及安全状态信息保存在默克尔树的叶子节点中,将每两个相邻的叶子节点中保存的网络地址和安全状态信息进行组合后再次做哈希运算即可得到一个子节点中保存的哈希值。采用这种对子节点存储的哈希值两两组合逐层向上做哈希运算的方式,最终可以得到一个根节点哈希值,该根节点哈希值即可以作为当前安全状态区块的区块主体哈希值。
[0106]
步骤s640.将父区块哈希值、区块主体哈希值以及当前时间的时间戳保存在当前安全状态区块的区块头中。
[0107]
由步骤s620和步骤s630分别计算得到父区块哈希值和区块主体哈希值后,本步骤可以根据当前时间生成一时间戳,该时间戳用于记录当前安全状态区块的生成时间。然后可以将父区块哈希值、区块主体哈希值以及时间戳共同保存在当前安全状态区块的区块头中。
[0108]
步骤s650.将当前安全状态区块广播至安全状态区块链网络以对当前安全状态区块进行共识认证,并在认证通过时将当前安全状态区块链接至安全状态区块链上。
[0109]
完成区块头数据的保存后,本步骤将把由区块头和区块主体构成的当前安全状态区块广播至安全状态区块链网络。在通过共识认证后,由安全状态区块链网络中的全部或者部分区块链节点对当前安全状态区块进行保存,即完成当前安全状态区块在安全状态区块链的入链过程。
[0110]
图7示意性地示出了本公开一些实施例中基于区块链保存日志的步骤流程图。如图7所示,在以上实施例的基础上,步骤s130中的将入侵日志和安全状态信息保存至日志存储区块链,可以包括以下步骤:
[0111]
步骤s710.将主机的网络地址、入侵日志以及安全状态信息保存在待共识的当前日志存储区块的区块主体中。
[0112]
组成日志存储区块链的每个日志存储区块都包括有区块头和区块主体两部分数据存储区域,其中区块主体用于存储当前日志存储区块中记录的全部数据,例如主机的网络地址、入侵日志以及安全状态信息便保存在当前日志存储区块的区块主体中。区块头是用于存储当前日志存储区块与上一日志存储区块的链接信息,利用区块头中存储的数据可以将所有日志存储区块逐一链接形成完整的日志存储区块链。
[0113]
步骤s720.在满足区块生成条件时,获取日志存储区块链中上一日志存储区块的区块头数据,并根据区块头数据计算得到父区块哈希值。
[0114]
在满足一定的区块生成条件条件时,本步骤可以获取日志存储区块链网络中的上一日志存储区块(即最近生成的新的日志存储区块)的区块头数据,根据该区块头数据可以计算得到当前日志存储区块的父区块哈希值。例如可以使用sha256算法对上一日志存储区块的区块头数据进行哈希运算得到一哈希值,以作为当前日志存储区块的父区块哈希值。
本步骤中的区块生成条件可以是距离上一日志存储区块的生成时间达到一时间阈值,也可以是当前日志存储区块的区块主体中存储的数据达到一数据量阈值,另外还可以是其他的用于触发新区块生成的任意预设条件,本实施例对此不做特殊限定。
[0115]
步骤s730.根据当前日志存储区块的区块主体中保存的数据计算当前日志存储区块的区块主体哈希值。
[0116]
当前日志存储区块的区块主体中存储有在一段时间内形成的主机的网络地址、入侵日志以及安全状态信息。根据区块主体中保存的数据,本步骤可以得到一哈希值作为当前日志存储区块的区块主体哈希值。以哈希编码为例,区块主体中的所有网络地址、入侵日志以及安全状态信息可以以默克尔树(merkle tree)的形式保存在区块主体中。具体可以将网络地址、入侵日志以及安全状态信息保存在默克尔树的叶子节点中,将每两个相邻的叶子节点中保存的网络地址、入侵日志和安全状态信息进行组合后再次做哈希运算即可得到一个子节点中保存的哈希值。采用这种对子节点存储的哈希值两两组合逐层向上做哈希运算的方式,最终可以得到一个根节点哈希值,该根节点哈希值即可以作为当前日志存储区块的区块主体哈希值。
[0117]
步骤s740.将父区块哈希值、区块主体哈希值以及当前时间的时间戳保存在当前日志存储区块的区块头中。
[0118]
由步骤s720和步骤s730分别计算得到父区块哈希值和区块主体哈希值后,本步骤可以根据当前时间生成一时间戳,该时间戳用于记录当前日志存储区块的生成时间。然后可以将父区块哈希值、区块主体哈希值以及时间戳共同保存在当前日志存储区块的区块头中。
[0119]
步骤s750.将当前日志存储区块广播至日志存储区块链网络以对当前日志存储区块进行共识认证,并在认证通过时将当前日志存储区块链接至日志存储区块链上。
[0120]
完成区块头数据的保存后,本步骤将把由区块头和区块主体构成的当前日志存储区块广播至日志存储区块链网络。在通过共识认证后,由日志存储区块链网络中的全部或者部分区块链节点对当前日志存储区块进行保存,即完成当前日志存储区块在日志存储区块链的入链过程。
[0121]
需要说明的是,虽然以上示例性实施方式以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或者必须执行全部的步骤才能实现期望的结果。附加地或者备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
[0122]
图8示意性地示出了本公开一些实施例中基于区块链的主机安全监控装置的组成框图。如图8所示,主机安全监控装置800主要可以包括:
[0123]
流量数据监听单元810,被配置为监听主机在网络通信中的流量数据,并判断流量数据是否为恶意流量。
[0124]
安全状态保存单元820,被配置为若流量数据为恶意流量,则获取主机的安全状态信息,并将安全状态信息保存至安全状态区块链。
[0125]
日志存储单元830,被配置为生成对应于恶意流量的入侵日志,并将入侵日志和安全状态信息保存至日志存储区块链。
[0126]
在本公开的一些实施例中,基于以上各实施例,流量数据监听单元810可以进一步
包括:
[0127]
流量特征提取单元,被配置为对流量数据进行特征提取以得到流量数据的流量特征;
[0128]
第一模型预测单元,被配置为将流量特征输入预先训练的支持向量机模型,以通过支持向量机模型识别流量数据的数据类型,数据类型包括正常流量和恶意流量。
[0129]
在本公开的一些实施例中,基于以上各实施例,流量特征提取单元可以进一步包括:
[0130]
协议流量特征提取单元,被配置为获取流量数据中的应用层协议流量,并对应用层协议流量进行特征提取以得到应用层协议流量的协议流量特征;
[0131]
文件对象特征提取单元,被配置为当应用层协议流量中存在文件对象时,对文件对象进行特征提取以得到文件对象的文件对象特征;
[0132]
文件运行特征提取单元,被配置为在主机的沙盒中运行文件对象,并根据运行结果确定与主机相关的文件运行特征;
[0133]
第一流量特征确定单元,被配置为根据协议流量特征、文件对象特征以及文件运行特征确定流量数据的流量特征。
[0134]
在本公开的一些实施例中,基于以上各实施例,安全状态保存单元820可以包括:
[0135]
运行状态数据获取单元,被配置为获取主机的运行状态数据;
[0136]
安全状态信息确定单元,被配置为根据运行状态数据以及恶意流量确定主机的安全状态信息。
[0137]
在本公开的一些实施例中,基于以上各实施例,安全状态信息确定单元可以包括:
[0138]
状态特征提取单元,被配置为对运行状态数据进行特征提取以得到主机的状态特征;
[0139]
第二流量特征确定单元,被配置为与恶意流量相对应的流量特征;
[0140]
第二模型预测单元,被配置为将状态特征以及流量特征输入预先训练的随机森林模型以得到主机的安全状态信息。
[0141]
在本公开的一些实施例中,基于以上各实施例,安全状态保存单元820还包括:
[0142]
第一区块主体保存单元,被配置为将主机的网络地址以及安全状态信息保存在待共识的当前安全状态区块的区块主体中;
[0143]
第一父区块哈希值生成单元,被配置为在满足区块生成条件时,获取安全状态区块链中上一安全状态区块的区块头数据,并根据区块头数据计算得到父区块哈希值;
[0144]
第一区块主体哈希值生成单元,被配置为根据当前区块的区块主体中保存的数据计算当前安全状态区块的区块主体哈希值;
[0145]
第一区块头保存单元,被配置为将父区块哈希值、区块主体哈希值以及当前时间的时间戳保存在当前安全状态区块的区块头中;
[0146]
第一区块链接单元,被配置为将当前安全状态区块广播至安全状态区块链网络以对当前安全状态区块进行共识认证,并在认证通过时将当前安全状态区块链接至安全状态区块链上。
[0147]
在本公开的一些实施例中,基于以上各实施例,日志存储单元830可以包括:
[0148]
第二区块主体保存单元,被配置为将主机的网络地址、入侵日志以及安全状态信
息保存在待共识的当前日志存储区块的区块主体中;
[0149]
第二父区块哈希值生成单元,被配置为在满足区块生成条件时,获取日志存储区块链中上一日志存储区块的区块头数据,并根据区块头数据计算得到父区块哈希值;
[0150]
第二区块主体哈希值生成单元,被配置为根据当前日志存储区块的区块主体中保存的数据计算当前日志存储区块的区块主体哈希值;
[0151]
第二区块头保存单元,被配置为将父区块哈希值、区块主体哈希值以及当前时间的时间戳保存在当前日志存储区块的区块头中;
[0152]
第二区块链接单元,被配置为将当前日志存储区块广播至日志存储区块链网络以对当前日志存储区块进行共识认证,并在认证通过时将当前日志存储区块链接至日志存储区块链上。
[0153]
上述基于区块链的主机安全监控装置的具体细节已经在对应的基于区块链的主机安全监控方法中进行了详细的描述,因此此处不再赘述。
[0154]
下面结合一具体应用场景对本公开以上实施例中的基于区块链的主机安全监控方法以及基于区块链的主机安全监控装置的细节做出说明。
[0155]
图9示意性地示出了本公开提供的一种主机安全监控系统的整体架构。如图9所示,主机安全监控系统900主要包括安全管理中枢910、本地入侵检测模块920和日志存储模块930三个部分。
[0156]
安全管理中枢910主要负责本地入侵检测模块920的管理维护操作,将人工训练优化的机器学习检测模型进行分发,同时可以从日志存储模块930获取日志并对日志结果进行展示。
[0157]
本地入侵检测模块920部署在系统监控下的每个主机的操作系统上,是主机安全安全监控系统的末端节点,本地入侵检测模块920对当前主机进行定时扫描及实时流量监控,负责识别攻击行为,记录攻击日志和时间戳,维护主机安全状态标识,计算主机安全状态、日志、时间戳的哈希。
[0158]
本地入侵检测模块920主要可以包括四个子模块:本地信息采集模块921、本地流量监控模块922、入侵判断模块923、主机安全状态标识模块924。主机安全状态包括“安全”和“入侵”,入侵指主机被成功入侵。
[0159]
本地信息采集模块921负责采集本地客户端的各种状态信息。
[0160]
本地流量监控模块922负责对当前主机的通信流量进行实时监听。
[0161]
入侵判断模块923通过安全检测模型对本地信息采集和流量嗅探的的结果做出判断,从而做进一步响应。
[0162]
图10示意性地示出了安全检测模型的检测判断原理示意图。如图10所示,本地流量监控模块922通过监听当前主机的通信流量可以得到网络流量数据集1010,然后将流量数据中的应用层协议流量进行特征提取得到协议流量特征。如果流量数据中包含文件,则将文件提取出来后在沙箱中执行并提取文件本身的文件对象特征及执行文件后的文件运行特征。
[0163]
其中,协议流量特征主要可以包括:源主机网络地址、源主机端口、目的主机网络地址、目的主机端口、协议类型、连接时间、请求包长度、请求包内容、响应包长度、响应包内容、前p个通信连接中与当前数据包相同的个数、源主机前q次的安全状态标识、源主机的当
前安全状态标识。p和q为预设数量,例如p可以取值为50,q可以取值为5
[0164]
文件对象特征以及文件运行特征主要可以包括:文件名、文件哈希、用户执行权限、cpu状态、内存状态、硬盘读写状态、网络出口流量状态、系统用户变化情况、是否包含守护进程、守护进程名、shell命令执行记录、主机防火墙配置变化。
[0165]
以上流量数据的流量特征可以被输入至入侵判断模块923,然后由支持向量机模型1020根据流量数据的特征判断当前监听到的流量数据是否为正常流量或者恶意流量。
[0166]
如果判断流量数据为正常流量,则直接输出当前判断结果为安全。
[0167]
如果判断流量数据为恶意流量,则需要继续判断在该恶意流量的攻击下当前主机是否被入侵成功。
[0168]
本地信息采集模块921通过采集本地信息可以得到主机的本地特征数据集1030。通过对本地特征数据集1030进行特征提取可以得到关于运行状态数据的状态特征。
[0169]
关于运行状态数据的状态特征主要可以包括:cpu使用率、内存占用率、网络流量大小、root权限用户、系统用户变化情况、主要命令文件链接位置、主要命令文件哈希、所有用户的前s次登录状态、用户前t条shell执行记录。s和t均为预设数量,例如s可以取值为5,t可以取值为100。
[0170]
将当前主机的状态特征以及恶意流量的流量特征共同输入至入侵判断模块923,然后由随机森林模型1040根据状态特征和流量特征判断当前主机是否被入侵成功,同时输出相应的判断结果。
[0171]
主机安全状态标识模块924基于入侵判断模块923的判断结果可以标识当前主机安全状态,当发现攻击流量或主机行为特征匹配到入侵规则时,标记主机状态为“入侵”,开启日志记录功能;发现存在入侵主机向宿主机发送恶意流量但未入侵成功时,只开启日志记录功能。
[0172]
当主机被入侵时标记当前状态为入侵,将当前主机时间戳、安全状态标识、哈希(时间戳+主机ip+主机安全状态)写入与本地入侵检测模块920相对应的安全状态区块链;将当前主机时间戳、安全状态标识、入侵日志、哈希(时间戳+主机ip+入侵日志+主机安全状态)上报到日志存储模块930,由日志存储模块930写入日志存储区块链。
[0173]
安全状态区块链主要维护的是主机的安全标识信息,保证了每个主机在通信时知道对方主机的安全状态标识,当本地入侵检测模块920检测到安全状态标识为“入侵”的主机向宿主机发起连接后,可以对双方通信流量进行分析,并将攻击行为上报到日志存储模块。
[0174]
针对攻击网络流量的入侵日志,可以分为两大等级:入侵行为、入侵成功。具体可以通过设置阈值来调整上报到日志存储模块930的入侵日志的等级。
[0175]
日志存储模块930是主机安全监控系统900的信息汇集地,采用区块链技术对客户端上报日志进行存储。日志存储区块链相比安全状态区块链增加了入侵日志,将入侵日志存储从客户端转移到日志存储区块链,能够有效降低客户端的负载,确保信息的不可否认性和完整性。
[0176]
如图11所示,日志存储模块930包含多个构成区块链网络的日志存储节点931,每个日志存储节点均部署在一台日志服务器上,由这些节点共同维护日志存储区块链。
[0177]
本地入侵检测模块920随机选取n个可正常通信的日志存储节点931并向其发送入
侵日志,其中n>=2,防止日志记录模块由于单点故障导致日志丢失。日志存储模块节点在接收到数据后,对数据进行校验,校验成功后写入日志存储区块链中。
[0178]
图12示意性地示出了基于主机安全监控系统的主机安全监控流程。如图12所示,该监控流程主要可以包括以下步骤:
[0179]
步骤s1201.获取主机通信流量。
[0180]
步骤s1202.获取主机本地状态。
[0181]
步骤s1203.对主机通信流量进行预处理,以确定文件对象及其他流量。
[0182]
步骤s1204.在沙盒中执行文件对象并提取特征。
[0183]
步骤s1205.将其他流量的特征以及执行文件对象获得的特征输入至支持向量机模型。
[0184]
步骤s1206.根据支持向量机的输出结果判断当前通信的流量数据是否为恶意流量。如果不是恶意流量则结束流程,如果是恶意流量则执行步骤s1207。
[0185]
步骤s1207.将恶意流量的特征以及主机本地状态的特征输入至随机森林模型。
[0186]
步骤s1208.根据随机森林模型的输出结果判断当前主机是否被入侵成功。如果入侵失败则结束流程,如果入侵成功则执行步骤s1209和步骤s1210。
[0187]
步骤s1209.记录时间戳、哈希和主机状态,保存至安全状态区块链并结束流程。
[0188]
步骤s1210.记录时间戳、日志、哈希和主机状态,保存至日志存储区块链并结束流程。
[0189]
本公开将入侵检测能力赋予组织中的每个资产,可以显著提高组织的入侵检测能力,能够更加全面的监测到组织所属资产的历史状态信息,针对攻击行为能够快速可信的记录入侵日志,帮助组织及时确定攻击影响范围,提升组织应急响应的能力,保障组织的业务连续性,同时可信的日志保证了取证的有效性。
[0190]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0191]
在本公开的示例性实施方式中,还提供一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时可实现本公开的上述的方法。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码;该程序产品可以存储在一个非易失性存储介质(可以是cd-rom、u盘或者移动硬盘等)中或网络上;当所述程序产品在一台计算设备(可以是个人计算机、服务器、终端装置或者网络设备等)上运行时,所述程序代码用于使所述计算设备执行本公开中上述各示例性实施例中的方法步骤。
[0192]
参见图13所示,根据本公开的实施方式的用于实现上述方法的程序产品1300,其可以采用便携式紧凑磁盘只读存储器(cd-rom)并包括程序代码,并可以在计算设备(例如个人计算机、服务器、终端装置或者网络设备等)上运行。然而,本公开的程序产品不限于此。在本示例性实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0193]
所述程序产品可以采用一个或者多个可读介质的任意组合。可读介质可以是可读
信号介质或者可读存储介质。
[0194]
可读存储介质例如可以为但不限于电、磁、光、电磁、红外线或半导体的系统、装置或器件、或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件或者上述的任意合适的组合。
[0195]
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任意可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0196]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等,或者上述的任意合适的组合。
[0197]
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如c语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户计算设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络(包括局域网(lan)或广域网(wan)等)连接到用户计算设备;或者,可以连接到外部计算设备,例如利用因特网服务提供商来通过因特网连接。
[0198]
在本公开的示例性实施方式中,还提供一种电子设备,所述电子设备包括至少一个处理器以及至少一个用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为经由执行所述可执行指令来执行本公开中上述各示例性实施例中的方法步骤。
[0199]
下面结合图14对本示例性实施方式中的电子设备1400进行描述。电子设备1400仅仅为一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0200]
参见图14所示,电子设备1400以通用计算设备的形式表现。电子设备1400的组件可以包括但不限于:至少一个处理单元1410、至少一个存储单元1420、连接不同系统组件(包括处理单元1410和存储单元1420)的总线1430、显示单元1440。
[0201]
其中,存储单元1420存储有程序代码,所述程序代码可以被处理单元1410执行,使得处理单元1410执行本公开中上述各示例性实施例中的方法步骤。
[0202]
存储单元1420可以包括易失性存储单元形式的可读介质,例如随机存取存储单元1421(ram)和/或高速缓存存储单元1422,还可以进一步包括只读存储单元1423(rom)。
[0203]
存储单元1420还可以包括具有一组(至少一个)程序模块1425的程序/实用工具1424,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0204]
总线1430可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用各种总线结构中的任意总线结构的局域总线。
[0205]
电子设备1400也可以与一个或多个外部设备1500(例如键盘、指向设备、蓝牙设备等)通信,还可以与一个或者多个使得用户可以与该电子设备1400交互的设备通信,和/或与使得该电子设备1400能与一个或多个其他计算设备进行通信的任何设备(例如路由器、调制解调器等)通信。这种通信可以通过输入/输出(i/o)接口1450进行。并且,电子设备1400还可以通过网络适配器1460与一个或者多个网络(例如局域网(lan)、广域网(wan)和/或公共网络,例如因特网)通信。如图14所示,网络适配器1460可以通过总线1430与电子设备1400的其他模块通信。应当明白,尽管图中未示出,可以结合电子设备1400使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0206]
本领域技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0207]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
[0208]
上述所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中,如有可能,各实施例中所讨论的特征是可互换的。在上面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组件、材料等。在其它情况下,不详细示出或描述公知结构、材料或者操作以避免模糊本公开的各方面。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1