日期:2014-05-17  浏览次数:20496 次

分析SqlServer2008 TDS登录协议问题
本帖最后由 yangfei_01 于 2011-07-04 17:04:08 编辑
   最近在做SqlServer2008 tds协议的解析,在登录包解析时出现了一些问题。网上和微软官方关于tds的说法是header的type
为0x12是预登录包,type为0x10是登录包,但是我实际抓包过程中发现并没有type为0x10的登录包,只有一些预登录包、和TCP包,而且貌似向数据库服务器端发送的登录请求是经过加密的。现在分析就遇到瓶颈了,不能从用户登录时获取相关的信息(主要是用户名)。
   下面是通过sqlcmd登录的抓包结果(如果用SQL Server Management登录后面还会多一些查询等数据包,但是登录相关的应该就到这里了),数据库服务器在192.168.10.158端。
   
   不知道有没有哪位高手做过与tds协议相关的研究,诚求指导。主要是怎样通过抓去的登录数据包提取用户的相关信息(用户名)。

------解决方案--------------------
SQL SERVER 2005,缺省情况下一般都是SSL加密的。后面的PRELOGIN就是SSL加密包。
SQL SERVER 2000下,这些都没有加密。所以密码是明文。
------解决方案--------------------
在加密方式下,SSL是作为PRELOGIN包发送的(紧接着第一个PRELOGIN包),所以就没有LOGIN包了。
------解决方案--------------------
http://msdn.microsoft.com/en-us/library/dd357559%28PROT.13%29.aspx

------解决方案--------------------
引用:
其实是想做这样一个东西:是在用户请求到达数据库服务器之前获取用户的请求并进行分析,但不访问数据库服务器。
 那是要抓包的。
不过即使这样,你也只会跟踪到IP信息。
------解决方案--------------------
要分析TDS协议,估计只有分析PRELOGIN包,也只有破解了,但是很难。
除非截获生成TDS数据前的信息,估计也不容易。:(