久久精品无码视频|精产国品色情一二三区在线观看|国产性爱自拍视频|亚洲av韩国av|日韩美女一级AAA大片|少妇无码激情诱惑|日韩AV在线播放有码|一级黄片一级黄片|av上一页亲亲久草av|aaa在线观看国产做爱

您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
政企安全 正文
發(fā)私信給又田
發(fā)送

0

oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

本文作者: 又田 2017-11-28 08:25
導語:oracle數據庫雖然經歷了幾十年的發(fā)展,但還存在著這樣或那樣的安全問題,數據庫的安全風險是多個角度、多個層面共同作用的結果。

oracle 數據庫一直占據全球數據庫市場份額之首,由于關注度和使用率高,目前被發(fā)現的漏洞數量同樣居首。漏洞攻擊是黑客最慣常使用的手段,以竊取或篡改數據為主要目的,甚至通過攻陷數據庫控制整個系統。

這些攻擊手段大多有跡可循,本期硬創(chuàng)公開課,雷鋒網宅客頻道邀請了安華金和攻防實驗室安全專家劉思成,他將通過分析典型攻防案例,幫助大家掌握黑客攻擊手法和特征,提前感知威脅,提早進行安全防護。

嘉賓介紹

oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

劉思成,安華金和攻防實驗室安全專家。多年數據庫漏洞及攻防原理研究經驗,參與發(fā)現國內首個國際數據庫漏洞,并獲 CVE 認證。至今與團隊成功發(fā)現數據庫漏洞 13 個,包含多個國際數據庫中高危漏洞以及國產數據庫超高危、高危漏洞,具備深厚的數據庫攻防研究能力與經驗儲備,關注全球數據安全事件,并通過攻防演練還原泄漏原因和攻擊手段,并提供專業(yè)的安全解決思路。

以下是公開課總結文實錄+視頻,在不妨礙原意的表達上,雷鋒網略有刪節(jié),視頻附在文末:

若想獲得此次公開課完整 PPT,請關注微信公眾號宅客頻道(微信ID:letshome),回復“oracle數據庫 ”。

內容介紹

本期雷鋒網硬創(chuàng)公開課包含但不限于以下內容:

1. 在運維測數據庫安全將面對哪些安全挑戰(zhàn)?

2. 數據庫配置不當帶來的安全挑戰(zhàn)。

3. 數據庫漏洞帶來的安全挑戰(zhàn)。

4. 數據庫勒索病毒帶來的安全挑戰(zhàn)。

oracle數據庫雖然經歷了幾十年的發(fā)展,但還存在著這樣或那樣的安全問題,數據庫的安全風險是多個角度、多個層面共同作用的結果。我們用的數據庫掃描工具給很多客戶做過數據庫安全檢查,在檢查中發(fā)現了各種問題。其中包含默認密碼、數據庫后門、數據庫配置不當、敏感數據、高危審計、版本錯誤、數據庫漏洞以及數據庫勒索病毒等。今天我和大家分享的是運維側最常見的三種安全問題:數據庫配置不當、數據庫安全漏洞和數據庫勒索病毒。

數據庫配置不當

oracle 數據庫存在幾千個參數配置項,難免在配置中出現錯誤或者不合理的情況。當發(fā)生錯誤配置時,帶來的安全問題甚至比數據庫漏洞造成的后果要嚴重的多。我們把和安全相關的數據庫配置分為四類:

1)參數設置不當。

2)角色設置不當;

3)系統權限設置不當 ;

4)包權限設置不當。

其中,參數設置不當是指,某些參數進行了錯誤設置,這是針對所有數據庫用戶而言,錯誤的設置可能會給漏洞提供溫床、也可能本身就能當作漏洞執(zhí)行。角色、系統權限和包權限設置不當是專門針對低權限數據庫用戶而言,錯誤的設置可能導致低權限用戶利用特定角色、系統權限或包把自己提權到 DBA 或其他默認高權限用戶。

1、用戶真實案例

oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

有一次,我們在用戶現場用數據庫漏掃產品幫用戶做安全檢查,結果發(fā)現用戶側上圖所示的參數被設置成了*。用戶一開始覺得這個設置沒什么大問題,隨著我們向用戶展示如何利用這個錯誤配置項,攻擊數據庫,用戶發(fā)現原來這個錯誤配置會造成嚴重后果。

那么,上圖所示 UTL_FILE_DIR 和 utl_file是用來做什么的呢?

l UTL_FILE包:用來讀寫操作系統上的文本文件

l UTL_FILE_DIR :Oracle 的一個靜態(tài)參數,負責確定UTL_FILE 讀寫路徑。

1)參數配置不當

當 UTL_FILE_DIR 的參數被設置為*的時候就意味著可以用數據庫用戶訪問操作系統Oracle 賬號下的所有文件。假如你是黑客,你會怎么利用這點來攻擊數據庫呢? oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

當我們具備讀寫文件的能力,最直接的做法就是利用寫的權限,在home/oracle 下寫一個腳本。例如這個腳本可以讓我們在home/oracle 路徑下創(chuàng)建一個腳本 hell,該腳本可以塞入到Oracle 賬號權限下能執(zhí)行的所有行為,作為黑客的我們就可以為所欲為了。當然,這只是個演示,于是我們寫的是Hello world。 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

理想很美好,但現實卻很骨感。在windows上如果數據庫賬號未經過降權限處理,此舉或許可行,但對于linux來說不可以,因為如此創(chuàng)建的文件并沒有執(zhí)行權限,根本無法執(zhí)行或被調用。新建的文件不行,但如果是覆蓋已有的文件,或許就能達到目的。其中,可以覆蓋的文件有很多例如oracle_home\bin 路徑下的 dbstart。但是這種腳本的方式需要調用才能執(zhí)行,很可能很久之后才能被動觸發(fā),如此守株待兔哪有主動出擊來得暢快呢。 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

這時候,我們可以調整思路去覆蓋一些對數據庫直接產生影響的文件。例如下圖所示的這個文件,是數據庫下的密碼文件,里面存儲了sys用戶在身份驗證時的密碼和一些關鍵信息。

 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

▲orapworcl 是Oracle 的密碼文件

圖中是orapworcl的結構,其實完全不用弄清楚其中的細節(jié),只要使用一個密碼已知的該文件,將其中的二進制覆蓋到目標文件即可。如此一來,就達到了任意用戶可修改SYS用戶密碼的效果。 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

根據上述想法,咱們把整個文件中的內容替換成我們已知密碼的文件,再使用低權限賬號執(zhí)行sql ,完成之后當再一次登錄數據庫時會發(fā)現,原來 sys 賬號的 test 密碼已經無法正常登錄,修改后的sys 密碼卻可以正常登錄數據庫。 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

至此,我們完成了利用ult_file_dir 參數錯誤配置,實現低權限用戶可在數據庫服務器上注入腳本和修改SYS賬號密碼的攻擊演示。

除上述案例中講述的一類參數配置錯誤導致的安全問題,角色權限、系統權限和包權限設置不當,同樣會導致低權限用戶直接獲得提權至DBA,或能夠控制操作系統、越權執(zhí)行任意sql 語句。

 2)角色權限設置不當

例如,角色權限設置不當。當角色被賦予低權限用戶,相當于交出了完整的java權限,可以讓低權限用戶通過Oracle 賬號權限獲得操作系統的操作權限,從而可在操作系統上為所欲為。

3)系統權限設置不當

系統權限設置不當一旦出現,這種情況就更危險了。執(zhí)行任意存儲過程的權限一旦被賦予低權限用戶,后者可以利用某些調用者權限存儲過程實現提權到DBA的目的。

4)包權限設置不當

包權限設置不當也是一件麻煩事兒。如果把包權限給了低權限用戶,低權限用戶就可以利用語句以SYS權限調用執(zhí)行計劃函數,從而有機會執(zhí)行任意sql語句。

總結下來,因為數據庫配置不當帶來的安全隱患表現為:

角色權限設置不當——AVASYSPRIV角色給予低權限用戶

系統權限設置不當——EXECUTE ANY PROCEDURE權限給低權限用戶

包權限設置不當——DBMS_IJOB包權限給低權限用戶

2、防護建議

那么如何既簡單又高效的解決配置不當引起的安全問題?針對配置不當,我們提供三條安全防護建議,90%的安全問題都可迎刃而解:

1)嚴格按照Oracle官方網站的建議進行配置,切莫簡單滿足應用需求,而自毀長城。

2)對所有賬號實施最小權限控制。尤其是對于第三方開發(fā)調試所給予的數據賬號密碼一定要保持滿足需求下的最小權限,最小權限將有效的減小數據庫被入侵的威脅。

3)禁止或刪除數據庫對OS文件訪問的函數或存儲過程,避免殃及整個數據庫所在的操作系統和內網環(huán)境。

此外,還有一種更省事的辦法,就是直接用成熟的數據庫漏掃產品進行定期檢查。

數據庫安全漏洞

數據庫漏洞威脅一直是數據庫的嚴重威脅。從不同角度來看數據庫存在多種不同分類方式,按照漏洞屬性分,數據庫漏洞大體分為兩種類型:第一是數據庫專有漏洞,第二類是通用性軟件漏洞。

 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

上圖的分類并不完善,但涵蓋了最主流的數據庫漏洞類型。接下來,一起看一個跨越多版本的、覆蓋面廣、很難被發(fā)現的數據庫漏洞組合利用案例:

1、真實案例:從協議上入侵Oracle

該案例是我們首次在用戶的數據庫中發(fā)現,同時存在 CVE-2012-1675 漏洞和 CVE-2012-3137 漏洞。這兩個漏洞單均為中危漏洞,但兩者組合使用會呈現出高危漏洞的效果。兩個漏洞和數據庫通訊協議密切相關,一旦被黑客利用,可以借此從網絡端對 Oracle 數據庫發(fā)動攻擊。

黑客組合使用該漏洞組合可以分為三步:依次為探、改、破。

第一步:探。利用CVE-2012-1675 竊聽用戶客戶端和數據庫之間的通訊內容,盜取數據;

第二步:改。利用代理轉發(fā)機制,對特定語句進行改包,以此返回黑客想盜取的信息;

第三步:破。通過網絡竊取拿到數據庫登錄包的身份驗證部分,再利用CVE-2012-3137漏洞進行離線暴力破解,拿到數據庫的用戶名和密碼。

在討論細節(jié)前,我們先探討一下這兩個漏洞的適用范圍和原理:

TNS劫持(CVE-2012-1675)包含三個特點:

可用范圍廣(10g到11g大部分版本受到影響)

屬于機制問題,多年未修復

隱藏性好(入侵過程不易留下痕跡)

離線暴力破解(CVE-2012-3137):截獲到登錄包后可以通過特定標記算出加密的密碼。

簡單說,TNS劫持原理是基于Oracle 支持多個實例注冊在一個監(jiān)聽下,實例去注冊監(jiān)聽有兩種方式

第一種方式:本地注冊

第二種方式:遠程注冊

同名的實例和IP端口會被誤認為是一組RAC,而后按照負載均衡調用。

oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

于是黑客只要知道目標數據庫所注冊的TNS在哪,偽造一組IP端口和實例名把自己通過遠程注冊的機制,注冊到TNS中,就像下圖中展示的有兩個test11test實例。一個test11test是本地注冊的,另一個是黑客通過遠程注冊的。當黑客把自己注冊成同名實例后,只要維持好心跳,讓TNS一直以為遠程實例存活,TNS就可能把客戶端發(fā)起的會話轉發(fā)到黑客的偽造的實例上,從而發(fā)給黑客。黑客繼而將會話再轉發(fā)回數據庫即可。

 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

Tns劫持本質就是一個大代理,因為負載均衡把一部會話轉到黑客處,黑客改包后在轉回給真實數據庫處理。這樣數據庫和客戶端可能在一段時間內都無法感覺到其中的變化。因此,劫持可以默默潛伏偷聽敏感信息或者直接對來包進行改包,得以查詢敏感信息。

1)TNS劫持的真實效果

 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

模擬黑客在同一個監(jiān)聽下利用遠程和本地分別注冊兩個同名實例。客戶端訪問監(jiān)聽,監(jiān)聽按照客戶端中的數據庫名信息分配數據庫,由于監(jiān)聽下有2個同名實例名,客戶端鏈接很可能會被分配到劫持者的數據庫實例下,再通過配置劫持者的本地監(jiān)聽把客戶端請求指回原數據庫。

 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

測試客戶端鏈接196次,目標數據庫實例獲得113次,劫持數據庫實例獲得83次基本滿足負載均衡的假設。上圖的第一個實例是local server真實的數據庫實例,第二個實例是 remote server 黑客偽造的,通過上述方式我們可以截獲約一半的客戶端發(fā)送到服務器的合法鏈接,并從其中盜取數據,甚至進行改包。

2)離線暴力破解原理

 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

離線暴力破解(CVE-2012-3137)這個漏洞的原理是如果能獲取Oracle 數據庫登錄包中的身份驗證部分,則可以通過這個包來計算出當前登錄所使用的賬號和密碼。在深入探討之前,咱們還是一起看下身份驗證部分的原理:

在Oracle發(fā)起連接后,Oracle客戶端向Oracle數據庫發(fā)送自己的版本號,包含加密算法等信息。最終2邊確定使用什么加密算法,然后進行O5logon(身份驗證協議)驗證:

首先,客戶端通過包把要進行身份驗證的用戶傳輸到數據庫端。

接著,數據庫端會針對身份校驗用戶名找到用戶名對應的密碼,通過一些列復雜的參數把密碼算成一個48個字節(jié)的字符串,這個字符串被稱為auth_sesskey。然后把auth_sesskey和隨機鹽通過網絡包返回給客戶端。

然后,客戶端拿到服務器端的auth_sesskey,根據自己掌握的密碼解出其中的隨機數,在利用隨機數生成客戶端的 auth_sesskey和authpassword。

最后,數據端進行判斷,如果成功則身份驗證通過,后面再進行權限等的驗證;如果失敗則登錄失敗。

o5logon 協議具體算法

 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

上文提到客戶端發(fā)給服務器的第一個包,上圖中畫紅線的位置就是此次進行身份驗證的用戶,用戶名是明文的。再看服務器給客戶端的回包,回包中存在兩個關鍵參數,也就是隨機鹽:AUTH_sesskey 和auth_vfr_data。其中,AUTH_sesskey是以Oracle_hase 為key 用當時系統通過一些列參數生成的40個字節(jié)隨機數,使用aes-256-cbc進行加密生成;Oracle_hase則是Oracle中存儲的對應用戶名的密鑰進行sha1和md5的結果。后面的客戶端的 auth_sesskey 和 auth_password 也是通過類似的手段計算得出。

離線暴力破解

離線暴力破解漏洞正是利用存在該漏洞的版本,如果你使用正確的密碼算出Oracle_hash。用Oracle_hash再對網絡包中的auth_sesskey 進行解密,你會發(fā)現40個字節(jié)的隨機字符串中的最后4個字節(jié)是0x40x040x040x040這種模式,并非一組毫無規(guī)律的隨機數。因此,可以反推出用于計算oracle_hash的密碼是真正的數據庫密碼。

 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

2、防護建議

如何防護數據庫漏洞引發(fā)的對運維側的攻擊,我們提出兩條防護建議:

1)如果允許第一時間內打補丁是非常必要的。官方補丁能解決95%的問題,攻擊數據庫經常都是用的很老的漏洞,0day比例就很小。

2)如果由于測試結果或環(huán)境的問題無法打補丁,那么只能采用具備虛擬補丁能力的數據庫防火墻產品進行加固,虛擬補丁通過規(guī)則可以防護大部分已知數據庫漏洞的攻擊。

視頻內容:

視頻主要介紹一套組合漏洞,TNS 劫持+離線暴力破解,這兩個漏洞本身危害極大,加在一起可以更加擴大它的使用范圍。我先簡要介紹一下 TNS 遠程劫持,TNS 遠程注入劫持只需要知道目標數據庫的 IP 地址、端口號和實例名,知道這三項后可通過欺騙的方法,把自己注冊到 TNS 監(jiān)聽上,以偽裝成一個數據庫實例。

然后客戶端在訪問數據庫的時候,會通過監(jiān)聽進行均衡,監(jiān)聽很容易把客戶端會話引到這臺假的服務器上,假的數據服務器為了保證客戶端和數據庫不發(fā)現它,還要通過代理的方法,重新把數據導回到真正的數據庫上,從而達到欺騙兩邊的目的。

而 TNS 監(jiān)聽使不法分子監(jiān)聽數據庫上的所有會話,也就是數據庫客戶端和數據庫之間的會話會被不法分子監(jiān)聽到,不法分子就會拿到上面的明文信息,甚至在一定計劃條件下可以對明文信息進行轉包或者篡改包,使不法分子利用該會話權利拿到自己想要知道的真正的數據。

不僅如此,其還為離線破解密碼創(chuàng)造了有利條件,離線暴力破解是通過數據庫登錄信息包來獲得密碼信息的方法,它可以快捷有效的通過離線數據庫包中的密文進行解密,來獲得真正數據庫所使用的密碼。補充一下,這兩個漏洞危害較大,離線破解方法,基本上可以全版本通殺,而對應的 TNS 劫持則相對只局限在 10 和 11 這兩個大版本上。

下面進行TNS 劫持演示。TNS 劫持是通過腳本來執(zhí)行,首先,第一個腳本是為維護轉發(fā)包,并不會馬上啟動,是等待有數據進來后才開始干活,我們通過第二個腳本注冊數據庫實例,它會把 我14.200 這臺機器注冊到 0.58 的 TNS 上,而以oracl11的名字來注冊。

而我們演示的環(huán)境背景是以 192.168.14.204 作為數據庫,來要劫持其數據庫的會話信息。我先要成功的注冊過去,也就是說現在客戶端對 這臺機器已經進行了鏈接的話,很可能會被他們連接到,這時候我開一個招商器,看看有沒有效果。這時候我們直接登錄上去,我插一句話,一會兒就來搜尋有沒有這句話,為了保證一次能成功的話,我們可以多開幾個,然后確定可以捕捉到。

開始查詢后我們先首先查第二個有沒有,很快就發(fā)現第二個會話已經成功被我們劫持到了,拿這個被劫持到的會話說,它的通訊信息已經被我們成功劫持到了,也就是我們完成了劫持的動作,然后,后面的所有的客戶端對這個客戶端的訪問都可以在本機實現,而本機理論上是不會劫持到這些報告,這也就是 TNS 劫持的效果。我們再看看它同時捕獲到了一個登錄信息會話,就是這個包,這個包就是登錄會話包,可以看到在登錄匯會話包中有兩個關鍵的包,一個是這個由數據庫發(fā)給客戶端的,我在這個包的范圍內,我的機器不是客戶端,因為客戶端應該是它,但是被我欺騙了,同時我最后再把這塊反發(fā)回去,我們把這兩個信息提煉出來,給大家展示一下怎樣做離線暴力破解。

我們只需要兩個有用的信息就可以了,并不是所有的信息都是有用的,第一個串是數據庫數據庫發(fā)給客戶端的加密信息,這個串包含著 oracle的加密信息和隨機鹽。第二個包是由于客戶端發(fā)給服務器的,里面也包含了兩個關鍵的加密串,這兩個關鍵的加密串將揭露數據庫的某些重要信息。首網絡中用戶名是明文的,所以我們并不擔心,關鍵我們要了解的是數據庫的密文,這塊我們進行一下處理,第一個是加密串,第二個加密串,然后返回,這四個串拿到之后,我們把它寫到我們的配置文件中,這個是我們解包程序的配置文件,我把它粘進來,保存一下,然后這時候我使用我的解包文件,我們計算一下這個用戶對應的密碼,至此我已經給大家演示了整套TNS加暴力破解的整個攻擊過程。

視頻內容結束。

因為視頻中使用的是基于原理的暴力破解,所以可以支持所有的版本,并且需要前后兩個數據包,而我們今天討論的是基于漏洞的離線破解,所以只需要來自客戶端到服務器一個包,并不需要另一個回包。而基于漏洞的暴力破解,主要影響 11 版的幾個版本。

數據庫勒索病毒

數據庫勒索病毒,這是目前最為常見,也最為危險的數據庫攻擊方式。已經在用戶處發(fā)現多起案例。其中,和數據庫有關系的主要有三種:

客戶端軟件比特幣勒索

Oracle 升級包惡意腳本

文件系統加密比特幣勒索

文件系統加密相對來說,和數據庫關系沒那么緊密。這種類型基本只在windows上遇到過,不過據悉已經在linux上發(fā)現了文件勒索病毒。該病毒的勒索目標主要是文件系統上的一些特定后綴的文件。根據和數據庫相關的程度可以分為三種:不加密數據文件、只加密文件頭 和文件整體加密。

如果有備份這種情況下不會造成什么影響,直接啟用備份即可,在確定沒有備份的情況下可以考慮如下解決方式:

第一種,不加密數據文件。這種往往只加密了圖片、執(zhí)行文件、word文檔等文件,對數據文件根本不加密。出現這類現象雖然會導致數據庫無法使用,但起因只是因為把數據庫的執(zhí)行文件加密了。由于庫文件未被加密,數據不存在丟失風險。把庫文件轉移到其他安全的機器上即可快速恢復數據庫。

第二種,雖然加密了庫文件,但只加密了庫文件的頭。這種相比第一種要麻煩一些,需要借助Oracle 官方或第三方dul 來抽取數據,抽取數據后重建數據庫即可解決問題。

第三種,庫文件被整體加密。這種比較棘手,沒有備份就只能通過硬盤先恢復被刪除的原庫文件,恢復的多少和結果就比較隨機了。

近些年,文件系統加密的勒索病毒也開始逐漸支持對庫文件進行加密。防護此類攻擊的最佳方式即做好備份工作。

1、真實案例:Plsql dev 軟件比特幣勒索

 oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

上圖是客戶某次登錄Oracle數據庫時出現的勒索警告:要求用戶上交5個比特幣來換取解鎖數據庫的服務。經過到用戶側進行實地調研,最后鎖定了用戶一臺機器上的破解版PL SQL Developer上。經過檢查發(fā)現,PL SQL Developer主目錄的自動執(zhí)行sql腳本中存在35KB的惡意代碼。黑客用Oracle 加密函數對內容進行了加密,破解后確定導致登錄失敗就是這個惡意腳本所為。

1)勒索軟件原理介紹

oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

解析上述腳本后可以將其梳理成圖中樣式。這個惡意腳本包含了4個存儲過程和3個觸發(fā)器。一共組成上圖顯示的三條攻擊線:紅線、綠線和紫線。每條線觸發(fā)的條件不同,造成的危害也各不相同。勒索軟件的原理是利用第三方數據庫管理工具的自動執(zhí)行腳本。在腳本中寫入惡意存儲過程和觸發(fā)器。這些自動腳本會在程序鏈接數據庫的過程中自動執(zhí)行。勒索者正是利用管理腳本這種會自動執(zhí)行且無任何提示的特點偷偷的將4個存儲過程和3個觸發(fā)器植入到數據庫中。

其中,紅線DBMS_SUPPORT_INTERNAL 

oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

紅線由觸發(fā)器和存儲過程共同組成。觸發(fā)器觸發(fā)的條件是數據庫實例重啟,重啟后該觸發(fā)器會觸發(fā)存儲過程刪除SYS.TAB$中大部分數據庫用戶的信息,并在刪除前秘密備份一份sys.tab$信息用于勒索后給客戶恢復。這條線的主要核心是圖中標號為1和2的SQL語句塊。

標記1的這個語句是判斷是否發(fā)動入侵的依據。勒索者根據當前庫存在的時間決定是入侵數據庫實施勒索還是先保持潛伏,直到條件成熟再爆發(fā)進行勒索。勒索者認為運行超過1200天的數據庫是值得入侵的,里面很可能存在用戶重要的數據,于是判斷是否滿足1200天(這里的1200天是指數據庫實例創(chuàng)建的天數,而不是惡意軟件入侵的天數),一旦滿足則繼續(xù)后續(xù)的入侵。

標記2的這個語句是整個存儲過程的核心。勒索者首先對tab$表進行備份,把備份的表設置成一定特點的隨機名稱,方便收到贖金后從新幫用戶找回數據。接著馬上刪除了tab$表中除了SYS用戶和第38號用戶的全部信息。并把勒索信息寫入到日志文件alert中,向用戶實施勒索。請注意這條線的報錯信息應該是ORA- 20312.如果在日志中發(fā)現ORA- 20312信息,很有可能您的數據庫已經中了紅線的招式,建議查找是否存在表名類似ORACHK樣式的表來進一步判斷是否已被入侵。

綠線DBMS_SYSTEM_INTERNAL   

oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

綠線同樣是由觸發(fā)器和存儲過程共同組成。觸發(fā)器的觸發(fā)的條件是用戶登陸數據庫,當登陸時,該觸發(fā)器會觸發(fā)存儲過程經過一些列判斷后阻止用戶正常訪問數據庫。這條線的主要核心是圖中標號為1和2的SQL語句塊。

標記1的這個語句是判斷是否發(fā)動入侵依據。勒索者根據當前所有表的最小統計時間決定是入侵數據庫實施勒索還是先保持潛伏,直到條件成熟再爆發(fā)進行勒索。勒索者認為超過1200天的是值得入侵的,里面很可能存在用戶重要的數據,于是判斷是否滿足1200天,一旦滿足則繼續(xù)后續(xù)的入侵。

標記2的這個語句是判斷用戶的客戶端是否滿足C89239.EXE,如果滿足則不彈窗報錯阻止登陸。如果不滿足則彈窗報錯阻止登陸。把錯彈出來阻止用戶登陸,向用戶實施勒索。其中注意這條線的報錯信息應該是ORA- 20313。普通用戶會被彈窗阻止是因為觸發(fā)器報錯導致,而DBA用戶會無視報錯信息成功登入,在登入后刪除對應觸發(fā)器和存儲過程可解決這種入侵。第二步判斷的C89239.EXE應該是勒索者收到贖金給用戶提供的解決方案。

紫線  DBMS_SYSTEM_INTERNAL   oracle 數據庫攻防案例,“數據庫已鎖,請上交比特幣”| 硬創(chuàng)公開課(總結+視頻)

紫線同樣由觸發(fā)器和存儲過程共同組成??梢姡@種攻擊主要是依靠存儲過程和觸發(fā)器的配合進行。觸發(fā)器觸發(fā)的條件是創(chuàng)建惡意存儲過程的用戶登陸數據庫,當該用戶登陸時,該觸發(fā)器會觸發(fā)存儲過程對該用戶下的非系統表中的數據進行清除。這條線的主要核心是圖中標號為1和2的SQL語句塊。

標記1的這個語句是判斷是否發(fā)動入侵。勒索者根據當前表空間的表的最小統計信息收集時間和當前時間比決定是入侵數據庫實施勒索還是先保持潛伏,直到條件成熟再進行勒索。勒索者認為超過1200天的數據庫是值得入侵的,里面很可能存在用戶重要的數據,于是判斷是否滿足1200天,一旦滿足則繼續(xù)后續(xù)的入侵。

標記2的這個語句是當前用戶對自己的表執(zhí)行truncate操作,清掉用戶數據,并把勒索信息寫入到日志文件alert中。請注意這條線的報錯信息應該是ORA- 20315。這條線是最危險的一條線,勒索者刪除了表中數據并未,做相應的備份?;謴蛿祿嬖谝欢ǖ碾y度,利用閃回機制或mydul等第三方工具可能能從數據庫文件中恢復數據,但隨著時間的流逝難度會越來越大、恢復數量則會越來越少。

視頻內容:

我給大家演示一個數據庫,它將被作為攻擊機,然后我們用這種帶有惡意腳本的 plsql 來登錄這臺機器,登錄結果應該是這三個觸發(fā)器和存儲過程完全建立在這臺數據庫上,然后我們再登錄。

登錄成功后,可以看到觸發(fā)器是這三個文件,已經成功建立,同樣的存儲過程也建立起來了。然后我們首先看一下,如果應用帳號來登錄存在惡意觸發(fā)器和存儲過程的系統會產生什么樣的效果,我們把它注銷掉,然后用應用帳號登進來。這時候我們發(fā)現登錄失敗,這就是這個比特幣勒索應用帳號的策略,當應用帳號登錄時會發(fā)出 20313G 這個觸發(fā)器進行工作。

20313G 觸發(fā)器做了什么?

20313G 這部是由觸發(fā)器和存儲過程構成,就是只要用戶登錄就可以觸發(fā)這個過程,而登錄過程里主要有兩件事,一是是否觸發(fā)的條件判斷,二是進行彈窗并攔截用戶正常訪問??梢郧宄目吹?,它的判斷條件只有兩點,第一如果這個表空間的時間比 1200 天多,我們就認為這個數據庫執(zhí)行不夠長的時間就會觸發(fā),并且會判斷一下客戶端使用客戶端是否是這個程序??赡苁悄憬涣粟H金后,我們猜測黑客會給你發(fā)一個類似的客戶端,幫助你不會被這種方式鎖死。

當然這種解決方式也比較簡單,只要用管理員帳號或 DBA帳號把備用觸發(fā)器和存儲過程刪掉就可以。我們先看看有沒有登錄,用 DBA 帳號登錄,這樣會觸發(fā)另外一個惡意的存儲過程,所以說對方是一環(huán)扣一環(huán)的。我們在登錄后表面看起來沒有變化,其實在后面已經觸發(fā)了第二個觸發(fā)器,并且使第二個存儲過程開始執(zhí)行。觸發(fā)的觸發(fā)器,我們通過日志文件可以找到。這時候 DBA 帳號登錄的話,會觸發(fā)這個觸發(fā)器,這個觸發(fā)器是 20315,找到 20315這個觸發(fā)器。

其觸發(fā)方式是什么?如果你是對應觸發(fā)器的帳號來登錄,就會觸發(fā)這個觸發(fā)器,其中有部分操作是需要對當前的表有全部控制權的,可以看到它的準備階段和上面的觸發(fā)器有一定的判斷,它的關鍵點是刪除表中數據的過程,用這種方式去刪除表中數據的話,其實給我們恢復數據帶來一定麻煩。也就是說這個觸發(fā)器比上面的觸發(fā)器危險得多,它會直接對表中的數據進行大量的刪除。

這是 20315 觸發(fā)器,我們再看一下最后一個 20312 的觸發(fā)器,那個觸發(fā)器相對于兩個觸發(fā)器比較特殊,它需要數據庫重啟,這時候需要的權限也相對比較大,所以一般需要 CSC 帳號激活。在我登錄后再重新登錄帳號,登錄之后,就會創(chuàng)建以 CSC 帳號為對應觸發(fā)器的存在過程。為了給大家看第一組觸發(fā)器的影響,我故意重啟一下,現在再看一下,這時候觸發(fā)器其實應該已經觸發(fā)了,我們在這邊看一下,到底觸發(fā)沒觸發(fā)。它的號是 20312,我們可以看到 20312 已經觸發(fā)了,在這邊可以看到明文。

20312 這個觸發(fā)器觸發(fā)需要重啟服務器,而它承擔較多工作,其中它會把這張表拷貝到這張表去,并且會把這張表上的數據進行刪除,直觀的效果就是創(chuàng)建一張新的表出來。而有沒有出現這張表,也可以作為我們判斷它是否執(zhí)行的依據,當然我們看日志也很容易看到有沒有被觸發(fā)。其實這部分的記錄方式是,如果發(fā)現你已經中招了,但是在日志中還可以找到這個信息,導入回到被他刪除的那個信息中。

視頻結束。

我們來了解一種和客戶端勒索病毒類似的Oracle升級包惡意腳本。兩者手法基本完全一致。細小區(qū)別在于,客戶端勒索病毒主要存在于客戶端的一些自動執(zhí)行腳本中,這些惡意腳本如果被放在升級包中就成了Oracle 升級包惡意腳本。

2、防護建議

如何防護數據庫勒索病毒的攻擊,有三條防護建議:

1)無論是客戶端還是升級包都請從正規(guī)渠道下載,并計算MD5值千萬別用破解版,免費的結果是省了小錢丟了數據。

2)利用數據庫防火墻等類似產品對勒索病毒進行傳播阻斷,需要選用有上下文判斷能力的成熟防火墻產品。

3)定期使用數據庫漏掃工具進行查殺,排除安全隱患。

問答環(huán)節(jié)

問題1:用盜版的oracle數據庫會有什么后果。

回復:所謂的盜版 oracle 數據庫,它們其實是正版的,然后可能被插入了一些惡意腳本。一個軟件使用前請計算一下文件的 MD5 值,官網是有的。而且實際上oracle數據庫可以從oracle 官網下載免費版體驗,就是給大家學習用的,所以我覺得沒有必要在網上自己找一個可能不安全的版本。

問題2:有什么方式可以避免數據庫被入侵。

回復:避免被入侵的方法。簡單說,你把數據庫該打的補丁定期打了,然后跟數據庫鏈接的第三方客戶端,用正版的。oracle自己也提供一些免費的第三方工具。做好上述兩點你的數據庫就有一定的安全保障了。如果你要是怕一些像開始我說的那些配置參數設錯了,就可以去我們官網下一個免費的數據庫掃描器試一試。

問題3:數據庫防火墻如何在網上防止勒索病毒的。

回復:有一些數據庫防火墻其實是可以理解上下文的,對一些加密數據庫的存儲過程進行解密。通過上下文的語義判斷整體邏輯和把加密的存儲過程解密成明文,那么就有可能通過一些規(guī)則或者策略,來把一些攻擊行為屏蔽掉,當然這種是基于已知的,對于未知的,應該是沒有太多的辦法。

若想獲得此次公開課完整 PPT,請關注微信公眾號宅客頻道(微信ID:letshome),回復“oracle數據庫 ”。

雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。

分享:
相關文章
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
立即設置 以后再說