APP下载

基于JSON的计算机网络入侵监测规则设计与实现

2022-09-02贾宝林

自动化仪表 2022年8期
关键词:传输层字段数据包

贾宝林,连 栋

(上海工业自动化仪表研究院有限公司,中国 上海 200233)

0 引言

随着网络技术的迅猛发展,网络安全问题也越发严峻。传统的防火墙与杀毒软件已无法满足日益增长的安全需求。入侵检测系统是对其他安全工具(如防火墙等)网络入侵检测的一种有效弥补方法[1],可以提供多层次、全方位的立体安全防护策略,最大程度地保障网络安全。

本文提出了一种基于Java Script 对象简谱(Java Script object notation,JSON)的计算机网络入侵监测规则设计方法。该方法在通用匹配方法的基础上,针对性地对各应用协议的具体字段进行特征匹配,使用多种子规则混合匹配的方式,既保证了匹配效率,又有效提高了匹配准确率。

1 入侵检测系统原理及构成

随着网络安全技术的发展,除了防火墙和杀毒系统的防护以外,入侵检测技术也已成为抵御网络攻击的有效方式。入侵检测系统(intrusion detection system,IDS)被认为是防火墙之后的第二道安全闸门,能够承接防护和响应的过程,在不影响系统性能的情况下对系统进行监测[2]。入侵检测系统对计算机系统与网络中的安全事件检测的技术主要包括数据采集、分析与结果处理三个功能[3]。

入侵检测系统主要通过以下步骤来实现功能:①分析和监听用户及系统行为活动;②设计系统结构,发现系统的弱点;③识别攻击行为,并发出警报;④分析统计异常的行为;⑤对数据的完整性进行评估。

入侵检测的过程有信息收集、分析和处理三个步骤。收集信息是入侵检测的第一步[4]。对于入侵检测系统而言,典型的数据收集方式是通过网络链路的端口镜像或分光设备把正常的网络通信数据复制一份至检测系统。系统在获得数据包后,会进行一系列预处理,包括数据包分析、包重组、协议解析等,然后将处理后的数据进行后续的行为分析。其中,入侵行为分析是入侵检测的核心。其本质是根据用户行为的抽象描述和已有的安全策略,使用推理或模式匹配等智能技术判断用户的行为是否为入侵行为。

2 基于JSON的规则设计过程

目前,商用入侵检测系统大多基于规则库的模型。规则库的完备程度决定了系统性能的优劣[5],而规则设计更是重中之重。针对传统的规则库特征描述文件较为繁杂、可读性较差、对协议的支持深度不够的情况,本文提出了一种基于JSON的计算机网络入侵监测规则设计方法,并从需求分析、数据分析、特征规则设计等方面进行了详细描述,方便用户使用和理解该设计方法。

2.1 需求分析

入侵检测系统中,入侵行为分析是入侵检测的核心。规则库描述入侵攻击事件的特征和相应的响应规则,并控制入侵检测引擎,是入侵检测系统能否有效检测入侵的关键[6]。检测规则的存储方式以及规则内容的易读性直接影响着规则获取能力和规则应用效率,是入侵检测系统中的基本问题之一。因此,其对入侵检测系统规则的存储方式模式、规则库的构建研究和改进具有重要价值。目前,主流的入侵特征规则主要通过对数据包数据区直接进行模式匹配、规则判断,或者在通过端口或特征位判断出协议后,再对指定数据区进行特征匹配。同时,其规则库中特征描述文件较为烦杂,可读性较差,且对协议的支持深度不够,无法满足在协议日益多样的情况下对内容进行特征匹配的需求。总体来看,目前主流特征规则库的设计存在可扩展性弱、智能化低的局限。在这种背景下,进行入侵检测规则设计时,既要满足对通用字段的有效匹配,又要满足各种协议字段内容的精确匹配;同时,还需要兼顾后期的可扩展性,以及复杂逻辑下多种模块组合匹配的需求。

2.2 数据分析

传输控制协议/网际互连协议(trasmission control protocol/Internet protocol,TCP/IP)在一定程度上参考了开放式系统互联通信通信参考模型(open system interconnection reference model, OSI)的体系结构。TCP/IP协议共有四层,从下到上分别是网络接入层、网络层、传输层和应用层[7]。应用层的主要协议有电信网络协议(telecom municationnet work protocol,Telnet)、文件传输协议(file transfer protocol, FTP)、简单邮件传输协议(simple mail transfer protocol, SMTP)等,用于接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层。传输层的主要协议有用户数据报协议(user datagram protocol, UDP)、传输控制协议(transmission control protocol, TCP),是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享。网络层的主要协议有网际控制报文协议(internet control message protocol, ICMP)、网际互连协议(internet protocol, IP)、网络组管理协议(internet group management protocol, IGMP),主要负责网络中数据包的传送等。网络接入层又称网路接口层或数据链路层,主要协议有地址解析协议(address resolution protocol, ARP)、反向地址转换协议(reverse address resolution protocol, RARP),主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等[8]。本规则设计主要针对的是应用层协议解析后的数据,同时通过内置一些固定字段以兼顾数据链路层、网络层、传输层等字段内容。

数据包在前置协议解析模块中统一结构化处理为JSON数据结构体,包含了网络层、传输层等基础信息和应用层协议数据信息。以超文本传输协议(hyper text transfer protocol, HTTP)为例,经结构化处理后的数据结构应包含IP、端口、请求统一资源定位符(uniform resource locator,URL)、主机等字段。HTTP协议示例字段如表1所示。JSON作为一种轻量级数据交换格式,具有良好的延展性和可阅读性,只要通过指定的键值即可完成字段的读取,可以方便地与特征规则字段进行匹配。

表1 HTTP协议示例字段表

不同的应用协议对应不同的应用场景,同时也会出现不同的匹配需求。如在工控环境下的Modbus协议,在很多情况下并不需要知道操作的具体内容,只要是写数据即为敏感操作,需要对该操作进行告警。在这种背景下,只需要对功能码进行匹配即可实现。而一些通用的应用协议(如HTTP等)的应用范围较广,进行特征匹配时更在意其字段的内容是否出现攻击行为等。此时,就需要对其内容作进一步的特征规则匹配。

在特征内容匹配方面,除了常规的字符串比较、模式匹配之外,协议应该还具有进一步的匹配能力,如数据范围的大小限定、指定数据偏移位置及长度的限定、通用正则匹配的需求以及字段匹配前的预处理功能等。

2.3 特征规则设计

JSON是一种轻量级的数据交换格式,非常易于理解和编写,且数据格式简单,易于读写、解析[9]。其具有良好的自我描述性,同时还具有较为明确的层级结构。在本文中,特征规则文本设计为JSON格式字符串存储,在整体结构上分为规则描述特征和规则内容两个部分。

①规则描述部分作为本条特征的概要信息,指定了本条特征的规则计算方式与应用层协议,主要包含匹配类型、匹配协议、规则表达式这三个字段。规则描述与匹配键值如表2所示。匹配类型字段主要规定了当前特征规则匹配方式。本设计中的特征规则设计使用混合匹配方式,此处固定为mixed。匹配协议字段主要用于确保当前特征规则与解析后的应用层协议数据保持一致,避免交叉匹配,降低匹配效率。规则表达式字段构建了具体的子规则值运算逻辑,从规则表达式中提取出对应的子规则名称与运算逻辑。在进行子规则匹配后,按运算逻辑对匹配结果进行计算,可获取最终的特征规则匹配结果。

表2 规则描述与匹配键值表

规则表达式字段计算使用类似逆波兰式算法,对已经匹配的子规则值进行逻辑计算,并根据得出的最终结果判断当前数据是否命中此规则。在规则表达式中共包含两种类型字符:规则名称字符,主要用于定义子规则名称,包含所有字母、数字、下划线和中划线;逻辑字符,主要用于各子规则值之间的逻辑运算,包含“&”、“|”、“!”、“(”和“)”。该规则表达式支持以下逻辑操作: 与操作(“&&”);或操作(“||”);非操作(“!”);括号操作(“()”)。在进行逻辑运算时,首先从规则表达式中提取出各子规则名称,然后根据子规则名称提取各子规则匹配值,最后对值进行逻辑运算并得出结果。

②在特征规则内容部分定义了当前特征的详细信息。规则中,各字段与数据包中结构化后的数据字段相同,以方便、快速地建立映射关系。在此部分中,可以包含多个key-value键值对。每个key对应的是待匹配的应用层协议字段名称。通过key,可以直接从JSON结构化协议数据中提取对应内容。同时,为了满足网络层、传输层协议字段的匹配需要,本设计内置通用字段匹配。其在数据包中的名称相对固定:内置字段以下划线“_”为开头;源IP、源端口、数据流方向、传输层协议字段分别以_sip、_sport、_direction、_proto等表示。

当前特征的子规则为key-value键值对中的value部分。每个子规则均包含特征值、子规则名称、匹配方法、匹配选项这四个字段。

特征子规则键值如表3所示。

表3 特征子规则键值表

规则表达式算法流程如图1所示。

图1 规则表达式算法流程图

特征值字段描述了当前子规则特征的具体内容,可以为数字和字符串2种形式。当特征值字段为数字时,对应的匹配类型固定为“number”,在待匹配值与此字段值相等时即为命中此子规则;当特征值字段为字符串形式时,其具体形式与匹配类型直接相关联。子规则名称字段定义了当前特征子规则的名称,主要用于最后的匹配结果逻辑运算。

本设计内置了多种匹配方法,可适配不同情况下的需求。当匹配方法为“number”时,value值中的数据采用开闭区间的方法进行范围控制,若value值为“m-n”,则限定范围是m到n之间;若value值为“m-”,则限定范围是大于m;若value值为“-n”,则限定范围是小于n。匹配方法关键字定义如表4所示。

表4 匹配方法关键字定义表

匹配选项字段作为匹配方法的补充选项,定义了匹配时的相关参数,同时还对待匹配数据进行预处理。通过nocase字段,可以在字符串匹配时不区分大小写;通过offset和depth字段,可以在匹配时,截取指定位置及长度的数据与特征规则进行比对;通过pre_func内置的预处理方法,可以在匹配前对指定数据进行处理,如URL解码等操作。

3 样本分析与验证测试

①在实际环境中的网络入侵,很多都是基于HTTP协议的。例如:通用漏洞披露(common vulnerabilities & exposures,CVE)编号为CVE-2013-2567的漏洞,其特征名称为“Apache Struts 对象导航图语言(object graph navigution language,OGNL)表达式注入漏洞”。攻击者通过内部账户可以在未授权的情况下访问用户不可见的敏感文件。在本攻击特征中,使用的通信协议为HTTP,通过get请求,发送经过URL编码的URL地址,在URL中包含“/cgi-bin/mft/”“wireless_mft.cgi”“manufacture.cgi”“username”“password”等固定字段。其中,“wireless_mft.cgi”与“manufacture.cgi”其中之一即可,“username”和“password”两个字段顺序随机,且中间会出现随机字符。基于以上特征信息,生成的特征规则匹配类型match_type固定为mixed,匹配协议为HTTP。规则匹配需要同时满足请求方法为get和符合两种URL地址中的一个。请求方法特征子规则使用String完全匹配的方式。URL特征子规则使用正则匹配方式。最终结果基于“Method && (Url1 || Url2)”进行混合运算。其中:URL1值应为"/cgi-bin/mft/(wireless_mft.cgi|manufacture.cgi)?.*username.*password.*";URL2值应为"/cgi-bin/mft/(wireless_mft.cgi|manufacture.cgi)?.*password.*username.*"。两者均使用“url_decode”关键字进行预处理解码。

②在部分工控网络环境中,只需要对仪器仪表等进行周期性数据监控。此时,一般只需要对数据进行读操作。写操作则需要更高的控制权限。当网络中出现对某台设备尝试写操作时,就需要对此动作进行告警。在这种情况下,对写的内容并没有严格的限定。根据这种需求,同样可以通过本文中的特征规则进行实现。以Modbus协议写单寄存器告警为例,匹配类型match_type固定为mixed,匹配协议为Modbus,子规则特征中只需要对功能码Func_code字段进行数字比较即可。其中:“写单寄存器”功能码值为6;匹配方式为数字匹配;使用关键字“number”。

③本文以某地区部门工业安全流量审计平台为例。入侵检测引擎是该平台的重要子模块。根据用户需求,在进行特征处理时,不仅要对网络通用的入侵特征进行告警,还要对工控环境下不安全的写操作进行告警;同时,在部分工控协议中,需要对指定字段数值范围进行界限判断,并在数据异常时产生告警信息。在此背景下,将基于JSON的规则设计应用在协议数据匹配引擎开发中,并将其集成至审计平台中。系统结构如图2所示。

图2 系统结构图

在平台正常运行情况下,通过对不同的样本数据进行回放的方式对规则引擎的可靠性、有效性进行了测试。分别以10 mbit/s、50 mbit/s、100 mbit/s的速度对平台数据口进行数据包回放,以测试平台数据处理性能。回放的数据包中混合多种特征包,如Modbus协议敏感操作数据包、部分攻击特征数据包以及多种应用协议的正常数据交互包等,用于测试异常行为检测效果。根据测试反馈,其结果完全符合设计要求。

4 结论

本文根据入侵检测系统在网络安全需求日益增加的背景,提出了一种基于JSON的计算机网络入侵监测规则设计方法,通过需求调研、数据分析、架构设计、系统验证与测试等的完整流程,设计出一套高效、扩展性良好的特征规则设计方法。在通用匹配方法的基础上,针对性地对各应用协议的具体字段进行特征匹配,使用多种子规则混合匹配的方式,在保证匹配效率的基础上有效提高了匹配准确率。

本文设计一定程度上可以为入侵检测系统的攻击特征库的设计提供参考,并为设计人员在进行特征匹配规则设计时提供一种可行的思路与方法。同时,在后续研究工作中,应多考虑新型的网络应用场景,解决如何在实际环境中进行实时性和适应性验证的问题[10]。

猜你喜欢

传输层字段数据包
图书馆中文图书编目外包数据质量控制分析
基于Python语言的网络传输层UDP协议攻击性行为研究
ZnO电子传输层在有机无机杂化钙钛矿太阳能电池中的应用
SmartSniff
物联网无线通信传输层动态通道保障机制
基于物联网GIS的消防智能巡检系统设计与实现
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
基于Libpcap的网络数据包捕获器的设计与实现
关于CNMARC的3--字段改革的必要性与可行性研究