WEB开发网
开发学院数据库Oracle 教你如何截获Oracle数据库连接密码 阅读

教你如何截获Oracle数据库连接密码

 2007-05-10 12:21:15 来源:WEB开发网   
核心提示:大部分的服务器/客户端系统的结构可以这样描述:客户端 <---(1)---> 系统TCP/IP模块 <---(2)---> 网络 <> 系统的TCP/IP模块 <> 服务端对于这些系统,一般的安全问题出在由(2)所示的地方,教你如何截获Oracle数据库连接密码,比如说当

大部分的服务器/客户端系统的结构可以这样描述:

客户端 <---(1)---> 系统TCP/IP模块 <---(2)---> 网络 <----> 系统的TCP/IP模块 <----> 服务端

对于这些系统,一般的安全问题出在由(2)所示的地方,比如说当使用 POP3 协议收取邮件,或者用 Telnet 登录到远程主机的时候,其登录密码都是未经加密的,只要在网络上安装一个嗅探器 (Sniffer) 来监听数据包,就可以很容易地截获用户名和密码。

但对于 Oracle 系统来说,用户名和密码在网络上传递之前,是经过加密的,而且加密的算法是不可逆的,即使使用嗅探器探听到数据包,开始无法把数据库的连接密码恢复出来,Oracle 系统的结构可以如下描述:

客户端应用程序 <--(1)--> Oracle客户端软件 <---(2)---> 系统TCP/IP模块 <---(3)---> 网络 <--> 系统的TCP/IP模块 <---> Oracle数据库

对于这一类系统,所有在(2)或者(3)处监听到的登录数据包都是已经经过加密的,但是,考虑一下我们编写 Oracle 数据库应用程序的时候,无论是通过 ODBC 还是 Pro C,或者其他的 BDE 环境等,都是将数据库连接的用户名和密码用明文的方式传递给 Oracle 客户端驱动程序的,所以在(1)位置的数据流肯定明文的,密码是在 Oracle 客户端软件中被加密后才经过(2)、(3)等步骤发送出去,如果在(1)的位置进行拦截,就可能拦截到密码。

考虑到步骤(1)发生在应用程序到 Oracle 系统的调用中,也就是发生在 API 调用的层次,所以只要找到密码加密模块的入口,在对相应的 API 进行 Hook,就能截获到密码了。

有人可能存在一个疑问:使用 Sniffer 可以监听到网络上其他计算机的连接数据包,而在 API 层次上进行拦截是针对本机的,但要是自己能够在本机上连接,就表示已经知道密码了,再去截获不是多此一举吗?

1 2 3 4  下一页

Tags:如何 截获 Oracle

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接