對於那些對Oracle關系數據庫系統的安全問題,特別是涉及到Oracle密碼機制或算法的問題非常關注的人來說,老版本Oracle(特別是10g及其以下的版本)一直被認作是黑客們容易得手的攻擊目標。似乎你永遠不可能找到能百分之百保護你的系統免受黑客攻擊的辦法。你可以從很多方面來武裝你的系統,但是有一些事情你是永遠不可能避免的,例如總會有人有需要必須能夠接觸到並存取敏感數據,絕大多數的客戶端連接也都會涉及到通過網絡來傳輸數據。
有時候數據庫管理員也不得不動用一下“黑客”的密碼破解技巧才能解決問題。你會問,數據庫管理員本來就有數據庫內部所有的密鑰,又怎麼搖身一變成了黑客呢?因為能夠存取所有的數據並不意味著可以查看所有的數據。特別是,能夠查看密碼的哈希值(hashed value),並不代表就能看到密碼本身。
那麼數據庫管理員為什麼會想要看到實際的密碼值呢?更確切的講,為什麼數據庫管理員想要知道某個特定的密碼明文呢?你可以想象很多情況下確實是有這個需要,常見的原因包括老應用產品的使用,高頻率的人員調動,原本的密碼管理和密碼歸檔沒有做好等等。改變SYS和SYSTEM密碼通常不是什麼大問題,但是如果是OLD_APP模式的密碼呢?
在網上搜索“Oracle密碼破解工具”,你會找到不少“好東西”,甚至還能找到自制的類似於黑客程序的軟件。本文選擇了Laszlo Toth的woraauthbf工具,從以下鏈接(http://www.soonerorlater.hu/index.khtml?article_id=513)可以浏覽並下載,該程序能很好的滿足本文的需要。你可以先用woraauthbf創建一個包括用戶名、哈希密碼值、SID和服務器名的文本文件來對付Oracle的老版本看看。提供的這幾項中只要用戶名和哈希密碼值是真的就行了。你如果深入研究過Oracle是怎麼創建哈希值的,你肯定會清楚用戶名和密碼是緊密連鎖的,而SID和服務器名和哈希值的創建沒有任何關系。其他的一些“破解”程序依賴於網絡信息,例如客戶端、服務器IP地址、端口和第三方“嗅探器”工具來窺視在客戶端和服務器之間傳送的數據。
還是快速進入實例吧。復制下面指令的輸出結果到一個txt文件,這樣就創建了上文所說的密碼文件。
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
所有參數選用默認,執行完本次會話輸出結果如下所示:
C:[my path]>woraauthbf.exe -p c:password_file.txt
Usernames will be permuted!
The number of processors: 2
Number of pwds to check: 321272406
Number of pwds to check by thread: 160636203
Password file: c:password_file.txt, charset: alpha, maximum length: 6, type: hash
Start: 0 End: 160636203
Start array thread with 489 number of passwords!
Start: 160636203 End: 321272406
Writing session files...
Writing session files...
Password found: SCOTT:TIGERS:ORCL:MYPC
Elpased time: 164s
Checked passwords: 153976754
Password / Second: 938882