首页> 中国专利> 基于通用范化标签语言的安全信息管理系统及方法

基于通用范化标签语言的安全信息管理系统及方法

摘要

基于通用范化标签语言的安全信息管理系统及方法,基于该VNML语言的语法规则来进行系统设计;该系统从所有的入侵检测系统、防火墙、操作系统、应用软件和防病毒系统中以主动或者被动方式获得安全事件;并根据这些事件数据格式,转化成符合VNML语言标准格式的规则。该系统包括:范化调度模块,数据结构管理模块,规则管理模块,映射管理模块,类型转换模块。该启明星辰范化标签语言可以根据不同用户的日志或告警的样本格式,自定义各类数据结构及其范化策略,设计出满足不同用户需求的范化安全信息管理系统。该系统可以提供良好的用户可定义接口,便于开发者和用户现场维护和管理。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-09-25

    未缴年费专利权终止 IPC(主分类):H04L9/00 授权公告日:20110511 终止日期:20171008 申请日:20081008

    专利权的终止

  • 2011-05-11

    授权

    授权

  • 2009-05-20

    实质审查的生效

    实质审查的生效

  • 2009-03-25

    公开

    公开

说明书

技术领域

本发明涉及一种基于通用范化标签语言的安全信息管理系统及方法,属于安全信息管理系统(Security Information Manage System,简称SIMS)领域;具体属于安全信息管理系统的核心关键技术——安全事件数据范化技术领域。

背景技术

安全信息管理(Security Information Manage,简称SIM)技术用于搜集、分析和关联来自于整个企业的安全事件信息,可以分为四个不同的阶段:规范化、汇总、关联和虚拟化。安全信息管理技术具体是指搜集和分析安全事件信息,及时地检测到安全事件,并采取相应的网络安全管理措施。

传统安全系统是分别独立逐步的建立起来的,比如防病毒系统、防火墙系统、入侵检测系统,各个系统都有单独的管理员或者管理控制台。这种相对独立的部署方式带来的问题是各个设备需要进行独立的配置,而各个引擎也需要配备独立的事件报警系统,这使得各类分散独立的安全事件信息难以形成全局的风险观点,导致了安全策略和配置难于统一协调。因此,对各类安全防护系统进行平台化整合提出了需求。

传统的安全管理方式是将分散在各地、不同种类的安全防护系统进行分别管理,这导致安全信息分散互不相通,安全策略难以保持一致,因此这种传统的安全管理运行方式就成为许多安全隐患形成的根源。平台化整合是针对传统安全管理方式的一种重大变革。网络安全管理平台可将不同位置、不同安全系统中分散且海量的单一安全事件进行汇总、过滤、收集和关联分析,得出全局性的安全风险事件,并最终形成统一的安全决策,对安全事件进行响应和处理。

SIMS需要收集各类安全设备、网络设备、主机以及应用系统的日志、告警数据,然后将这些数据合规成若干标准格式,提供SOC分析,这个过程就称之为“范化”。传统SIMS将搜集到的日志和预警安全事件数据转化成XML格式,其范化方式通常是使用XML,按照固定分类的方式对数据进行范化。比如根据设备的主要类型,区分为防火墙、IDS、AV类别,不同类别的数据,范化成不同的标准格式。这种方法的缺点是:无法范化未知的数据类型;无法对提取的数据进行自定义的运算;无法根据给定的格式或者标准,修改范化后的目标。

发明内容

为了克服现有技术的上述不足,本发明提供一种基于通用范化标签语言(Venus Normalization Markup Language,简称VNML)的安全信息管理系统及方法。

本发明解决其技术问题所采用的技术方案是:

一种基于通用范化标签语言的安全信息管理系统。该系统基于VNML语言的语法规则来进行系统设计;从所有的入侵检测系统、防火墙、操作系统、应用软件和防病毒系统中获得(主动或者被动方式)安全事件;并根据这些事件数据格式,转化成符合VNML语言标准格式的规则。

所述VNML语言以XML的范化标签语言为基础,利用了XML语言的元素来表示类别,利用XML的属性来表示特性;同时,引入了一些扩展的特征,主要包括类型、常量、函数;定义范化引擎和范化策略,根据范化引擎加载范化策略,并根据待范化的数据,选择合适的范化规则进行日志样本数据的范化。

所述一种基于通用范化标签语言的安全信息管理系统包括:

范化调度模块,负责对日志样本数据进行范化处理,并将范化后的数据输出,实现系统的范化功能;

数据结构管理模块,负责组织、查找自定义的数据结构;

规则管理模块,负责加载范化策略,并将所加载的范化策略组织成内存中的树状结构,从而实现高效查找匹配;

映射管理模块,负责加载映射策略,并根据所述查找匹配的结果,实现日志样本数据字段与数据结构字段之间的映射;

类型转换模块,实现事件数据类型转换,负责将不同格式的数据转换成标准格式,并提供不同类型数据之间的转换方法。

其中,范化调度模块与数据结构管理模块、规则管理模块、映射管理模块和类型转换模块之间进行控制流的连接,范化调度模块发出控制指令,负责调度数据结构管理模块、规则管理模块、映射管理模块和类型转换模块;规则管理模块以数据流的方式与范化调度模块、数据结构管理模块、映射管理模块和类型转换模块相连接,传递数据信息。

根据本发明提供的系统还可以有以下技术特征:

所述范化调度模块负责调度、管理数据结构管理模块、规则管理模块、映射管理模块、类型转换模块4个功能模块,使用“频繁使用优先算法”查找与事件数据相匹配的范化规则,并选择合适的映射规则进行规则映射,然后调用类型转换模块,对事件数据进行范化;所述规则管理模块负责将范化规则组织成一个规则树,并提供正则表达式匹配、规则查找接口,并将查找的相关关键字段以链表形式输出;所述映射管理模块负责将所加载的映射策略组织成内存中的B+树,并提供映射查找接口,利用B+树实现高效的查找算法;所述类型转换模块:将事件数据由字符串形式转换成IP、MAC、时间、整数数据类型,同时能将数据写到指定的内存位置。

所述基于通用范化标签语言的安全信息管理系统的连接关系如下:范化调度模块负责调度数据结构管理模块、规则管理模块、映射管理模块和类型转换模块。具体地,当所收集的日志样本经过数据分析后,应用自定义的VNML语言定义数据结构,并将日志样本数据输入到范化调度模块;范化调度模块根据日志样本数据去调度规则管理模块,从而进行规则查询与匹配,如果匹配成功,就将范化调度所得的日志样本数据结果与已定义的数据结构相关联,同时调度映射模块;查询合适的映射策略,利用查询到的合适的映射策略进行日志样本数据与已定义的数据结构之间的映射,如果日志样本数据与数据结构映射成功,则将该日志样本数据输出以备类型转换;范化调度模块调度类型转换模块,接收由规则管理模块输出的事件数据,对该事件数据执行范化操作,输出范化结果。

一种基于通用范化标签语言的安全信息管理方法,其包括以下步骤:

步骤1分析日志:收集日志或者告警样本,并对所收集到的日志或者告警样本按照VNML语言的规范进行日志样本分析;

步骤2定义范化数据结构:应用自定义的VNML语言定义可以合理范化给定日志样本数据的数据结构;

步骤3定义规则:按照VNML语言的语法规则,编制出合理的范化策略以及映射策略,并定义相应的范化规则和映射规则;

步骤4加载策略:通过范化引擎加载范化策略;

步骤5查找匹配:根据待范化的数据,选择合适的规则进行范化,具体做法是,查找匹配的规则,每成功匹配一次,就执行一个对应的范化动作;

步骤6关联数据结构:将范化操作得到的日志样本数据与已定义的数据结构关联;

步骤7映射处理:根据映射规则决定是否做映射处理。如果字段的映射标记为1,则从映射文件中查找指定字段的映射表。具体方法是,以字段现有的值为源值(SourceValue),获得映射值(GxValue),并以映射值作为最后的值写到内存中;

步骤8类型转换:负责执行格式与类型转换操作,具体地,所述类型转换步骤负责将不同格式的数据转换成标准格式,并提供不同类型数据之间的转换方法;

步骤9输出结果:输出范化后的结果。

本发明解决其技术问题所采用的技术方案是:本发明的有益效果:本发明提供了一套基于XML的通用范化标签语言VNML,根据日志或者告警的样本格式,自定义数据结构以及范化策略,并提供良好的用户可定义接口,便于开发者和用户现场维护。

附图说明

图1为根据本发明的安全信息管理系统的范化引擎结构示意图;

图2为根据本发明的安全信息管理方法整体步骤图;

图3为根据本发明的范化管理模块工作图;

图4是根据本发明的范化调度流程图。

下面结合附图和实施例对本发明进一步说明。

具体实施方式

实施例1本实施例对VNML语言的语法规则作详细描述。

VNML语言基于XML语言,利用了XML语言的元素来表示类别,利用XML的属性来表示特性。同时引入了一些扩展的特征,主要包括类型、常量、函数。关于VNML语言语法规则,详细说明如下

1.命名规范

首字母大写的英文字母、数字、下划线组合方式,如Name,SubNet都是合法的名字。

2.类型

VNML语言中引入了类型的概念,一种类型用于表示同一种格式和含义的数据,并且,这些类型和C、C++语言中的类型有对应关系。

3.常量

VNML语言中的常量,是用一些特定的数字来表示特定的含义,例如数字1024表示点分十进制的IP地址串。

4.函数

为了实现将提取后的数据执行二次运算或者其他逻辑处理,VNML语言中引入了函数的概念,以扩展范化引擎的功能。

函数的表示方式:

{Func(参数1,参数2,…)}

其中Func为函数名,小括号中的为参数列表,以,分割不同的参数。

特别要求:范化函数必须有返回值,如一个数值,或者一个串。不能返回空或者NULL。

5.数据结构定义规范

结构体基本信息描述:<Struct Name=″tsoc″Text=″事件″Type=″8197″Size=″1304″/>;结构体基本信息详细说明见表1所示。

表1结构体基本信息

结构体中字段信息描述:<Field Name=″Version″Text=″版本″Type=″ULONG″Offset=″8″Size=″″/>;详细描述见表2。

表2字段信息描述

6.字段类型列表(如表3所示)

表3字段类型列表

 

类型名对应的C语言类型长度示例INTintsizeof(int)1,-2ULONGunsigned longsizeof(unsigned long)129834STRchar*自定义,由Size的值决定″a sample″DOUBLEdoublesizeof(double)78.2345  IP           unsigned long                   sizeof(unsigned long)33663168表示IP地址                  192.168.1.2           TIME           unsigned longSizeof                    (unsigned long)1203409292表示2008-2-19                       16∶21∶32GMT+8        

7.范化规则定义规范

范化规则示例如下:

<Rule Name=″CPU″Pattern=″user=(\d+)system=(\d+)PerfIP=(\S+)″Standard=″status″DevType=″1234″

Action=″ip=$3|Cpu_Usage={CALC(($1+$2)/100.0)}″/>

范化规则的属性说明,详见表4:

表4范化规则属性表

需要着重说明的是Action,当正则表达式匹配成功后,范化时执行何种动作,完全由此属性的值决定,因此,以下详细说明Action属性的定义规范。

8.范化单元NUnit

Action是范化单元的集合,因此,Action可以表述为:

              Action::=NUnit[|NUnit]

一个范化单元描述一个字段的范化方法,如下:

    NUnit::=Field=Value,Option(default),Map(default=0)

上述表达式的意义是字段Field的值为Value,格式与类型转换方式由Option决定,是否需要值映射由Map决定,default表示缺省值,因此上述表达式可以简化为:Field=Value;详见表5。

表5范化单元结构一览

范化常量对应的含义如表6所示:

表1 范化常量

 

数值意义备注1024点分十进制表示IP地址如192.168.1.1102816常用时间格式:yyyy-MM-dd hh:mm:ss2004-05-1311:04:54    3584日志里面没有表示时间的字段,以系统当前                                      时间填充                              11264十六进制方式表示Ox2A4D1

映射规则属性表如表7所示:

表7 映射规则属性表

 

字段名作用Mapping表示这是一个映射SourceValue表示映射的源SIMSValue表示映射的目标

9.数值运算函数CALC说明

函数声明:

{CALC(运算表达式)}

其中运算表达式可以是四则混合运算表达式、逻辑运算表达式、位运算表达式等。且这些表达式中的运算数,可以是从正则表达式中提取出来的,也就是说可以是动态传入的。

10.范化规则树

VNML语言功能的强大的另一个表现是,范化规则可以根据规则的重要性排序,而且能根据范化规则的逻辑关系分层,从而实现规则的嵌套。通过多层嵌套,可以构成一棵完满的规则树,借助树形结构,将设备的H志文件梳理分类,从而达到精确化日志类别的目的。

规则的嵌套层级,建议以不超过3级为合理。层级越深,分类越精细,但查找性能也会越差。因此在编写策略的时候,应妥善处理层级与分类粒度的关系。

规则树之间形成规则森林,规则与规则的先后顺序可能会影响范化结果,同理,规则树与规则树的先后顺序也可能影响范化结果。利用这个特性,可以实时调整规则或者规则树之间的优先级,以达到某一个特定的范化目标。

规则树示例如下:

<?xml version=″1.0″encoding=″GB2312″?>

<root>

  <!--SIMS范化策略3.0example-->

  <Rule Name=″r1″Pattern=″p1″Action=″a1″>

     <Rule Name=″r11″Pattern=″p11″Action=″a11″>

        <Rule Name=″r111″Pattern=″p111″Action=″a111″/>

        <Rule Name=″r112″Pattern=″p112″Action=″a112″/>

     </Rule>

     <Rule Name=″r12″Pattern=″p12″Action=″a12″>

        <Rule Name=″r121″Pattern=″p121″Action=″a121″/>

        <Rule Name=″r122″Pattern=″p122″Action=″a122″/>

     </Rule>

  </Rule>

  <RuleName=″r2″Pattern=″time=(\S+)(\S+)″Action=″DevTime=$1+

+$2,2816″>

       <Rule Name=″r21″Pattern=″p21″Action=″a21″>

          <Rule Name=″r211″Pattern=″p211″Action=″a211″/>

          <Rule Name=″r212″Pattern=″p212″Action=″a212″/>

       </Rule>

       <Rule        Name=″r22″          Pattern=″sip=(\S+)  dip=(\S+)″

Action=″SIP=$1,1024|DIP=$2,1024|RawID=traffic00257_Permit,,1″>

            <Rule Name=″r221″Pattern=″p221″Action=″a221″/>

            <Rule    Name=″r222″        Pattern=″level=(\d+)   protocol=(\w+)″

Action=″Level=$1,,1|Proto=$2,,1″/>

      </Rule>

  </Rule>

</root>

此规则树是一个深度为3,一级分支为2的示例规则。一般来说,一棵良好的规则树,应该是一级分支只有一个,深度不超过3的规则树。一级分支只有一个,意味着此类设备的日志有唯一的模式入口,从而为实现快速、精确查找创造了非常好的条件。

该VNML语言的先进之处在于:可以自定义范化后的数据结构;可以范化任意格式的文本数据,只需要写一些范化规则;可以动态调整范化规则的优先级;可以动态调整范化规则树的优先级;可以将提取后的值进行二次拼装,以形成特定的格式;可以将提取后的值进行运算,将运算结果提请范化;可以自定义范化函数,以便执行特定逻辑的运算;可以根据用户指定的事件标准进行范化,在用户现场就可以做,不需要修改程序。

实施例2如图1所示,该图中所示的系统是一个范化引擎组成结构的具体实施例。图中所示的范化引擎可以实现VNML语言的解释、编译;完成日志样本数据范化、数据格式与类型转换;以及将数据按指定的数据结构输出。该范化引擎主要由五大模块组成:数据结构模块、范化调度模块、规则管理模块、映射管理模块和类型转换模块。各模块的具体功能如下:

范化调度模块:是范化引擎的主模块,如图1所示的按照系统设计的处理流程,范化调度模块负责调度和管理数据结构管理模块、规则管理模块、映射管理模块、类型转换模块等4大功能模块,对日志样本数据进行范化处理,并将范化后的数据输出,实现系统的范化功能;

数据结构管理模块:负责加载、组织自定义的数据结构;

规则管理模块:负责将范化规则组织成一个规则树,并提供正则表达式匹配、规则查找接口,能将查找的相关关键字段以链表形式输出,在一个实施例中,应用规则管理模块负责加载范化策略,并将所加载的范化策略组织成内存中的树状结构,从而实现高效查找;

映射管理模块:负责加载映射策略,在一个实施例中,映射管理模块将所加载的映射策略组织成内存中的B+树,并提供映射查找接口,利用B+树实现高效的查找算法;

类型转换模块:实现事件数据类型转换,负责将不同格式的数据转换成标准格式,并提供不同类型数据之间的转换方法,在一个实施例中,将事件数据由字符串形式转换成IP、MAC、时间、整数等数据类型,同时能将数据写到指定的内存位置。

实施例3如图2所示,本发明具体步骤如下:首先是人工分析和定义阶段:分析日志样本数据,并定义范化的数据结构,应用自定义的VNML语言定义可以合理范化给定日志样本的数据结构;然后是装载所定义的数据结构和范化规则及映射规则,并通过范化引擎进行日志样本的数据范化。

实施例4如图2所示的范化引擎工作过程。该范化引擎首先将已定义的数据结构装载进来,同时,加载范化策略,所述范化策略包括范化规则和映射规则,并收集日志或者告警的样本进行数据接收;然后选择范化规则进行查找匹配;关联数据结构;进行映射处理;进行类型转换;输出范化结果。

为了详细描述整个范化系统的工作原理和工作流程,这里对入侵检测日志的范化过程做了最详尽的描述,通过入侵检测日志的范化,可以了解一条日志范化的全过程以及每一个具体的步骤。

实施例5如图3所示的范化管理模块功能图,在一个实施例中,应用范化管理模块,首先原始数据执行正则表达式匹配;然后对匹配结果执行范化运作;最后将运算结果写到指定的数据结构中。

实施例6如图4所示的范化调度流程图,在一个实施例中,范化调度过程如下:首先记录原始日志信息;然后查找匹配的规则链;查找数据结构体信息并对该结构体中的每一个字段进行范化;最后补充映射结果。

实施例7 入侵检测日志范化举例

步骤1分析日志

假设某一种NIDS产生的所有日志样本如下:

NIDS:    engine=192.168.19.110    time=2008-2-26    10:28:34   type=sign

sip=192.168.19.240sport=3025dip=202.106.196.115dport=53level=30 count=23

eid=16249875param=msg=DNS查询

NIDS:engine=192.168.19.110  time=2008-4-15  16:39:27  type=flow  subtype=ip

value1=192.168.19.235  value2=212.136.88.174  inbs=8919  outbs=0  inpks=3

outpks=0

分析上述日志样本发现,此NIDS能产生两种不同格式的日志,一种是特征事件(type=sign),另一种是异常流量事件(type=flow),但他们有一个共同的特征模式:NIDS:engine=time=type=

此模式可以作为此NIDS范化规则的总入口。

在特征事件中,级别(level)的取值范围如表8所示:

表8 级别(level)的取值范围

 

值域102030含义低级中级高级

由于安全管理平台中级别规定为1-5,具体含义如下表9:

表9 级别含义

 

值域12345含义低级中低中级中高高级

因此,由于两者的衡量标准不一样,需要做映射策略。

另外,在异常流量事件中,根据不同的异常流量,又细分为如表10所示的子类型(subtype):

表10 异常流量事件子类型

 

子类型  ip    portlengthprotocol含义ip流量端口流量长度流量协议流量

子类型的不一样,会决定value1和value2的含义不同,具体如表11所示:

表11 异常流量事件子类型的取值

 

子类型value1含义value2含义 ip第一个ip地址第二个ip地址port端口无效length长度无效protocol协议号无效

步骤2:定义数据结构

为了精确范化上述样本,需要根据上述资料以及分析结果定义对应的数据结构,一种为特征事件结构,一种为异常流量结构(设定文件名为:SIMSStructInfo.xml):

<!—IDS特征事件范化后数据结构nids→

<Struct Name=″nids″Text=″IDS告警″Type=″8200″Size=″288″>

  <Field Name=″Time″Text=″时间″Type=″TIME″Offset=″0″Size=″″/>

  <Field Name=″EngIP″Text=″引擎IP地址″Type=″IP″Offset=4″″Size=″″/>

  <Field Name=″Level″Text=″等级″Type=″ULONG″Offset=″8″Size=″″/>

  <Field Name=″Count″Text=″数量″Type=″ULONG″Offset=″12″Size=″″/>

  <Field Name=″EID″Text=″事件ID″Type=″STR″Offset=″16″Size=″64″/>

  <Field Name=″SIP″Text=″源IP地址″Type=″IP″Offset=″80″Size=″″/>

  <Field Name=″Sport″Text=″源端口″Type=″ULONG″Offset=″84″Size=″″/>

  <Field Name=″DIP″Text=″目的IP地址″Type=″IP″Offset=″88″Size=″″/>

  <Field Name=″Dport″Text=″目的端口″Type=″ULONG″Offset=″92″Size=″″/>

  <Field Name=″EventName″Text=″事件名″Type=″STR″Offset=″96″Size=″64″/>

  <Field Name=″Param″Text=″参数″Type=″STR″Offset=″160″Size=″128″/>

  </Struct>

<!—IDS异常流量事件范化后数据结构flow→

<Struct Name=″flow″Text=″IDS异常流量″Type=″8201″Size=″168″>

  <Field Name=″Time″Text=″时间″Type=″TIME″Offset=″0″Size=″″/>

  <Field Name=″EngIP″Text=″引擎IP地址″Type=″IP″Offset=4″″SiZe=″″/>

  <Field Name=″FlowType″Text=″流量类型″Type=″STR″Offset=″8″SiZe=″16″/>

  <Field Name=″Value1″Text=″流量可变值1″Type=″STR″Offset=″24″Size=″32″/>

  <Field Name=″Value2″Text=″流量可变值2″Type=″STR″Offset=″56″SiZe=″32″/>

  <Field Name=″Inbs″Text=″接收的字节数″Type=″ULONG″Offset=″88″SiZe=″″/>

  <Field Name=″Outbs″Text=″发送的字节数″Type=″ULONG″Offset=″92″Size=″″/>

  <Field Name=″Inpks″Text=″接收的包数″Type=″ULONG″Offset=″96″Size=″″/>

  <Field Name=″Outpks″Text=″发送的包数″Type=″ULONG″Offset=″100″Size=″″/>

  <Field Name=″FlowName″Tex亡=″流量名″Type=″STR″Offset=″104″Size=″64″/>

</Struct>

步骤3定义规则,包括定义范化规则和映射规则

定义范化规则示例(设定范化规则文件名为:NIDSRules.xml):

<!--IDS范化规则-->

<Normalize            Index=″0″        Version=″3″   DevType=″888″

    MappingFile=″NIDSMapping.xml″>

   <!--IDS范化规则总入口-->

          <RuleName=″NIDS″Pattern=″NIDS:engine=(\S+)time=(\S+\5+)

tyPe=\w+″Action=″Time=$2|EngIP=$1″>

  <!--IDS特征事件范化规则-->

        <Rule Name=″SIGN″Pattern=″type=sign sip=(\S+)sport=(\d+)dip=(\S+)

  dport=(\d+)level=(\d+)count=(\d+)eid=(\d+)param=(.*?)msg=(\S+)″

  Standard=″nids″

  Action=″Level=$7,,1|Count=$8|EID=$9|SIP=$3|SPort=$4|DIP=$5|DPort=$6|Eve

  ntName=$11|Param=$10″/>

  <!--IDS异常流量事件范化规则-->

       <RuleName=″FLOW″ Pattern=″type=flow subtype=(\w+) value1=(\5+)

  value2=(\S+) inbs=(\d+) outbs=(\d+) inpks=(\d+) outpks=(\d+)″

  Standard=″flow″

  Action=″FlowType=$1|Value1=$2|Value2=$3|Inbs=$4|Outbs=$5|Inpks=$6|Outpks

  =$7|FlowName=$1,,1″/>

  </Rule>

</Normalize>

这是一个有唯一入口的、深度为2的规则树,由于特征事件中的级别需要映射,因此注意到二级规则的第一个分支(<Rule Name=“SIGN”)的属性Action中的字段赋值表达式Level=$7,,1,根据VNML语言范化单元的描述规则,最后一个1表示字段Level有映射发生。同样,二级规则的第二个分支(<RuleName=“FLOW”)的属性Action中的字段赋值表达式FlowName=$1,,1,其中最后一个1也表示字段FlowName有映射。映射规则由MappingFile指定的文件来描述,在此策略中,也就是文件NIDSMapping.xml,具体如下:

<!--IDS映射规则-->

<Level>

  <Mapping SourceValue=″10″SIMSValue=″1″/>

  <Mapping SourceValue=″20″SIMSValue=″3″/>

  <Mapping SourceValue=″30″SIMSValue=″5″/>

</Level>

<FlowName>

  <Mapping Source Value=″ip″SIMSValue=″ip流量″/>

  <Mapping Source Value=″port″SIMSValue=″端口流量″/>

  <Mapping SourceValue=″length″SIMSValue=″长度流量″/>

  <Mapping SourceValue=″protocol″SIMSValue=″协议流量″/>

   </FlowName>

步骤4加载策略(范化规则和映射规则)

范化引擎初始化的时候,将依次加载上述3个文件SIMSStructInfo.xml、NIDSRules.xml、NIDSMapping.xml。

步骤5查找匹配

查找匹配就是查找符合条件的规则链的过程,具体的过程描述如下:

第一步:假设首先接收到了一条异常流量事件:

NIDS:engine=192.168.19.110time=2008-4-1516:39:27type=flow subtype=ipvalue1=192.168.19.235 value2=212.136.88.174 inbs=8919 outbs=0 inpks=3 outpks=0

范化模块收到此数据后,按层从上到下依次查找规则树。规则树的第一个一级规则为(<Rule Name=″NIDS″),将这条规则的Pattern与上述的异常流量事件相匹配,匹配过程如表12:

表12 第一次规则匹配过程

第二步:继续与一级规则(<Rule Name=“NIDS”)的下级规则匹配,第一个二级规则为(<Rule Name=“SIGN”),匹配过程如表13所示:

表13 第二次规则匹配过程

 

        原始数据NIDS:engine=192.168.19.110 time=2008-4-15 16:39:27type=flow     subtype=ip      value1=192.168.19.235                  value2=212.136.88.174 inbs=8919 outbs=0 inpks=3 outpks=0          Patterntype=sign sip=(|S+) sport=(|d+) dip=(|S+) dport=(\d+)                                                        level=(|d+) count=(|d+) eid=(|d+) param=(.*?) msg=(\S+)匹配结果匹配失败Standard      ActionLevel=$7,,1/Count=$8/EID=$9/SIP=$3/SPort=$4/DIP=$5/DPort=                                                                 $6/EventName=$11/Param=$10                                     执行Action不执行

第三步:由于第二步匹配失败,所以继续匹配同级的下一个规则(<RuleName=“FLOW”),匹配过程如下表:

表14 第三次规则匹配

由于此规则匹配成功了,而且由于此规则没有下级规则,因此整个查找规则的过程就到此为止了。此过程的成果就是每一次匹配成功后的Action执行后的数据。表15就是第一步和第三步的Action执行后的数据:

表15 匹配成功后的执行结果

整个过程匹配了3次才得到最后的结果。

步骤6关联数据结构

由上表可见,查找匹配结束后,得到了两组重要信息:Action和Standard,根据这两组信息,执行如下操作:

根据Standard的值(flow)找到对应的数据结构定义flow,如表16所示:

表16 关联数据结构

将Action中所有字段分解,得到表17:

表17 Action中字段分解表

 

字段名范化常量映射备注Time2008-4-1516:39:2700EngIP192.168.19.11000       FlowType  ip 0 0Value1192.168.19.23500Value2212.136.88.17400Inbs891900Outbs000Inpks300Outpks000       FlowName  ip 0 1

将上述两个表格合并,得到表18:

表18 根据关联字段进行字段合并

步骤7映射处理

由于上表中,字段FlowName映射标记为1,表明该字段需要做映射处理,映射的依据就是映射文件(NIDSMapping.xml),从中找到字段FlowName的映射表19,如下所示:

表19 字段FlowName的映射表

由于本条H志FlowName的源值是ip,而在映射表中,与ip对应的是ip流量,因此字段映射后的值就是ip流量。这样,经过映射后,范化结果表20如下:

表20 范化结果表

由于映射处理已经结束,所以上表中,映射所在列以灰色显示。

步骤8进行类型转换

到目前为止,所有字段的值以及相关的信息(类型、偏移量、大小、范化常量)都已经得到了,接下来就是将数据真正写到数据结构之中,其间进行格式和类型转换,转换的全部依据就是上面那张表。下面就根据上表所罗列的字段顺序依次描述转换过程。

范化引擎首先用一个空白的、固定长度的内存区模板来存放范化后的数据结构;此模板分为三段,分别是类型(Type)、长度(Len)和数据(Data),其中Type存放数据结构的类型编号,Len存放此数据结构的长度,Data存放真正的数据结构,这里要着重说明的是,Data最大长度为1024字节,因此要求数据结构的长度不能超过这个长度。本次匹配结果得到的数据结构是flow,flow的Type=8201,Size=168;然后从Data区域的起始位置开始(Offset=0),依次将flow结构体的各个字段写入Data区域。第一个字段是Time,与它相关的所有信息如表20中所示。类型与格式转换模块(以下简称TFConvert)首先判断范化常量Option,发现Option=2816,则TFConvert知道2008-4-1516:39:27是一个时间串,需要将此时间串转换成一个整数,转化后的结果为:120828767;然后由TFConvert将数字1208248767写入Offset=0,Size=4的Data区域的时间字段。

第二个字段是EngIP,与它相关的所有信息如表20中所示。TFConvert首先判断范化常量Option,发现Option=1024,则TFConvert知道192.168.19.110是一个IPV4格式的IP地址(点分十进制格式),需要将此IPV4串转换成整数,转化结果为:1846782144;然后TFConvert将数字1846782144写到Offset=4,Size=4的Data区域的EngIP字段。

第三个字段是FlowType,与它相关的所有信息如表20中所示。TFConvert首先判断范化常量Option,发现Option=0,则TFConvert继续判断Type,发现Type=STR,则TFConvert将串“ip”直接以文本方式写到Data区域中Offset=8,Size=16的数据块中(其他字段以此类推)。

步骤9输出范化结果。其中Flow区域的二进制数据如下表21所示:

表21 Flow区域的二进制数据

 

字段名字段值Time1208248767EngIP1846782144FlowTypeipValue1192.168.19.235Value2212.136.88.174Inbs8919Outbs0Inpks3Outpks0FlowNameip流量

以上是整个范化过程的详细描述,如果紧接着再来一条NIDS的特征事件,则范化引擎需要匹配2次就可以找到符合要求的规则链,得到的数据结构是nids;然后将数据结构信息与匹配成功后的Action结果相结合,形成一张范化表;再根据范化表依次完成映射、格式与类型转换、写到内存区;最后输出范化结果。整个过程和flow数据范化的步骤是完全一致。

实施例7防火墙日志范化举例

假设某防火墙日志为:

2004-06-29,16:24:33,2004-06-29,16:24:33,172.0.0.254,1,5,id=firewall

time=″2004-6-29 16:34:17″ fw=″out″ pri=5 duration=1 sent=854 rcvd=1365

src=172.0.0.1 dst=65.54.179.192

首先定义对应的数据结构:

<Struct Name=″firewall″Text=″防火墙″Type=″8202″Size=″288″>

  <Field Name=″Time″Text=″时间″Type=″TIME″Offset=″0″Size=″″/>

  <Field Name=″FwIP″Text=″防火墙IP地址″Type=″IP″Offset=4″″Size=″″/>

  <Field Name=″Pri″Text=″等级″Type=″ULONG″Offset=″8″Size=″″/>

  <Field Name=″Duration″Text=″持续时间″Type=″ULONG″Offset=″12″Size=″″/>

  <Field Name=″FWName″Text=″防火墙名字″Type=″STR″Offset=″16″Size=″64″/>

  <Field Name=″SIP″Text=″源IP地址″Type=″IP″Offset=″80″Size=″″/>

  <Field Name=″DIP″Text=″目的IP地址″Type=″IP″Offset=″84″Size=″″/>

  <Field Name=″Sent″Text=″发送的数据量″Type=″ULONG″Offset=″88″Size=″″/>

  <Field Name=″Rcvd″Text=″接收的数据量″Type=″ULONG″Offset=″92″Size=″″/>

</Struct>

然后定义范化规则:

<Rule Name= ″FIREWALL″

Pattern=″\d{4}-\d{2}-\d{2},\d{2}:\d{2}:\d{2}\S+,\S+,(\S+),\d+,\d+,id=firewall

time=\″(\S+\S+)\″fw=\″(\w+)\″pri=(\d+)duration=(\d+)sent=(\d+)rcvd=(\d+)

src=(\S+)dst=(\S+)″Standard=″firewall″DevType=″1000″Action=″Time

=$2|FWIP=$1|Pri=$4|Duration=$5|FWName=$3|Sent=$6|Rcvd=$7|SIP=$8|

DIP=$9″/>

再将上述结构体文件和规则文件提交给范化引擎,则能得到如表22中所示的二进制数据:

表22 防火墙日志范化二进制数据表

 

字段名字段值Time1088498057FWIP4261413036Pri5Duration1FWNameoutSent854Rcvd1365SIP16777388DIP3232970305

实施例8 某AV日志范化举例

假设要对如下数据进行范化:

扫描:实时扫描病毒:BAD_BOY文件:C:\PROGRAM FILES\XS\TEMP\VSSEUJDN.005计算机:192.168.36.145用户:SYSTEM感染源:192.168.11.23处理措施:清除

为了范化上述样本,需要先定义对应的数据结构:

<Struct Name=″AntiVirus″Text=″防病毒″Type=″8203″Size=″436″>

  <Field Name=″Virus″Text=″病毒名″Type=″STR″Offset=″0″Size=″32″/>

  <Field Name=″File″Text=″染毒文件″Type=″STR″Offset=″32″Size=″300″/>

  <Field Name=″Engine″Text=″引擎地址″Type=″IP″Offset=″332″Size=″″/>

  <Field Name=″User″Text=″用户″Type=″STR″Offset=″336″Size=″32″/>

  <Field Name=″Source″Text=″感染源″Type=″IP″Offset=″368″SiZe=″″/>

  <Field Name=″Action″Text=″处理措施″Type=″STR″Offset=″372″Size=″32″/>

  <Field Name=″Type″Text=″告警类型″Type=″STR″Offset=″404″Size=″32″/>

</Struct>

然后定义范化规则:

<RuleName=″AntiVirus″Pattern=″扫描:(\S+)\s+病毒:(\w+)\s+文件:(.*)计算机:

(\S+)用户:(\w+)感染源:(\S+)处理措施:(\S+)″Standard=″antiviurs″

DevType=″1001″

Action=″Type=$1|Virus=$2|File=$3|Engine=$4|User=$5|Source=$6|Action=$7″/>

将上述结构体文件和规则文件提交给范化引擎,则能得到如表23所示的二进制数据:

表23 某AV日志范化的二进制数据表

 

字段名字段值VirusBAD_BOYFileC:\PROGRAM FILES\XS\TEMP\VSSEUJDN.005Engine2435098816UserSYSTEMSource386640064Action清除Type实时扫描

实施例9 操作系统范化举例

假设要对如下数据(solaris日志)进行范化:

<86>sshd[23597]:Accepted password for root from::ffff:192.168.17.50 port 3611ssh2

为了范化上述样本,需要先定义对应的数据结构:

<Struct Name=″os″Text=″操作系统″Type=″8203″Size=″230″>

  <Field Name=″Process″Text=″进程名″Type=″STR″Offset=″0″Size=″64″/>

  <Field Name=″User″Text=″用户″Type=″STR″Offset=64″″Size=″64″/>

  <Field Name=″Source″Text=″源″Type=″IP″Offset=″128″Size=″″/>

  <Field Name=″SPort″Text=″源端口″Type=″INT″Offset=″132″Size=″″/>

  <Field Name=″Mode″Text=″登录方式″Type=″STR″Offset=″134″SiZe=″32″/>

  <Field Name=″Name″Text=″事件名″Type=″STR″Offset=″166″Size=″64″/>

</Struct>然后定义范化规则:

 <Rule Name=″SOLARIS_LOGIN″Pattern=″<\d+>(\w+)\[\d+\]:Accepted password

for(\w+)from::\w+:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})port(\d+)(\w+)″

Standard=″os″                                                DevType=″1002″

Action=″Process=$1|User=$2|Source=$3|SPort=$4|Mode=$5|Name=Login Success″

/>

将上述结构体文件和规则文件提交给范化引擎,则能得到如表24所示的二进制数据:

表24 操作系统范化二进制数据表

 

字段名字段值ProcesssshdUser    rootSource840018112SPort3611Modessh2NameLogin Success

实施例10 应用系统日志范化举例

假设要对Microsoft Windows IIS6.0系统的如下数据进行范化:

2008-04-23 04:46:01 192.168.114.71 GET/iisstart.asp 200

为了范化上述样本,需要先定义对应的数据结构:

<Struct Name=″http″Text=″Web服务器″Type=″8204″Size=″284″>

  <Field Name=″Time″Text=″时间″Type=″TIME″Offset=″0″Size=″″/>

  <Field Name=″SIP″Text=″源IP″Type=″IP″Offset=″4″Size=″″/>

  <Field Name=″Method″Text=″方法″Type=″STR″Offset=8″″Size=″16″/>

  <Field Name=″Page″Text=″页面″Type=″STR″Offset=″24″Size=″256″/>

  <Field Name=″ErrorCode″Text=″错误号″Type=″ULONG″Offset=″280″Size=″″/>

</Struct>

然后定义范化规则:

<Rule Name=″IIS_GET″Pattern=″(\d{4}-\d{2}-\d{2}\d{2}:\d{2}:\d{2})(\S+)

(\w+)   ([V\w\.-\s]+)       (\d+)$″   Standard=″http″   DevType=″1004″

Action=″Time=$1|SIP=$2|Method=$3|Page=$4|ErrorCode=$5″/>

将上述结构体文件和规则文件提交给范化引擎,则能得到如表25所示的二进制数据:

表25 应用系统日志范化的二进制数据

 

字段名字段值

 

Time1208897161SIP1198696640MethodGETPage/iisstart.aspErrorCode200

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号