数据库通信协议分析与安全检测

来源:互联网 发布:新手机必备软件 编辑:程序博客网 时间:2024/05/22 03:33
一. 引言

    数据库技术目前已经渗入到我们生活中的方方面面,数据库的客户端和服务器端的通
信遵循TDS协议,如果客户端向数据库服务器发送一个畸形的TDS包,可能引起数据库崩溃,所以对TDS协议进行分析,测试,找出协议中存在的安全问题,尽早解决,意义非常重大。

二. TDS协议概述

1.协议的历史和版本问题
开始,TDS的一个版本有两个卖主,但是为了保持私人投机的长远历史,他们不久就分道扬镳了。后来每个卖主都有不同的版本,并且不一定会互相支持。也就是说,每一个卖主的客户库用那个卖主提供的最新版本的TDS。你不能用微软的库可靠的连接SYBASE,或者SYBASE的库不能可靠的连接微软。在某些例子中你会得到一个连接,但不久你就会因为某些功能不全而碰壁。TDS的版本包括:
TDS 4。2 (SYBASE 和 微软)在SYBASE和微软分裂时这个版本在用
TDS5。0 (SYBASE)SYBASE生产的。TDS5。0包括一些协商能力,通过这些能力协议可以扩展功能。
TDS 7。0(微软)它是为SQL SERVER7。0生产的。包含在SQL SERVER7。0中对扩展数据类型的支持(比如char/varchar域多于255个字符)。它也包括对Unicode的支持。
TDS 8。0 (微软)它是为SQL SERVER 2000生产的。包括对大整数(64位整数)和可变数据类型的支持。
2. 系数据库的结构流程

                                  

    TDS客户端使用称为表格格式数据流 (TDS) 的 SQL Server 专用应用程序级协议来发送 SQL 语句。数据包由用于 SQL Server 的 Microsoft OLE DB 提供程序、SQL Server ODBC 驱动程序或 DB-Library DLL 生成。TDS 数据包然后被传递给 SQL Server 客户端 Net-Library,客户端 Net-Library 将 TDS 数据包封装为网络协议数据包。在服务器上,服务器 Net-Library 接收网络协议数据包,且析取 TDS 数据包并将其传递给关系数据库服务器。在将结果返回给客户端时,这一进程反向执行。

3.TDS协议定义

TDS是一种协议,一系列描述两个计算机间如何传输数据的规则。象别的协议一样,它定义了传输信息的类型和他们传输的顺序。总之,协议描述了“线上的位”,即数据如何流动。表格数据流协议是建立在TCP/IP Net-Library之上的,包含在TCP数据段内。TDS用1433端口进行数据库通信。

TDS协议的特点:

TDS是sybase传送规则表格数据的专用协议
·与传送的语言无关
·与传送的数据无关(长度,字节顺序)
·与具体的网络或硬件平台无关
·是单一的协议
TDS协议的最大优点是,它负责处理所有数据传送细节。

三.TDS协议分析

TDS协议位于TCP的数据段内,结构如下:

IP  

TCP

TDS

TDSDATA

       8位头

TDS数据库模型的TDS解码信息.它主要包括以下的主题:

      ●TDS信息头

      ●TDS登陆记录

      ●TDS SQL请求

      ●TDS标记和他们的功能

下图示出了用这些标志的一个客户和一个数据库服务器间连接的例子。在这个例子当中,客户日志中记录的是数据库服务器的信息,请求和接收一些数据(用语言标志),然后再把日志发出去。

        客户标志

登陆记录------>

语言--------->

 

 

发出日志------------>

        服务器标志

<-----------登陆确认

<-----------完成回应

<-----------行格式

<-----------行数据

<---------(更多行)

<----------行数据

<----------完成回应

<-----------完成

下表给出了TDS框架头的格式:

    0

   1

    2

   3

   4

   5

   6

   7

信息类型

  状态

    信息长度

     信道数

包的数量

窗口状态

对于信息类型:

    0X01 TDS4。2或7。0的请求报
   0X02 TDS4。2或5。0的登陆报
   0X04 服务器的回应
   0X06 取消
   0X0F TDS5。0的请求报
   0X10 TDS7。0的登陆报

对于状态:
0X01 在请求或回应中的最后一个缓冲区

0X00 下面还有更多的包

    客户端和服务器之间的会话是从客户端向服务器端发送一个TDS登陆信息开始的。一个TDS登陆信息有以下几个特性:

    ●一个TDS信息类型

    ●一个TDS登陆记录

    ● 通常包含两个TDS框架

   TDS登陆记录包括多个固定长度和可变长度的域。每一个可变长度的域有一个相应的长度类型,表明这个域的长度。

   紧跟登陆记录之后是一个对命令信息的回应。服务器会表明注册的成功或失败。一个成功注册的结果是:

   ●在SQL环境变量里数据库、本地语言和包的大小的改变。

   ● 客户和服务器之间能力的交换。

在数据库结构中,客户从数据库服务器中请求服务或数据。服务器对这些请求结果进行回应。客户用下面的TDS信息类型对SQL服务器进行请求:

   ●信息类型1-----语言命令

   ●信息类型15-----对TDS标志类型0X21的正常请求或回应

   ●信息类型16-----对TDS标志类型0X21的紧急请求或回应

    TDS并没有指出语言命令的语法必须是什么。语言命令的变化范围是整个的Transact-SQL命令设置。

   对SQL请求的回应

   一个数据库服务器如何回应一个SQL请求呢?假如SQL请求是“select*from发生一系列:

   1.发给服务器的是相同的TDS请求格式,而不管发出命令的应用(比如,isql,esql,ODBC,orPowerBuilder)。

   2.数据库服务器用TDS的类型4回应SQL请求---回应一个命令

    SQL回应会包括客户请求的数据,一行一行的传输。发回给客户的每一行数据的前面会有一个TDS标志,它表明这一行的数据类型。

   ●标志是单个位值表明紧跟的数据值的and/or格式

   ●标志能够描述固定或可变的数据长度

   ● 固定长度的标志没有相应的长度域(因为他们长度是固定的不需要长度域)
   TDS标志和它们的功能

    这部分列出了TDS的标志类型,描述了它们的功能。重调用一个标志如果是一个单个位值表明下面紧接的数据值and/in的格式.在客户端和数据库服务器的每一个信息交换都包含一个标志位,描述了在信息中包含的数据.标志能描述固定或可变长度的数据长度.固定标志的长度没有相应的长度域.下表列出了不同客户和服务器的标志.

    标志被分成下面几种范畴:

    ●0长度的数据标志.0长度的标志后面没有长度域.数据后面紧跟一个0长度的标志是一种自我描述(比如,行数据)

    ●固定长度的数据.固定长度的标志后面有一位,二位,四位,或八位的数据.固定长度的标志后面没有长度域.

    ●可变长度的数据标志.这些标志并不描述0长度或固定长度的数据.这些标志后面是一个两位或四位的长度域,表明后面数据的长度.

   TDS标志和它们的功能

   TDS基本上是一个以标志为基础的协议。一个标志是一个单个的位值,它表明接下来的数据和值的格局。在一个客户机和一个数据库服务器间的每一个信息交换包括一个标志,它描述了包含在信息中的数据。这种自我描述格局允许客户请求数据而不用提前知道一些细节,比如域的类型,返回值的数量和一些别的服务器中存储信息。标志能够描述固定的或可获得的数据长度。

   标志被分成下面几种范畴:

   ●0长度的数据标志.0长度的标志后面没有长度域.数据后面紧跟一个0长度的标志是一种自我描述(比如,行数据)

   ●固定长度的数据.固定长度的标志后面有一位,二位,四位,或八位的数据.固定长度的标志后面没有长度域.

   ●可变长度的数据标志.这些标志并不描述0长度或固定长度的数据.这些标志后面是一个两位或四位的长度域,表明后面数据的长度

   TDS标志和它们的功能

   TDS基本上是一个以标志为基础的协议。一个标志是一个单个的位值,它表明接下来的数据和值的格局。在一个客户机和一个数据库服务器间的每一个信息交换包括一个标志,它描述了包含在信息中的数据。这种自我描述格局允许客户请求数据而不用提前知道一些细节,比如域的类型,返回值的数量和一些别的服务器中存储信息。标志能够描述固定的或可获得的数据长度。

   标志被分成下面几种范畴:

   ●0长度的数据标志.0长度的标志后面没有长度域.数据后面紧跟一个0长度的标志是一种自我描述(比如,行数据)

   ●固定长度的数据.固定长度的标志后面有一位,二位,四位,或八位的数据.固定长度的标志后面没有长度域.

   ●可变长度的数据标志.这些标志并不描述0长度或固定长度的数据.这些标志后面是一个两位或四位的长度域,表明后面数据的长度.

应用在TDS协议中的客户标志包括:

   ·注册记录

   ·语言命令

   ·指针命令

   ·远程数据库调用过程

   ·注意事项

   ·动态SQL语句

   ·信息

应用在TDS协议中的服务器标志包括:

   ·注册认证

   ·行结果

   ·返回身份认证

   ·完成回应

   ·错误信息

   ·注意认证

   ·指针身份认证

   ·信息回应

四.安全检测

   很多网络协议的网络下层结构设计的不安全。没有一个基本上安全的下层结构,网络保护是非常困难的。进一步讲,网络是一个根据拓扑结构和浮现技术的非常动态的环境。因为网络内部的公开性和协议的原始设计,总的来说,网络攻击是又快又容易又便宜而且很难探测和跟踪。

   构造TDS包向数据库服务器不断发包,通过反复更改TDS协议参数,观察数据库服务器的反映,检查TDS协议存在的问题。

   比如SQL SERVER7。0用TDS协议和客户端通信的时候,攻击者向脆弱的SQL SERVER发一个畸形的TDS包可能引起服务器出错甚至崩溃。

五.小结

   通过对应用在SYBASE和SQL Server数据库中的TDS协议的分析,测试,检查该协议的安全漏洞和存在的问题,最终形成了一个风险评估的工具。

原创粉丝点击