丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

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

0

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

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

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

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

嘉賓介紹

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

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

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

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

內(nèi)容介紹

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

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

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

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

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

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

數(shù)據(jù)庫配置不當

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

1)參數(shù)設(shè)置不當。

2)角色設(shè)置不當;

3)系統(tǒng)權(quán)限設(shè)置不當 ;

4)包權(quán)限設(shè)置不當。

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

1、用戶真實案例

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

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

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

l UTL_FILE包:用來讀寫操作系統(tǒng)上的文本文件

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

1)參數(shù)配置不當

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

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

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

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

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

▲orapworcl 是Oracle 的密碼文件

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

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

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

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

 2)角色權(quán)限設(shè)置不當

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

3)系統(tǒng)權(quán)限設(shè)置不當

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

4)包權(quán)限設(shè)置不當

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

總結(jié)下來,因為數(shù)據(jù)庫配置不當帶來的安全隱患表現(xiàn)為:

角色權(quán)限設(shè)置不當——AVASYSPRIV角色給予低權(quán)限用戶

系統(tǒng)權(quán)限設(shè)置不當——EXECUTE ANY PROCEDURE權(quán)限給低權(quán)限用戶

包權(quán)限設(shè)置不當——DBMS_IJOB包權(quán)限給低權(quán)限用戶

2、防護建議

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

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

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

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

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

數(shù)據(jù)庫安全漏洞

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

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

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

1、真實案例:從協(xié)議上入侵Oracle

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

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

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

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

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

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

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

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

屬于機制問題,多年未修復(fù)

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

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

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

第一種方式:本地注冊

第二種方式:遠程注冊

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

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

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

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

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

1)TNS劫持的真實效果

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

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

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

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

2)離線暴力破解原理

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

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

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

首先,客戶端通過包把要進行身份驗證的用戶傳輸?shù)綌?shù)據(jù)庫端。

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

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

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

o5logon 協(xié)議具體算法

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

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

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

離線暴力破解

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

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

2、防護建議

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

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

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

視頻內(nèi)容:

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

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

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

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

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

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

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

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

視頻內(nèi)容結(jié)束。

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

數(shù)據(jù)庫勒索病毒

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

客戶端軟件比特幣勒索

Oracle 升級包惡意腳本

文件系統(tǒng)加密比特幣勒索

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

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

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

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

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

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

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

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

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

1)勒索軟件原理介紹

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

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

其中,紅線DBMS_SUPPORT_INTERNAL 

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

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

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

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

綠線DBMS_SYSTEM_INTERNAL   

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

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

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

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

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

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

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

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

視頻內(nèi)容:

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

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

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

20313G 這部是由觸發(fā)器和存儲過程構(gòu)成,就是只要用戶登錄就可以觸發(fā)這個過程,而登錄過程里主要有兩件事,一是是否觸發(fā)的條件判斷,二是進行彈窗并攔截用戶正常訪問。可以清楚的看到,它的判斷條件只有兩點,第一如果這個表空間的時間比 1200 天多,我們就認為這個數(shù)據(jù)庫執(zhí)行不夠長的時間就會觸發(fā),并且會判斷一下客戶端使用客戶端是否是這個程序。可能是你交了贖金后,我們猜測黑客會給你發(fā)一個類似的客戶端,幫助你不會被這種方式鎖死。

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

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

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

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

視頻結(jié)束。

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

2、防護建議

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

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

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

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

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

問題1:用盜版的oracle數(shù)據(jù)庫會有什么后果。

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

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

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

問題3:數(shù)據(jù)庫防火墻如何在網(wǎng)上防止勒索病毒的。

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

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

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

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