神通数据库SQL命令与参数的解析还原方法技术

技术编号:27583344 阅读:19 留言:0更新日期:2021-03-10 09:57
本发明专利技术公开了一种解析还原神通数据库SQL命令与参数的方法,通过旁路获取数据包,并过滤得到神通数据库的交互数据,根据不同数据包类型执行相应的解析还原流程,得到SQL命令与参数内容,包括:循环获取神通数据库协议的交互数据包;解析数据包得到其应用层数据,提取应用层数据体前两字节的内容,根据字节值判断数据包类型;对不同数据包类型,分别执行相应的解析流程,分析并提取SQL命令与参数填入还原列表;实现数据库审计。实现数据库审计。

【技术实现步骤摘要】
神通数据库SQL命令与参数的解析还原方法


[0001]本专利技术属于计算机与网络安全
,具体是涉及一种解析还原神通数据库SQL命令与参数的方法。

技术介绍

[0002]随着数据库的广泛应用,数据保护和操作监控的必要性也需要逐渐增强,更多的用户意味着数据库系统需要更高的安全性、可靠性、保密性、可控性以及可跟踪性。数据库审计是一种最重要也是最有效的方式,是通过记载客户端访问数据库时的各类操作指令以及相应的操作结果,实现审计。通过分析记录各种操作指令的内容、操作用户、指令发送时间、指令的影响内容等信息,判断数据库的安全是否受到威胁;同时也可以分析生成审计日志,对审计日志进行分析发现哪些操作指令会影响数据库安全,从而做出相应的预防及阻断。
[0003]数据库审计主要集中在对数据操作的审计,如向表中添加数据、删除数据、更新数据等SQL语句,可以从协议数据包中提取,从传输的数据中定位到SQL语句位置,解析还原出响应的内容。但是对于神通数据库(也称OSCAR数据库)这一类相对较新的国产数据库,这种解析规则的实现细节没有公开也难以获得,虽然已经逐渐应用在各种业务中,目前尚缺乏相应的完善的解析还原方法,从而无法实现有效的安全审计。

技术实现思路

[0004]本专利技术针对神通数据库提出一种解析还原其SQL命令与参数的方法,通过旁路获取数据包,并过滤得到神通数据库的交互数据,根据不同数据包类型执行相应的解析还原流程,得到SQL命令与参数内容,具体的技术方案如下:神通数据库SQL命令与参数的解析还原方法,包括:循环获取神通数据库协议的交互数据包;解析数据包得到其应用层数据,提取应用层数据体前两字节的内容,根据字节值判断数据包类型:值0x00,判断数据包为客户端连接请求,值0x51,判断数据包为客户端SQL请求,值0x50,判断数据包为数据库对客户端查询语句结果的响应,值0x58,判断数据包为客户端的断开连接请求;对上述的不同数据包类型,分别执行相应的解析流程,分析并提取SQL命令与参数填入还原列表。
[0005]作为优选的,提取客户端连接请求包的命令与参数,包括以下步骤:S11.从数据体头向后偏移2字节,取数值,若为0则直接返回、不解析;否则进行下一步;S12.从数据体头向后偏移4字节,取3个字节内容转换为字符串,若为“MD5”则直接返回、不解析;否则进行下一步;
S13.从数据体头向后偏移136字节,取接下来的字节内容直至遇到空字节,转换为字符串,判断字符串的第一个字符是否为0:若不为0,则将取到的字符串提取为客户端的用户名;若为0,重新从数据体头向后偏移72字节,取接下来的、直至空字节之前的字节内容,转换为字符串,再次判断字符串的第一个字符是否为0,若不为0则将取到的字符串提取为客户端的用户名。
[0006]进一步的,应用层数据体前两字节的值为0x52,判断数据包为数据库对客户端连接请求的响应,给SQL语句赋值为“LOGIN”。
[0007]作为优选的,提取客户端SQL请求包的命令与参数,包括以下步骤:从数据体头向后偏移3字节,取接下来的所有字符串,判断字符串中是否包含“PREPARE JDBC_STATEMENT_”:若不包含,则将取出的字符串拷贝至SQL中;若包含,重新从数据体头向后偏移31字节,取接下来的所有字符串,进一步判断字符串中是否包含“DECLARE JDBC_CURS_”与“SELECT”,若包含,则从该包含的字符串开始将取出的字符串拷贝至SQL中。
[0008]进一步的,应用层数据体前两字节的值为0x43,判断数据包为数据库对客户端SQL请求的响应,直接返回、不解析。
[0009]作为优选的,数据库对客户端查询语句结果的响应包,提取其命令与参数,包括解析出执行查询语句的结果集与影响行数。
[0010]进一步的,客户端断开连接请求,给SQL语句赋值为“LOGOUT”。
[0011]作为优选的,应用层数据体前两字节的值为0x45,判断数据包为数据库对客户端连接错误的响应,从数据体头向后偏移1字节,取5字节的内容,转换为字符串,得到数据库向客户端返回的错误码。
[0012]作为优选的,提取应用层数据体前两字节之前:获取应用层数据总长度、数据头长度与数据体长度;若应用层总长度小于数据头长度,排除该数据包、不进行解析;若应用层总长度小于数据头与数据体长度之和,该数据包不完整、需要与后续数据包进行组包再解析。
[0013]采用以上技术方案的本专利技术,通过解析、分析神通数据库的应用系统客户端与数据库之间的通讯协议的Data类型数据包的负载部分,将SQL语句进行有效的分解,分析得到SQL语句及其所带的参数,从而实现数据库审计。
附图说明
[0014]图1为本专利技术实施例的,旁路解析数据包的总流程示意图;图2为本专利技术实施例的,应用层数据SQL命令与参数的解析还原流程示意图。
具体实施方式
[0015]下面结合附图对本专利技术的技术方案进行详细说明。
[0016]SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一
种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
[0017]如图1,解析与还原神通数据库协议中SQL命令和参数的方法的实施例,主要包括以下步骤:步骤1:利用核心交换机将流向数据库服务器的数据通过镜像方式引流到审计设备的网口上。
[0018]步骤2:审计设备的抓包引擎将数据映射到本地。
[0019]步骤3:审计设备的分析引擎直接利用获取到的包进行层层剥离解析,留下应用层数据;其中,包括根据端口号(如2003端口)过滤得到流向神通数据库服务器的数据包。
[0020]步骤4:通过对神通数据库的应用层数据进行解析,具体的是分析神通数据库的应用系统客户端与神通数据库之间的通讯协议的Data类型数据包的负载部分,将SQL语句进行有效的分解,分别分析出SQL语句以及客户端可视操作生成SQL语句所带的参数。
[0021]神通数据库的应用层数据,包括数据头部与数据体,若应用层数据总长度小于其头部长度,该数据包可能为保活包,不需要进行解析;若应用层数据总长度小于头部长度与数据体长度之和,该数据包不完整、需要进行组包。
[0022]如图2,解析与还原SQL命令和参数的具体步骤。
[0023]解析数据包得到其应用层数据,提取应用层数据体前两字节的内容,根据字节值判断数据包类型:值0x00,判断数据包为客户端连接请求,值0x51,判断数据包为客户端SQL请求,值0x50,判断数据包为数据库对客户端查询语句结果的响应,值0x58,判断数据包为客户端的断开连接请求;对上述的不同数据包类型,分别执行相应的解析流程,分析并提取SQL命令与参数填入还原列表。
[0024]作为优选的,解析并提取客户端连接请求包的命令与参数,包括以下步骤:S11.从数据体头向后偏移2字节,取数值,若为0则直接返回、不解析;否则进本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.神通数据库SQL命令与参数的解析还原方法,其特征在于,包括:循环获取神通数据库协议的交互数据包;解析数据包得到其应用层数据,提取应用层数据体前两字节的内容,根据字节值判断数据包类型:值0x00,判断数据包为客户端连接请求,值0x51,判断数据包为客户端SQL请求,值0x50,判断数据包为数据库对客户端查询语句结果的响应,值0x58,判断数据包为客户端的断开连接请求;对上述的不同数据包类型,分别执行相应的解析流程,分析并提取SQL命令与参数填入还原列表。2.根据权利要求1所述的方法,其特征在于,提取客户端连接请求包的命令与参数,包括以下步骤:S11.从数据体头向后偏移2字节,取数值,若为0则直接返回、不解析;否则进行下一步;S12.从数据体头向后偏移4字节,取3个字节内容转换为字符串,若为“MD5”则直接返回、不解析;否则进行下一步;S13.从数据体头向后偏移136字节,取接下来的、直至空字节之前的字节内容,转换为字符串,判断字符串的第一个字符是否为0:若不为0,则将取到的字符串提取为客户端的用户名;若为0,重新从数据体头向后偏移72字节,取接下来的、直至空字节之前的字节内容,转换为字符串,再次判断字符串的第一个字符是否为0,若不为0则将取到的字符串提取为客户端的用户名。3.根据权利要求1或2所述的方法,其特征在于,应用层数据体前两字节的值为0x52,判断数据包为数据库对客户端连接请求的响应,给SQL语句赋值为“LOGIN”。4.根据权利要求1所述的方法,其特征在于,提...

【专利技术属性】
技术研发人员:何建锋张斌祥武博
申请(专利权)人:西安交大捷普网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1