Chinaunix首页 | 论坛 | 博客
  • 博客访问: 53690
  • 博文数量: 20
  • 博客积分: 1240
  • 博客等级: 中尉
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-02 09:47
文章存档

2010年(1)

2009年(5)

2008年(14)

我的朋友
最近访客

分类:

2008-05-02 23:00:43

DB2通信协议的解析
tomqq 8/29/2004
 
1、概述
DB2通信协议是未公开的私密协议,协议比较复杂。由于目前没有能够解析DB2协议的分析工具,所以根据项目需求和实际情况,确定了如下审计方案:
1) 审计数据参照样本最新版本的IBM.DB2.Universal.Database.Eeterprise.Server.Edition.V8.1和8.2,运行平台为:Windows Professional 2000;
2) 通信连接方式使用DB2自带客户端进行;
3) 通过在不同版本、不同设置、3种不同连接方式(CLI、命令编辑器、使用JAVA语言开发的程序)下,执行相同功能的指令,对比所得结果,同时参考其他数据库通信协议,来进行推测和判断。
4) 完成的审计内容包括:数据库登陆行为、登陆结果;SQL语句的内容、执行结果;对数据库操作的部分内容、执行结果;存储过程调用、执行结果;同时对于以上所有内容,记录时间发生时间、源IP、目的IP,操作数据、目的表。
5) 审计结果属于经验数据。
 
2、DB2协议
DB2协议数据共有特征:
1) 在DB2服务端口(默认为50000),有效载荷第一字节固定为00,第三字节固定为d0,因此可以认为凡是第一字节为00,第三字节为d0的数据包为DB2协议数据;
2) 其中d0后所跟1 字节为操作类型,目前测试发现已有4x系列和5x系列;
3) 相同的功能,在不同的连接方式下,通信数据有一定的差别,目前还没有发现出比较强有力的差别特征;
4) 操作结束后,客户端一般会发出10字节的询问串,服务端应答相应的结果串。
 
 2.1 客户端连接
通过测试对比,对DB2服务端的连接行为,通常有形如以下字段:
客户端向服务端发出请求:
如下图:

00 26 | d0 41 00 01 00 20 10 6d | 00 06 11 a2 00 03 00 16 | 21 10 e2 c1 d4 d7 d3 c5
其中红色字节可以作为特征识别码。
 
服务端返回应答:
成功则返回:00 10 | d0 43 00 01 00 0a 14 ac | 00 06 11 a2 00 03 00 15 | d0 42 00 02 00 0f 12 19 | 00 06 11 49 00 00 00 05 11 a4
连接失败:00 10 | d0 43 00 01 00 0a 14 ac | 00 06 11 a2 00 03 00 15 | d0 02 00 02 00 0f 12 19 | 00 06 11 49 00 08 00 05 11 a4 0f
如下图:
其中红色加大字节为判断失败成功的标志。
 
 2.2 SQL语句
SELECT:

以下所有图形中,其中黄色为行为特征字节,红色为审计元素值。Client向server发送的串:


执行成功后,server向client返回的串:
 
执行失败的返回:
INSERT
Client向server发送的串:
执行成功后,server向client返回的串:
 
执行失败后,server向client返回的串:
 
DELETE
Client向server发送的串:
 
Server的成功响应:
 
Server失败的返回:
 
UPDATE
Client向server发送的串:

成功后server返回串:

 失败后Server返回串:
 
CREATE DATABASE:
Client向server发出请求:
 
成功后响应:
 
DROP DATABASE:
莫法
 
CREATE TABLE:
Client向server发送的串:
 
操作成功后Server返回串:
 

 
失败后server返回:
 
DROP TABLE:
Client向server发送的串:
 
 
成功后server返回:没有有效特征
 

 
失败后server返回:
 
1.3 存储过程
数据特征类似于sql语句。在DB2中,无论是存储过程还是sql语句,为了提高效率,最后统一转化为存储过程。
Client向Server发出请求:
 
操作成功后server的返回串:紧跟请求后的第一帧
 
 
操作失败后返回串:
 


其中第二个失败号为失败代码,第一个代码显示成功。
 
3、后记
  用etheral等抓包分析工具可以顺利的解析oracle,sqlserver等数据库的协议,但是唯独没有关于DB2的。看来DB2协议确实和传统的不太一样,我不知道这种看似规律性不强的协议是出于特殊设计,还是混乱的设计。
  最后,该成果被用于某数据库审计系统,取得了较好的成果,服务器部分C语言代码也为本人编制。
阅读(1195) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~