日本在线看黄a美女久草|日本动漫亚洲在线一区|日韩人妻无码免费视频|A√有码中文字幕|日韩一级片视频热久久久|一区二区三区四区精品无码在线|亚洲AV成人无码一二三app|亚洲综合图片绯色|91极品人妻在线网站|国产成人精品一区二三区四区五区

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

0

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

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

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

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

嘉賓介紹

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

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

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

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

內(nèi)容介紹

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

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

2. 數(shù)據(jù)庫(kù)配置不當(dāng)帶來(lái)的安全挑戰(zhàn)。

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

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

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

數(shù)據(jù)庫(kù)配置不當(dāng)

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

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

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

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

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

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

1、用戶真實(shí)案例

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

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

那么,上圖所示 UTL_FILE_DIR 和 utl_file是用來(lái)做什么的呢?

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

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

1)參數(shù)配置不當(dāng)

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

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

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

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

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

▲orapworcl 是Oracle 的密碼文件

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

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

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

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

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

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

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

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

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

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

總結(jié)下來(lái),因?yàn)閿?shù)據(jù)庫(kù)配置不當(dāng)帶來(lái)的安全隱患表現(xiàn)為:

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

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

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

2、防護(hù)建議

那么如何既簡(jiǎn)單又高效的解決配置不當(dāng)引起的安全問(wèn)題?針對(duì)配置不當(dāng),我們提供三條安全防護(hù)建議,90%的安全問(wèn)題都可迎刃而解:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

TNS劫持(CVE-2012-1675)包含三個(gè)特點(diǎn):

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

屬于機(jī)制問(wèn)題,多年未修復(fù)

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

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

簡(jiǎn)單說(shuō),TNS劫持原理是基于Oracle 支持多個(gè)實(shí)例注冊(cè)在一個(gè)監(jiān)聽(tīng)下,實(shí)例去注冊(cè)監(jiān)聽(tīng)有兩種方式

第一種方式:本地注冊(cè)

第二種方式:遠(yuǎn)程注冊(cè)

同名的實(shí)例和IP端口會(huì)被誤認(rèn)為是一組RAC,而后按照負(fù)載均衡調(diào)用。

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

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

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

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

1)TNS劫持的真實(shí)效果

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

模擬黑客在同一個(gè)監(jiān)聽(tīng)下利用遠(yuǎn)程和本地分別注冊(cè)兩個(gè)同名實(shí)例??蛻舳嗽L問(wèn)監(jiān)聽(tīng),監(jiān)聽(tīng)按照客戶端中的數(shù)據(jù)庫(kù)名信息分配數(shù)據(jù)庫(kù),由于監(jiān)聽(tīng)下有2個(gè)同名實(shí)例名,客戶端鏈接很可能會(huì)被分配到劫持者的數(shù)據(jù)庫(kù)實(shí)例下,再通過(guò)配置劫持者的本地監(jiān)聽(tīng)把客戶端請(qǐng)求指回原數(shù)據(jù)庫(kù)。

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

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

2)離線暴力破解原理

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

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

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

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

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

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

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

o5logon 協(xié)議具體算法

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

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

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

離線暴力破解

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

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

2、防護(hù)建議

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

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

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

視頻內(nèi)容:

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

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

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

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

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

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

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

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

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

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

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

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

客戶端軟件比特幣勒索

Oracle 升級(jí)包惡意腳本

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

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

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

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

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

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

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

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

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

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

1)勒索軟件原理介紹

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

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

其中,紅線DBMS_SUPPORT_INTERNAL 

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

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

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

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

綠線DBMS_SYSTEM_INTERNAL   

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

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

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

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

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

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

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

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

視頻內(nèi)容:

我給大家演示一個(gè)數(shù)據(jù)庫(kù),它將被作為攻擊機(jī),然后我們用這種帶有惡意腳本的 plsql 來(lái)登錄這臺(tái)機(jī)器,登錄結(jié)果應(yīng)該是這三個(gè)觸發(fā)器和存儲(chǔ)過(guò)程完全建立在這臺(tái)數(shù)據(jù)庫(kù)上,然后我們?cè)俚卿洝?/p>

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

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

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

當(dāng)然這種解決方式也比較簡(jiǎn)單,只要用管理員帳號(hào)或 DBA帳號(hào)把備用觸發(fā)器和存儲(chǔ)過(guò)程刪掉就可以。我們先看看有沒(méi)有登錄,用 DBA 帳號(hào)登錄,這樣會(huì)觸發(fā)另外一個(gè)惡意的存儲(chǔ)過(guò)程,所以說(shuō)對(duì)方是一環(huán)扣一環(huán)的。我們?cè)诘卿浐蟊砻婵雌饋?lái)沒(méi)有變化,其實(shí)在后面已經(jīng)觸發(fā)了第二個(gè)觸發(fā)器,并且使第二個(gè)存儲(chǔ)過(guò)程開(kāi)始執(zhí)行。觸發(fā)的觸發(fā)器,我們通過(guò)日志文件可以找到。這時(shí)候 DBA 帳號(hào)登錄的話,會(huì)觸發(fā)這個(gè)觸發(fā)器,這個(gè)觸發(fā)器是 20315,找到 20315這個(gè)觸發(fā)器。

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

這是 20315 觸發(fā)器,我們?cè)倏匆幌伦詈笠粋€(gè) 20312 的觸發(fā)器,那個(gè)觸發(fā)器相對(duì)于兩個(gè)觸發(fā)器比較特殊,它需要數(shù)據(jù)庫(kù)重啟,這時(shí)候需要的權(quán)限也相對(duì)比較大,所以一般需要 CSC 帳號(hào)激活。在我登錄后再重新登錄帳號(hào),登錄之后,就會(huì)創(chuàng)建以 CSC 帳號(hào)為對(duì)應(yīng)觸發(fā)器的存在過(guò)程。為了給大家看第一組觸發(fā)器的影響,我故意重啟一下,現(xiàn)在再看一下,這時(shí)候觸發(fā)器其實(shí)應(yīng)該已經(jīng)觸發(fā)了,我們?cè)谶@邊看一下,到底觸發(fā)沒(méi)觸發(fā)。它的號(hào)是 20312,我們可以看到 20312 已經(jīng)觸發(fā)了,在這邊可以看到明文。

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

視頻結(jié)束。

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

2、防護(hù)建議

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

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

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

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

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

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

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

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

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

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

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

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

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

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