普通的黑客從進入到退出一次數據攻擊只需用不到10秒鐘時間就可完成,這個時間對于數據庫管理員來說即使注意到入侵者都幾乎不夠。因此,在數據被損害很長時間之前,許多數據庫攻擊都沒有被單位注意到。
令人奇怪的是,根據許多專家的介紹,作為企業之“王冠”的大本營,數據庫在許多企業中并沒有得到恰當的安全保護。惡意的黑客正利用非常簡單的攻擊方法進入數據庫,如利用弱口令和不嚴謹的配置,及利用未打補丁的已知漏洞等。
我們不妨先談談丟失備份磁帶的問題:如果丟失的或被盜竊的磁帶沒有加密,那么如果一個壞家伙得到了這種磁帶,你就等著瞧吧。這根本就不需要攻擊。
Forrester Group 的首席分析師Noel Yuhanna說,“最大的問題之一是許多數據庫攻擊甚至都不為人知,典型的數據庫每秒鐘擁有15000到20000次連接。對人類來說,要知道所有這些連接正在做什么是不太可能的!
黑客們對企業數據庫補丁的困難問題特別清楚。事實上,企業正指望backlog。那種企業能夠在一個數據中心中就可以鎖定少量數據庫的日子一去不復返了:當今的多數組織,擁有成千上萬的數據庫需要配置、保障安全、實施監視,而遠程用戶、客戶和企業合伙人都需要訪問這些數據庫。
數據庫安全廠商Sentrigo的CTO Slavik Markovich說,“困擾我的一個重大問題是,在我訪問一個客戶的站點時,通常情況下,其數據庫的配置是很脆弱的,以至于很容易就可以利用其漏洞。你通常并不需要緩沖區溢出或SQL注入攻擊,因為這種數據庫的初始配置總體上就是不安全的!
所有這些低垂的“果實”使得數據庫攻擊并不一定很復雜。Markovich說,“這些是基本的配置問題,因此一個黑客并不必要做一些真正復雜的事情,因為這些簡單的方法就可以奏效!
那么,這些攻擊是什么呢,企業如何阻止這種攻擊?下面我們看一下當今的黑客們正在利用的六大數據庫攻擊。多數攻擊都利用了組織設置其數據庫中的極明顯的缺陷。有一些缺陷對于內部的惡意人員更為有用,而另外一些由那些試圖得到公司的貴重數據的不法之徒所利用。不管怎樣,鎖定數據庫的唯一途徑是認識到罪惡之手是如何進入的。
下面是六大數據庫攻擊:
1.強力(或非強力)破解弱口令或默認的用戶名及口令
2.特權提升
3.利用未用的和不需要的數據庫服務和和功能中的漏洞
4.針對未打補丁的數據庫漏洞
5.SQL注入
6.竊取備份(未加密)的磁帶
下面分別分析一下:
1.對弱口令或默認用戶名/口令的破解
以前的Oracle數據庫有一個默認的用戶名:Scott及默認的口令:tiger;而微軟的SQL Server的系統管理員賬戶的默認口令是也是眾所周知。
當然這些默認的登錄對于黑客來說尤其方便,借此他們可以輕松地進入數據庫。
Oracle和其它主要的數據庫廠商在其新版本的產品中表現得聰明起來,它們不再讓用戶保持默認的和空的用戶名及口令等。但這并不意味著,所有的組織都在較老的數據庫中敞開著大門。
Forrester的Yuhanna說,“問題是企業擁有15000個數據庫,而完全地保護其安全并不容易。有時企業只能保障關鍵數據庫的安全,其它的就不太安全了,F在,較新的數據庫強制使你在安裝時改變系統管理員賬戶的默認口令。但較老的數據庫版本可能存在著問題!
但即使是唯一的、非默認的數據庫口令也是不安全的。Sentrigo的 Markovich 說,“你總可以在客戶那里找到弱口令和易于猜測的口令。通過強力破解或只試著用不同的組合就可以輕易地找到這種口令!
口令破解工具有很多,并且通過Google搜索或sectools.org等站點就可以輕易地獲得,這樣就會連接到Cain 、 Abel或John the Ripper等流行的工具。
保護自己免受口令攻擊的最佳方法:避免使用默認口令,建立強健的口令管理程序并對口令經常改變。
2.特權提升
有幾種內部人員攻擊的方法可以導致惡意的用戶占有超過其應該具有的系統特權。而且外部的攻擊者有時通過破壞操作系統而獲得更高級別的特權。應用安全公司的銷售副總裁Ted Julian說,“這是一種常見的威脅因素。”
特權提升通常更多地與錯誤的配置有關:一個用戶被錯誤地授與了超過其實際需要用來完成工作的、對數據庫及其相關應用程序的訪問和特權。
Forrester的Yuhanna說,“這是一個控制問題。有時一個企業并沒有提供哪些人員需要訪問何種資源的良好框架結構,而且通常情況下,數據庫管理員并沒有從業務上理解企業的數據。這是問題之一!
而且,有時一個內部的攻擊者(或者一個已經控制了受害人機器的外部的家伙)可以輕松地從一個應用程序跳轉到數據庫,即使他并沒有這個數據庫的相關憑證也可以如此。Yuhanna 說,“一個非特權用戶可以試著連接到數據庫,只要他可以訪問一個系統,如CRM,他就可以用同樣的口令通過檢查,即使他沒有獲得此數據庫的授權。有些控制并沒有實現很好的集中化。”
Sentrigo的Markovich近來能夠通過一個擁有少量特權的用戶賬戶攻入一個客戶的數據庫。Markovich說,“他們要求我攻入其數據庫。我找到了一個少量特權的用戶口令,然后就進入了系統。然后我檢查了他的特權,他擁有對數據庫的只讀性訪問,因此一個少量特權的用戶可以訪問讀取數據庫內的任何表,包括信用卡信息、個人信息。因此,我說:‘我不需要攻入數據庫!
專家們說,經驗法則應當說是僅給用戶所需要的數據庫訪問和權力,不要有更多的東西。
還有那些擁有合法訪問的特權用戶,他們頭腦中可能并沒有合法的操作!澳闳绾慰刂圃L問呢?這個領域也正在開始演化!
3.利用未用的和不需要的數據庫服務和功能中的漏洞
當然,一個外部的攻擊者會尋找較弱的數據庫口令,看其潛在的受害人是否在運行其Oracle數據庫上運行監聽程序(Listener)功能。監聽程序可以搜索出到達Oracle數據庫的網絡連接,并可以轉發此連接,這樣一來就會將用戶和數據庫的鏈接暴露出來。
只需采用一些Google hacking攻擊,一位攻擊者就可以搜索并找到數據庫服務上暴露的監聽程序。Markovich 說,“許多客戶并沒有在監聽程序上設置口令,因此,黑客就可以搜索字符串并找出Web上活動的監聽程序。我剛才搜索了一下,發現有一些可引起人們注意的東西,如政府站點。這確實是一個大問題!
其它的特性,如操作系統和數據庫之間的鉤子可以將數據庫暴露給攻擊者。這種鉤子可以成為達到數據庫的一個通信鏈接。Yuhanna說,“在你鏈接庫和編寫程序時…那將成為與數據庫的界面,”你就是在將數據庫暴露出去,并可能在無認證和無授權的情況下讓黑客進入內部。
通常,數據庫管理員并沒有關閉不需要的服務。Julian 說,“他們只是任其開著。這種設計過時且管理跟不上,這是讓其發揮實際作用的最簡單方法。不需要的服務在基礎結構中大搖大擺地存在,這會將你的漏洞暴露在外!
關鍵是要保持數據庫特性的精簡,僅安裝你必須使用的內容。別的東西一概不要。Markovich說,“任何特性都可被用來對付你,因此只安裝你所需要的。如果你并沒有部署一種特性,你就不需要以后為它打補丁!
4.針對未打補丁的數據庫漏洞
好消息是Oracle和其它的數據庫廠商確實在為其漏洞打補丁。壞消息是單位不能跟得上這些補丁,因此它們總是處于企圖利用某種機會的老謀深算的攻擊者控制之下。
數據庫廠商總是小心翼翼地避免披露其補丁程序所修正的漏洞細節,但單位仍以極大的人力和時間來苦苦掙扎,它會花費人力物力來測試和應用一個數據庫補丁。例如,給程序打補丁要求對受補丁影響的所有應用程序都進行測試,這是項艱巨的任務。
Yuhanna 說,“最大問題是多數公司不能及時安裝其程序補丁,一家公司告訴我,他們只能關閉其數據庫一次,用六小時的時間打補丁,它們要冒著無法打補丁的風險,因為它們不能關閉其操作!
Markovich說,在今天正在運行的多數Oracle數據庫中,有至少10到20個已知的漏洞,黑客們可以用這些漏洞攻擊進入。他說,“這些數據庫并沒有打補丁,如果一個黑客能夠比較版本,并精確地找出漏洞在什么地方,那么,他就可以跟蹤這個數據庫。”
而且一些黑客站點將一些已知的數據庫漏洞的利用腳本發布了出來,他說。即使跟得上補丁周期有極大困難,單位也應當打補丁。他說,例如,Oracle4月15日的補丁包含了數據庫內部的17個問題。這些和其它的補丁都不應當掉以輕心。每一個問題都能夠破壞你的數據庫。
5.SQL注入
SQL注入式攻擊并不是什么新事物了,不過近來在網站上仍十分猖狂。近來這種攻擊又侵入了成千上萬的有著鮮明立場的網站。
雖然受影響的網頁和訪問它的用戶在這些攻擊中典型情況下都受到了重視,但這確實是黑客們進入數據庫的一個聰明方法。數據庫安全專家們說,執行一個面向前端數據庫Web應用程序的SQL注入攻擊要比對數據庫自身的攻擊容易得多。直接針對數據庫的SQL注入攻擊很少見。
在字段可用于用戶輸入,通過SQL語句可以實現數據庫的直接查詢時,就會發生SQL攻擊。也就是說攻擊者需要提交一段數據庫查詢代碼,根據程序返回的結果,獲得某些他想得知的數據。
除客戶端之外,Web應用程序是最脆弱的環節。有些情況下,如果攻擊者得到一個要求輸入用戶名和口令的應用程序的屏幕,而且應用程序并不檢查登錄的內容的話,他所需要做的就是提供一個SQL語句或者數據庫命令,并直接轉向數據庫。Yuhanna說,問題是身份驗證和授權已經被移交給了應用程序服務器。
他說,“此時輸入的并不是一個用戶名,而是一個SQL命令。它被輸入到一個數據包中,并且由應用程序服務器發送給數據庫。這個數據庫會讀取欺詐性的SQL命令,而且它能夠完全關閉整個數據庫!
他說,“這是開發者的一種可悲的開發方法。你必須關注用戶正在輸入的內容。不管你想執行什么,數據庫都會執行。這是很令人驚慌的問題。SQL注入式攻擊是一個很大的問題!
Sentrigo 的Markovich說,從Web應用程序到數據庫兩個方面都可以實施SQL注入式攻擊,而且可以從數據庫內部實施。但有一些程序設計方法可有助于防止應用程序中的SQL注入攻擊漏洞,如使用所謂的綁定變量(bind variable)或者使用參數進行查詢等。
Markovich說,在Java等語言中,這就意味著在SQL語句中將問號用作占位符,并將“接收”值與這些占位符綁定。另外一種方法是避免顯示某些數據庫錯誤消息,目的是避免將可能敏感的信息透露給潛在的攻擊者。
6.竊取(未加密的)備份磁帶
如果備份磁帶在運輸或倉儲過程中丟失,而這些磁帶上的數據庫數據又沒有加密的話,一旦它落于罪惡之手,這時黑客根本不需要接觸網絡就可以實施破壞。
但這類攻擊更可能發生在將介質銷售給攻擊者的一個內部人員身上。只要被竊取的或沒有加密的磁帶不是某種Informix或HP-UX 上的DB2等較老的版本,黑客們需要做的只是安裝好磁帶,然后他們就會獲得數據庫。
Julian說,“當然,如果不是一種受內部人員驅動的攻擊,它就是非主要的。”他說,同樣的原因,閃盤也是另外一種風險。
除了沒有對備份介質上的數據進行加密等明顯的預防措施,一些單位并沒有一直將標簽貼在其備份介質上。“人們備份了許多數據,但卻疏于跟蹤和記錄。”Yuhanna說,“磁帶容易遭受攻擊,因為沒有人會重視它,而且企業在多數時間并不對其加密。”
|