数据库管理员的Oracle密码破解

本文的内容是针对数据库管理员的Oracle密码破解,而寓意是让Oracle管理员们保管好和用户名及密码有关的东西……破解与安全向来都是矛盾体。

对于那些对Oracle关系数据库系统的安全问题,特别是涉及到Oracle密码机制或算法的问题非常关注的人来说,老版本Oracle(特别是10g及其以下的版本)一直被认作是黑客们容易得手的攻击目标。似乎你永远不可能找到能百分之百保护你的系统免受黑客攻击的办法。你可以从很多方面来武装你的系统,但是有一些事情你是永远不可能避免的,例如总会有人有需要必须能够接触到并存取敏感数据,绝大多数的客户端连接也都会涉及到通过网络来传输数据。

有时候数据库管理员也不得不动用一下“黑客”的密码破解技巧才能解决问题。你会问,数据库管理员本来就有数据库内部所有的密钥,又怎么摇身一变成了黑客呢?因为能够存取所有的数据并不意味着可以查看所有的数据。特别是,能够查看密码的哈希值(hashed value),并不代表就能看到密码本身。

那么数据库管理员为什么会想要看到实际的密码值呢?更确切的讲,为什么数据库管理员想要知道某个特定的密码明文呢?你可以想象很多情况下确实是有这个需要,常见的原因包括老应用产品的使用,高频率的人员调动,原本的密码管理和密码归档没有做好等等。改变SYS和SYSTEM密码通常不是什么大问题,但是如果是OLD_APP模式的密码呢?

在网上搜索“Oracle密码破解工具”,你会找到不少“好东西”,甚至还能找到自制的类似于黑客程序的软件。本文选择了Laszlo Toth的woraauthbf工具,该程序能很好的满足本文的需要。你可以先用woraauthbf创建一个包括用户名、哈希密码值、SID和服务器名的文本文件来对付Oracle的老版本看看。提供的这几项中只要用户名和哈希密码值是真的就行了。你如果深入研究过Oracle是怎么创建哈希值的,你肯定会清楚用户名和密码是紧密连锁的,而SID和服务器名和哈希值的创建没有任何关系。其他的一些“破解”程序依赖于网络信息,例如客户端、服务器IP地址、端口和第三方“嗅探器”工具来窥视在客户端和服务器之间传送的数据。

还是快速进入实例吧。复制下面指令的输出结果到一个txt文件,这样就创建了上文所说的密码文件。

  1. select username||':'||password||':'||name||':'||host_name||':'from sys.dba_users, sys.V_$DATABASE, sys.v_$instance; 

再次提醒一下,上面的name和host_name随便你怎么取,或者用真实值也行。本例子的输出文本文件内容如下:

SCOTT:DE59105EDBF4A687:ORCL:MYPC:

我们知道Oracle测试用户Scott的密码为tiger,这里为tigers(最后输出的结果实为TIGERS,Oracle忽略大小写),从5字符变为6字符。解压缩上面下载的woraauthbf文件后,打开命令提示行(DOS)窗口,从这里调用该工具。将密码文件名存为“named password_file.txt”,命令行文本输入如下:

woraauthbf.exe -p c:\password_file.txt

所有参数选用默认,执行完本次会话输出结果如下所示:

  1. C:\[my path]>woraauthbf.exe -p c:\password_file.txtUsernames will be permuted!  
  2.  
  3. The number of processors: 2 
  4.  
  5. Number of pwds to check: 321272406 
  6.  
  7. Number of pwds to check by thread: 160636203 
  8.  
  9. Password file: c:\password_file.txt, charset: alpha, maximum length: 6, type: hash  
  10.  
  11. Start: 0 End: 160636203 
  12.  
  13. Start array thread with 489 number of passwords!  
  14.  
  15. Start: 160636203 End: 321272406 
  16.  
  17. Writing session files...  
  18.  
  19. Writing session files...  
  20.  
  21. Password found: SCOTT:TIGERS:ORCL:MYPC  
  22.  
  23. Elpased time: 164s  
  24.  
  25. Checked passwords: 153976754 
  26.  
  27. Password / Second: 938882 
  28.  

该程序计算了3亿2千1百多万需要检查的密码,而且使用了两个处理器把工作量减半了,而且默认字符集为alpha(A-Z),也需要花费了164秒才能确定Scott的密码为TIGERS,每秒钟检查的密码个数为938,882。我们在检查了差不多一半的密码就很幸运的中标了。

如果排除物理因素的限制(CPU数量和处理器速度等),那么影响运行完成时间的关键因素有两个:密码长度和字符集。如果你知道密码长度和字符集(纯字母还是字母加数字还是字母数字加特殊字符),你就能够大大减少需要检查的密码数量。一开始就缩小猜测范围当然就能够显著减少运行时间。

为了做个对比,我们把字符集改为alphanum,Scott的密码不变,需要花费6分多钟才能找到Scott的密码。如果在前面所用的同一个用户密码文件中添加另外一个用户的密码信息,假设也知道密码长度同为6字符,且是字母加数字类型的,那么整个运行时间超过了29分钟(由于隐私的原因,下面所示的第二个用户的名字和密码都已经编辑过了)。

  1. woraauthbf.exe -p c:\password_file.txt -m 6 -c alphanumUsernames will be permuted!  
  2.  
  3. The number of processors: 2 
  4.  
  5. Number of pwds to check: 2238976116 
  6.  
  7. Number of pwds to check by thread: 1119488058 
  8.  
  9. Password file: c:\password_file.txt, charset: alphanum, maximum length: 6, type: hash  
  10.  
  11. Start: 0 End: 1119488058 
  12.  
  13. Start: 1119488058 End: 2238976116 
  14.  
  15. Start array thread with 490 number of passwords!  
  16.  
  17. Writing session files...  
  18.  
  19. Writing session files...  
  20.  
  21. Writing session files...  
  22.  
  23. Writing session files...  
  24.  
  25. Writing session files...  
  26.  
  27. Writing session files...  
  28.  
  29. Password found: SCOTT:TIGERS:ORCL:MYPC  
  30.  
  31. Writing session files...  
  32.  
  33. Writing session files...  
  34.  
  35. Writing session files...  
  36.  
  37. ...  
  38.  
  39. Writing session files...  
  40.  
  41. Writing session files...  
  42.  
  43. Password found: SOMENAMES:X1M72Y:ORCL:MYPC  
  44.  
  45. Elpased time: 2152s  
  46.  
  47. Checked passwords: 1917149967 
  48.  
  49. Password / Second: 890868 
  50.  

上述密码文件中的第二个条目来自一个8i数据库系统,而Scott的哈希值来自10g版本。本文的寓意非常明确:保护好任何会显露用户名及其哈希密码值的东西,不要轻易让其被他人存取,特别是SYS.USER$表(不要依赖DBA_USERS视图)。

查找第二个用户的密码明文所花费的运行时间很合理。 有时候你可能要花费好几个小时(甚至好几天)来查找某个密码,不过这比起和那些讨厌停机的用户一起修改已经忘掉的密码花费的成本要低多了。

【编辑推荐】

  1. Oracle密码文件学习心得
  2. 详聊验证Oracle SQL语句
  3. 三分钟搞定oracle用户表空间
  4. Oracle导出sql语句存储过程
  5. 详聊Oracle用户表空间宝典

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/276086.html<

(0)
管理的头像管理
上一篇2025-05-10 12:07
下一篇 2025-05-10 12:08

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注