密码**,大部分其实是通过枚举的方式,列出可能的密码,然后逐个尝试,直到找到真正的密码,有时也叫暴力**。接下来,我们将举几个密码**的例子。
n 密码**例1--- OrakelCrackert
实验环境:Oracle 11g (Linux)
从数据字典中获得要**的用户信息,本例中的要**的用户是ZZ2。
1) 得到账户信息
SQL> select name, password, spare4 from sys.user$ where name = 'ZZ2';
NAME PASSWORD SPARE4
------------------------------ ------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ZZ2 7F9F9BE075CE7FDF S:C6F1AEE4FEA1505040BE0075534DE8F6D3B598822C7253B741A3D46ED75D
SQL>
注意PASSWORD、SPARE4对应的值。这些信息将用于**。
2) 下载OrakelCrackert到你的台式机上
http://freeworld.thc.org/thc-orakelcrackert11g/thc-orakelcrackert11g.tar.gz
3) 启动**
解压后双击thc-orakelcrackert11g.exe
4) 执行**
输入下面的值
USERNAME= ZZ2
OLDSK3WL HASH=7F9F9BE075CE7FDF
SPARE4 HASH= C6F1AEE4FEA1505040BE0075534DE8F6D3B598822C7253B741A3D46ED75D(没有冒号及前面的值)
设置密码的长度。本例中为了方便实验,设置为2(本来就已知密码长度是2)
设置完成后 ,点击”Start”,不一会儿功夫,密码出来了,用户zz2的密码是wy(如下图所示)。
n 密码**例2---使用ops_sse2**Oracle的密码
环境
OS:LINUX
DB:Oracle 11G
1) 下载ops_sse2
[[email protected] db_base]$ wget http://conus.info/utils/ops_SIMD/ops_SIMD_linux86.tar
--2013-05-13 21:21:45-- http://conus.info/utils/ops_SIMD/ops_SIMD_linux86.tar
Resolving conus.info... failed: Temporary failure in name resolution.
wget: unable to resolve host address `conus.info'
[[email protected] db_base]$ wget http://conus.info/utils/ops_SIMD/ops_SIMD_linux86.tar
--2013-05-13 21:25:15-- http://conus.info/utils/ops_SIMD/ops_SIMD_linux86.tar
Resolving conus.info... 78.46.87.164
Connecting to conus.info|78.46.87.164|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 245760 (240K) [application/x-tar]
Saving to: `ops_SIMD_linux86.tar'
100%[==============================================================================================================================>] 245,760 83.3K/s in 2.9s
2013-05-13 21:25:21 (83.3 KB/s) - `ops_SIMD_linux86.tar' saved [245760/245760]
2) 解压
[[email protected] db_base]$ tar -xf ops_SIMD_linux86.tar
3) 得到加密口令
SQL> select password from user$ where name='SYS';
PASSWORD
------------------------------
CEEFED71DA7851B3
SQL>
4) 编辑文件filename.txt
[[email protected] db_base]$ cat filename.txt
在文件中加入下面的内容
SYS:CEEFED71DA7851B3:MOT
SYS 是用户名
CEEFED71DA7851B3 是加密密码,从上面的查询中得到的
MOT 是实例名
5) 执行口令**
[[email protected] db_base]$ ./ops_sse2 --hashlist=filename.txt
Oracle passwords (DES) solver 0.3 (SSE2) -- Dennis Yurichev <[email protected]>
Compiled @ Mar 2 2013 06:19:03
username=SYS: 1 unsolved hash(es) left
Checking 1-symbol passwords for username SYS
overall progress= 0%
username=SYS: 1 unsolved hash(es) left
Checking 2-symbol passwords for username SYS
overall progress= 0%
SYS/MOT: Found password: WY
SYS:WY:MOT
密码很快被**了。
n 密码**例3---使用Checkpwd**Oracle的密码
OS:Windows XP
DB:Oracle 10G
Checkpwd也是一款基于数据字典**Oracle密码的工具。它也能**SYS的密码。不过,如果密码的长度超过2位,它好像就不能很好**(内置用户的默认密码除外)。可以使用这个工具校验Oracle账户密码的安全性。
下面的例子将把下载的Checkpwd解压到 C:\oracle_checkpwd_big
Step01:创建测试用户u1
SQL> create user u1 identified by u1;
用户已创建。
SQL>
用户的密码也是u1
Step02:得到用户的加密密码
本例中的参数解释:
checkpwd**命令
system/wy用户名/密码
192.168.1.116:1521数据库服务器的IP地址和端口号
NBO 实例名
password_fi.txt口令文件,从解压文件中解压出来的
开始**………………….
C:\oracle_checkpwd_big>checkpwd system/[email protected]//192.168.1.116:1521/NBO password_fi
.txt
Checkpwd 1.23 [Win] - (c) 2005-2007 by Red-Database-Security GmbH
Oracle Security Consulting, Security Audits & Security Trainings
http://www.red-database-security.com
initializing Oracle client library
connecting to the database
retrieving users and password hash values
disconnecting from the database
opening weak password list file
reading weak passwords list
checking passwords
Starting 1 threads
SYS has weak passwordKK[OPEN]
SYSTEM has weak passwordWY[OPEN]
U2 OK [OPEN]
U1 has weak passwordU1[OPEN]
OUTLN has weak passwordOUTLN[EXPIRED & LOCKED]
MGMT_VIEW OK [EXPIRED & LOCKED]
MDSYS has weak passwordMDSYS[EXPIRED & LOCKED]
ORDSYS has weak password ORDSYS [EXPIRED & LOCKED]
CTXSYS has weak password CHANGE_ON_INSTALL [EXPIRED & LOCKED]
ANONYMOUS OK [EXPIRED & LOCKED]
EXFSYS has weak password EXFSYS [EXPIRED & LOCKED]
DMSYS has weak password DMSYS [EXPIRED & LOCKED]
DBSNMP has weak password DBSNMP [EXPIRED & LOCKED]
WMSYS has weak password WMSYS [EXPIRED & LOCKED]
SYSMAN has weak password SYSMAN [EXPIRED & LOCKED]
XDB has weak password CHANGE_ON_INSTALL [EXPIRED & LOCKED]
ORDPLUGINS has weak password ORDPLUGINS [EXPIRED & LOCKED]
SI_INFORMTN_SCHEMA OK [EXPIRED & LOCKED]
OLAPSYS has weak password MANAGER [EXPIRED & LOCKED]
MDDATA has weak password MDDATA [EXPIRED & LOCKED]
DIP has weak password DIP [EXPIRED & LOCKED]
SCOTT has weak password TIGER [EXPIRED & LOCKED]
TSMSYS has weak password TSMSYS [EXPIRED & LOCKED]
Done. Summary:
Passwords checked : 8395247
Weak passwords found : 19
Elapsed time (min:sec) : 0:58
Passwords / second : 144746
C:\oracle_checkpwd_big>
**出:
U1的密码是U1
SYS的密码是KK
SYSTEM的密码是WY
n 密码**例4---使用orabf**Oracle的密码
环境说明
OS:Windows XP
DB:Oracle 10G
orabf-v0.7.6是一款基于数据字典,**Oracle密码的工具,也是Oracle密码**目前最快的工具。它甚至能**SYS的密码。功能非常强大,如果密码的长度很长,则需要花费很长的时间进行**。
下面的例子将把下载的orabf-v0.7.6解压到C:\orabf-v0.7.6
**普通用户
Step01:创建测试用户u1
SQL> create user u1 identified by t5593;
用户已创建。
SQL>
Step02:得到用户的加密密码
SQL> select username,password from dba_users where username='U1';
USERNAME PASSWORD
------------------------------ ------------------------------
U1 75789C9844E63228
Step03:根据加密密码**用户u1的密码
C:\orabf-v0.7.6>orabf75789C9844E63228:U1
orabf v0.7.6, (C)2005 [email protected]
---------------------------------------
Trying default passwords...done
Starting brute force session using charset:
#$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_
press 'q' to quit. any other key to see status
current password: F6IPF
13656128 passwords tried. elapsed time 00:00:11. t/s:1153024
password found: U1:T5593
45964574 passwords tried. elapsed time 00:00:41. t/s:1110088
快速**出用户U1的密码是T5593
**SYS用户的密码
Step01:得到用户的加密密码
SQL> select username,password from dba_users where username='SYS';
USERNAME PASSWORD
------------------------------ ------------------------------
SYS CEEFED71DA7851B3
Step02:根据加密密码**用户SYS的密码
C:\orabf-v0.7.6>orabf CEEFED71DA7851B3:sys
orabf v0.7.6, (C)2005 [email protected]
---------------------------------------
Trying default passwords...done
Starting brute force session using charset:
#$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_
press 'q' to quit. any other key to see status
password found: SYS:WY
921 passwords tried. elapsed time 00:00:00. t/s:1
快速**出用户SYS的密码是WY。
n 密码**的防御
使用很多工具,轻而易举地就**了Oracle用户的密码,说明**Oracle的密码不是什么难事。那么如何不让别人轻而易举地**或者获得Oracle的密码呢?有下面切实可行的措施:
? 登录延迟
“登录延迟”是一个自动化的过程,不需要DBA的干预,当用户第一、二、三次登录数据库失败时,系统没有什么异常。但是,当用户第四次登录失败时,Oracle并不会立马让用户尝试重新登录,而是延迟一段时间,然后才让用户登录,第五次,第六次……都是这样。“登录延迟”可以延缓密码**的过程。
? 设置复杂的口令
1) 尽量设置较长的口令,口令的长度可最多达到30个字符。
2) 口令包括大小写
3) 口令包含数字
4) 口令包含多字节字符
5) 口令包含下划线(_)、 美元符号($)、井号(#)等特殊字符
6) 不要用单词作为口令
7) 密码不能和用户名不能相同
? 使用资源限制文件(Profile),制定口令管理策略
创建资源限制文件(例如limit_password),这个资源限制文件用于制定用户的口令策略。
SQL> CREATE PROFILE limit_password LIMIT
2 FAILED_LOGIN_ATTEMPTS 5
3 PASSWORD_LIFE_TIME 60
4 PASSWORD_REUSE_TIME 60
5 PASSWORD_REUSE_MAX 5
6 PASSWORD_LOCK_TIME 1/24
7 PASSWORD_GRACE_TIME 10;
Profile created
SQL>
例如,下面的两个参数就非常重要。:
FAILED_LOGIN_ATTEMPTS:允许登录失败的次数,超过指定的次数后,这个账号将被锁定。
PASSWORD_LIFE_TIME:口令的生存时间,如果在口令的生存时间内,用户没有修改过口令,则这个口令在生存时间到达之后将会失效。
? 通过UTLPWDMG.SQL,设置更严格的口令规则设置
UTLPWDMG.SQL的用法如下所示(以11g为例):
运行脚本UTLPWDMG.SQL,创建口令复杂度函数
SQL> @/nbo/11g/db_base/db_home/rdbms/admin/utlpwdmg.sql
Function created.
Profile altered.
Function created.
SQL>
脚本utlpwdmg.sql 的位置是$ORACLE_HOME/rdbms/admin/
本例中的位置是/nbo/11g/db_base/db_home/rdbms/admin/
启用口令复杂度函数
SQL> ALTER PROFILE default LIMIT
2 PASSWORD_VERIFY_FUNCTION verify_function_11G;
Profile altered.
SQL>
当创建用户或者用户口令发生变化时,将会利用口令复杂度函数进行口令的复杂度检查。
? 使用操作系统认证或者第三方认证
原文地址:http://blog.chinaunix.net/uid-16728139-id-3694866.html