如何从连接尝试到数据库中嗅探Oracle的凭据?

时间:2013-06-02 17:14:34

标签: oracle odbc legacy sniffing

我有一个遗留应用程序,它连接到已配置的Oracle数据库。

似乎它有一些逻辑会改变数据库凭据,因为它无法成功登录到Oracle数据库,而在同一台机器上启动的sqlplus能够登录。

我得到的错误是:[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-01017: invalid username/password; logon denied

如何找出发送到数据库的数据库用户名和密码是什么?

到目前为止我尝试过:

  1. 启用对Oracle(audit create session whenever not successful)上登录尝试失败的审核。它没有解决问题,因为它只记录没有密码的用户名,这似乎是正确的。

  2. 使用嗅探器窃听运行应用程序的计算机与数据库之间的网络流量,但由于Oracle的TNS协议已加密,因此没有太多帮助。

  3. 在端口X上使用netcat启动服务器,在应用程序配置文件中提供端口X.应用程序确实连接到我的服务器,这就是我知道应用程序连接到正确的服务器的方式。但由于TNS协议非常复杂(需要在客户端和服务器之间交换一系列消息),我希望有一个更简单的原因可以实现我想要的,而无需对Oracle进行逆向工程并实现自己的服务器。

  4. 启用JDBC驱动程序跟踪(Trace=1TraceFileTraceDll)。跟踪文件显示正确的用户名,但显然密码未记录。

  5. 我的环境:

    • 数据库:Oracle 11g
    • 应用程序在:Solaris
    • 上运行
    • 应用程序使用:DataDirect ODBC Oracle Wire Protocol v70

1 个答案:

答案 0 :(得分:1)

我不确定,但如果通过ODBC驱动程序建立连接(如问题标签中所述),那么您可以尝试使用ODBC Tracing之类的ODBC嗅探工具。

引用:

密码“嗅探”使用跟踪

ODBC提供了一种跟踪驱动程序和主机数据库之间发生的对话的方法。开发人员用于测试目的,跟踪功能旨在帮助程序员准确了解正在发生的事情并帮助解决问题。但是,恶意的坏人可以使用跟踪(也称为“嗅探”)来检索用户密码。

启用跟踪时,与主机的通信将写入文件。这包括用纯文本捕获的用户ID和密码。

<强>更新

SQLPlus使用OCI接口连接到Oracle,但DataDirect ODBC驱动程序使用它自己专有的通信协议实现。因此,最可能的故障点是驱动程序配置错误或不兼容。

DataDirect为ODBC驱动程序诊断提供了一些tools,但只有适用于相关案例的选项才使用snoop实用程序,它就像netcat一样已经尝试过。

由于在凭据验证阶段连接失败,最可能的错误来源是使用本地化符号作为用户名或密码。 DataDirect Knowledge Search(搜索ORA-01017)中列出了Oracle身份验证过程的一些问题。

似乎DataDirect提供了两个独立版本的驱动程序,支持和不支持Unicode,因此可能的一个失败点是将非Unicode版本的驱动程序连接到Unicode版本的数据库,反之亦然。

P.S。目前我对DataDirect ODBC驱动程序没有任何经验。因此,这只是关于可能的失败原因的建议。