數(shù)據(jù)安全治理關(guān)鍵技術(shù)之?dāng)?shù)據(jù)庫脫敏技術(shù)詳解
數(shù)據(jù)安全治理之API監(jiān)測系統(tǒng) ,解決API接口安全問題【安華金和】
新一代數(shù)據(jù)庫脫敏技術(shù),為敏感數(shù)據(jù)建立保護(hù)盾!
數(shù)據(jù)庫脫敏系統(tǒng)與金融行業(yè)案例解讀
數(shù)據(jù)安全治理建設(shè)思路的著力點(diǎn)——數(shù)據(jù)安全咨詢服務(wù)【安華金和】
數(shù)據(jù)庫防火墻功能有哪些?-數(shù)據(jù)安全-安華金和
數(shù)據(jù)安全關(guān)鍵技術(shù)之?dāng)?shù)據(jù)庫脫敏技術(shù)詳解【安華金和】
中國數(shù)據(jù)安全治理落地指導(dǎo)書籍《數(shù)據(jù)安全治理白皮書5.0》正式發(fā)布(附下載)
夜已深
銷售老魏的電話突然響起
鈴聲仿佛比往日急促
是曾經(jīng)拜訪過的一家客戶,對方是運(yùn)維主管
老魏趕緊接起來
未來得及問候和寒暄
對方第一句話是
“我們的數(shù)據(jù)庫啟動不了了!?。?,我們被AfterConnection數(shù)據(jù)庫病毒感染了”
數(shù)次重啟后仍然無法正常工作
問題一直解決不了,我們的業(yè)務(wù)訪問受到很大影響……
這個,能找專家?guī)兔鉀Q嗎?
掛了電話,老魏馬上撥通了攻防實(shí)驗(yàn)室的電話
當(dāng)晚,安全專家遠(yuǎn)程接入用戶現(xiàn)場
嘗試進(jìn)行技術(shù)還原,找到事件原因
用戶現(xiàn)場報(bào)錯如下
綜合用戶10046 event跟蹤的結(jié)果和從system表空間數(shù)據(jù)文件抽取tab$表的結(jié)果
可以初步判斷客戶數(shù)據(jù)庫無法啟動是由于tab$中數(shù)據(jù)被清空導(dǎo)致
通常,數(shù)據(jù)庫在啟動階段會做一致性檢查
其中會去tab$中找尋obj$指定的對象
一旦找不到會導(dǎo)致一致性檢查中的語句執(zhí)行錯誤
最后展現(xiàn)出數(shù)據(jù)庫啟動失敗
根據(jù)對obj$記錄的研究發(fā)現(xiàn)
客戶數(shù)據(jù)庫中存在3個惡意存儲過程和2個惡意觸發(fā)器
惡意觸發(fā)器中存在startup型觸發(fā)器
只要啟動數(shù)據(jù)庫就會執(zhí)行指定的存儲過程,執(zhí)行惡意命令
從而對數(shù)據(jù)庫進(jìn)行破壞
啟動中觀察到tab$數(shù)據(jù)被清空就是其中一個惡意存儲過程所為
整個惡意攻擊過程還原后
攻防實(shí)驗(yàn)室建議用戶三種解決方案:
方案一:
用dul工具將Oracle數(shù)據(jù)文件中的應(yīng)用數(shù)據(jù)導(dǎo)出
新建庫
再將數(shù)據(jù)導(dǎo)入
方案二:
四步走
第一步,恢復(fù)tab$數(shù)據(jù)啟動數(shù)據(jù)庫成功。
第二步,刪除數(shù)據(jù)庫中存在的惡意存儲過程和觸發(fā)器。
第三步,破解加密的惡意存儲過程,從中找出還有哪些破壞數(shù)據(jù)庫的地方予以修復(fù)。
第四步,有針對性的部署安全設(shè)備防止類似事件再次發(fā)生。
進(jìn)過激烈的討論,方案二雖然更為迅速,但方案一更為保險,用方案一吧
深夜,漸漸過去。。。
清晨7點(diǎn),用戶數(shù)據(jù)終于恢復(fù)正常,哈8點(diǎn)上班前,可以正常開工了、
結(jié)束?
NO!
現(xiàn)場應(yīng)急雖然結(jié)束,危險還在隱藏,但安全人的天責(zé),讓我們還要繼續(xù),休息2小時,繼續(xù)。。。。
兵分兩路
A隊(duì):攻防實(shí)驗(yàn)室安全專家
任務(wù):對惡意程序進(jìn)行更深入的腳本分析,形成詳細(xì)材料
B隊(duì):技術(shù)工程師
任務(wù):出發(fā)前往用戶現(xiàn)場,詳細(xì)了解用戶系統(tǒng)結(jié)構(gòu)及安全風(fēng)險點(diǎn)
A、B兩隊(duì)實(shí)時信息對稱、進(jìn)行事件復(fù)盤
事情發(fā)生第三天
用戶收到來自安華金和數(shù)據(jù)庫攻防實(shí)驗(yàn)室全方位技術(shù)分析,
包括整個事件的技術(shù)還原及防范此類攻擊的解決方案
經(jīng)過安華金和數(shù)據(jù)庫安全專家分析,此次攻擊屬于數(shù)據(jù)庫惡意注入攻擊,我們看到的很多數(shù)據(jù)庫勒索事件正是利用了這種方式。
黑客在數(shù)據(jù)庫工具或數(shù)據(jù)庫安裝包/升級包中加入惡意代碼。數(shù)據(jù)庫管理員不慎使用感染了惡意代碼的客戶端工具或升級包,來操作或升級數(shù)據(jù)庫,惡意代碼就會被夾帶進(jìn)入數(shù)據(jù)庫中。這些惡意代碼往往是存儲過程+觸發(fā)器的組合形式,當(dāng)權(quán)限足夠,它們會產(chǎn)生阻止正常用戶訪問數(shù)據(jù)庫、刪除轉(zhuǎn)移關(guān)鍵數(shù)據(jù)等惡劣行為。比較惡劣的行徑是,黑客以用戶數(shù)據(jù)或恢復(fù)數(shù)據(jù)庫為交換條件,威脅用戶支付贖金,達(dá)到勒索目的,這類惡意注入也就是我們所說的勒索病毒攻擊了。但本次沒有人要求贖金,應(yīng)該屬于非利益訴求的惡意攻擊。
針對這種病毒攻擊的感染源,我們繼續(xù)展開分析:
惡意攻擊行為的分類
從攻擊行為和攻擊路徑不同,可以將惡意攻擊行為分為兩類。從攻擊行為來看,又可以分為阻止數(shù)據(jù)庫正常使用和刪除轉(zhuǎn)移關(guān)鍵表信息兩大類。
1)第一類:阻止數(shù)據(jù)庫正常使用
常見方法有二:1、直接破壞數(shù)據(jù)庫系統(tǒng)表,導(dǎo)致數(shù)據(jù)庫無法正常啟動。遭遇該情形,數(shù)據(jù)將徹底無法啟動,給用戶帶來巨大影響。就大部分樣例來看,即使是勒索目的,支付贖金后勒索者也很可能沒辦法真正恢復(fù)。建議用戶遇到這種情況不要輕信對方。2、調(diào)用死循環(huán)存儲過程無限彈出窗體,阻止用戶正常登錄數(shù)據(jù)庫。這種方式主要在數(shù)據(jù)庫圖形化界面客戶端上使用,并且一般只能阻礙低權(quán)限用戶登錄;DBA等高權(quán)限用戶可以強(qiáng)行登錄成功,因此只要高權(quán)限用戶登錄后刪除觸發(fā)器即可破解。
2)第二類:刪除和轉(zhuǎn)移關(guān)鍵表信息
常見的也有兩類。1、對表內(nèi)信息進(jìn)行轉(zhuǎn)存后清空表。查找新建的、名字怪異的表就可能找到被攻擊者清除的數(shù)據(jù),把數(shù)據(jù)導(dǎo)回即可。2、直接清空表,并未存儲。如果是這種情況的勒索攻擊,即便用戶支付了贖金,勒索者也無法將數(shù)據(jù)還給用戶。
現(xiàn)實(shí)中,攻擊者往往多種手法共用。大多情況是先出現(xiàn)一個問題,用戶貿(mào)然切成SYS用戶登錄數(shù)據(jù)庫處理,結(jié)果雖然解決了一部分惡意觸發(fā)器和存儲過程,但同時也激活了更多更危險的惡意觸發(fā)器和存儲過程。因此,用戶如果遭遇此類數(shù)據(jù)庫惡意攻擊或勒索事件,請先備份數(shù)據(jù)表空間文件,再嘗試進(jìn)行處理,防止擴(kuò)大對數(shù)據(jù)庫造成的損害。
上面是從攻擊行為來區(qū)分,從攻擊路徑來看,還可分為遠(yuǎn)程攻擊和本地攻擊。
1)第一類:遠(yuǎn)程攻擊
其中,遠(yuǎn)程攻擊的比例比本地攻擊更多。遠(yuǎn)程攻擊主要來自于各種數(shù)據(jù)庫工具中的自動執(zhí)行腳本。例如plsql dev中的login.sql和afterconnect.sql ;toad中的toad.ini;sqlplus 中的glogin.sql和login.sql等。建議一定使用來自官方的工具,且使用前檢查上述腳本文件的內(nèi)容。
2)第二類:本地攻擊
本地攻擊則多是由于數(shù)據(jù)庫系統(tǒng)的安裝包或升級包被植入了惡意代碼。在數(shù)據(jù)庫安裝或升級過程中,惡意存儲過程或觸發(fā)器已被帶入數(shù)據(jù)庫。所以,建議安裝包和升級包務(wù)必從數(shù)據(jù)庫廠商官網(wǎng)下載。
本次原因事件分析:
而本次事件,根據(jù)用戶的追查,尚未在多臺運(yùn)維設(shè)備上發(fā)現(xiàn)有遠(yuǎn)程攻擊注入腳本;對于安裝包和升級包是否存在問題,尚未明確,需要進(jìn)一步觀察。由于無數(shù)據(jù)庫審計(jì)產(chǎn)品,也無法明確攻擊來源了路徑。
至此,該事件還需要進(jìn)一步的了解與觀察,由于近年來,以數(shù)據(jù)庫為目標(biāo)的攻擊事件明顯增加,且越來越多的以勒索財(cái)產(chǎn)為主要目的,這種事件呈現(xiàn)越來越廣泛的趨勢。因此我們將對這些攻擊的行為階段和所能采取的防護(hù)措施進(jìn)行進(jìn)一步的分析,以幫助DBA們和用戶迎接這種挑戰(zhàn),減少數(shù)據(jù)資產(chǎn)的損失。
數(shù)據(jù)庫病毒攻擊和發(fā)作的三個階段
從階段劃分,數(shù)據(jù)庫惡意攻擊會經(jīng)歷三個階段:感染期、潛伏期和發(fā)作期。如果能夠提前進(jìn)行數(shù)據(jù)庫安全防護(hù)的建設(shè),能夠較好的應(yīng)對此類攻擊事件,有效降低企業(yè)面臨的惡性影響。
在感染期,首先是感染源的接觸,在這個階段病毒會利用網(wǎng)上的免費(fèi)維護(hù)工具或安裝包或升級包,潛伏在這些免費(fèi)產(chǎn)品中,用戶將數(shù)據(jù)庫通過這些免費(fèi)產(chǎn)品進(jìn)行訪問或暗轉(zhuǎn)或升級,將感染上數(shù)據(jù)庫病毒。
潛伏期:待數(shù)據(jù)庫被感染后,病毒通過觸發(fā)器等隱藏在數(shù)據(jù)庫內(nèi)部,然后依據(jù)數(shù)據(jù)庫運(yùn)行事件或時間,進(jìn)行病毒危害觸發(fā)。
發(fā)作期:一旦爆發(fā),會利用觸發(fā)器和存儲過程對數(shù)據(jù)庫的關(guān)鍵位置進(jìn)行破壞。
1)感染期
數(shù)據(jù)庫被感染惡意程序主要通過兩種途徑:數(shù)據(jù)庫客戶端和數(shù)據(jù)庫升級包。數(shù)據(jù)庫升級包在官網(wǎng)有標(biāo)注的MD5值。請用戶一定計(jì)算MD5值,防止使用帶有惡意代碼的升級包,升級數(shù)據(jù)庫。數(shù)據(jù)庫客戶端由于配置文件的復(fù)雜性和后期DBA的二次開發(fā),雖然可以依賴MD5值,但往往效果不好。用戶可以在網(wǎng)絡(luò)中對數(shù)據(jù)庫包中的內(nèi)容和特征進(jìn)行甄別,阻斷具有惡意注入特征的數(shù)據(jù)包即可阻斷此處的攻擊。
惡意攻擊的最佳防護(hù)時機(jī)是阻斷感染路徑,在潛伏期消除惡意程序的影響,如果拖到發(fā)作后,雖然有解決辦法,但很可能已經(jīng)造成數(shù)據(jù)資產(chǎn)損失。
解決方案:數(shù)據(jù)庫防火墻+數(shù)據(jù)庫審計(jì)
通過部署數(shù)據(jù)庫防火墻發(fā)現(xiàn)和切斷感染路徑,經(jīng)過對多樣本特征的分析,以及樣本格式的理解,我們建議用戶使用具備能讀懂sql和能解密加密數(shù)據(jù)庫兩項(xiàng)能力的數(shù)據(jù)庫防火墻。其中,能解密、加密數(shù)據(jù)庫即可以對如Oracle采用的密文存儲過程進(jìn)行解密操作,另外,如果第三方工具向數(shù)據(jù)庫發(fā)送大量加密包形式的數(shù)據(jù),也只有準(zhǔn)確破解加密包才能為語法分析做好準(zhǔn)備。如果不能解決解密問題,最終只能對加密的惡意存儲過程進(jìn)行指紋比對,這種方法誤報(bào)率和漏報(bào)率都很高。
另一方面,能讀懂sql語句是指基于sql語法解析,聯(lián)系上下文理解存儲過程或包中是否存在惡意行為。在unwrap的支撐下數(shù)據(jù)庫防火墻能把所有去向數(shù)據(jù)庫的加密存儲過程明文化,再通過sql語法分析器對明文進(jìn)行惡意行為的匹配。數(shù)據(jù)庫防火墻不是單純的就單句sql進(jìn)行行為分析,而是根據(jù)上下文環(huán)境的sql行為對整個sql語句包進(jìn)行分析。當(dāng)其中存在命中安全規(guī)則的多個必要點(diǎn)時,可以判斷該語句包存在惡意行為,語句包會被阻斷,并向相關(guān)人員進(jìn)行告警。
數(shù)據(jù)庫防火墻攔截下惡意數(shù)據(jù)包后,再通過數(shù)據(jù)庫審計(jì)系統(tǒng)記錄的詳細(xì)數(shù)據(jù)包流向信息,定位出惡意數(shù)據(jù)包來自哪里,幫助用戶在海量設(shè)備中快速定位安全問題發(fā)生點(diǎn),為用戶能找到勒索病毒源頭,徹底修復(fù)安全問題提供依據(jù)。此外,數(shù)據(jù)庫審計(jì)系統(tǒng)能夠提供同樣的惡意程序識別,區(qū)別于數(shù)據(jù)庫防火墻的是,旁路部署的審計(jì)系統(tǒng)是在發(fā)現(xiàn)病毒后,以實(shí)時告警的方式提醒用戶注意,那么,至于防火墻還是審計(jì)更合適,需要依據(jù)用戶的業(yè)務(wù)系統(tǒng)要求來選擇。
2)潛伏期
惡意程序感染數(shù)據(jù)庫后會計(jì)算數(shù)據(jù)庫運(yùn)行時間,通過時間來判斷自己繼續(xù)潛伏還是爆發(fā)。常見的數(shù)據(jù)庫攻擊樣本潛伏期為1-4年。這期間數(shù)據(jù)庫雖然已被感染,但并不會受其影響。所以該階段是清除病毒的好時機(jī)。建議用戶加強(qiáng)數(shù)據(jù)庫上存儲過程和觸發(fā)器的檢查,及時清除潛在的惡意隱患。
解決方案:數(shù)據(jù)庫漏掃+技術(shù)服務(wù)
當(dāng)用戶錯過了在感染路徑上阻斷惡勒索病毒的機(jī)會,建議用戶定期使用有檢測數(shù)據(jù)庫勒索病毒功能的數(shù)據(jù)庫漏掃工具,對數(shù)據(jù)庫進(jìn)行定期檢查,爭取在潛伏期徹底消滅勒索病毒。原理是用戶給掃描工具sysdba權(quán)限,掃描工具深入基表,利用特征庫中的特征對觸發(fā)器、存儲過程、包等進(jìn)行逐項(xiàng)檢測,一旦發(fā)現(xiàn)異常會在最終的報(bào)告中生成詳細(xì)的描述以及具體的修復(fù)建議,在這個過程中,可尋求專業(yè)的數(shù)據(jù)庫安全企業(yè)提供咨詢服務(wù),幫助排查病毒,以及提供相應(yīng)的安全服務(wù),清楚惡意程序。
3)發(fā)作期
一旦時機(jī)成熟(滿足惡意程序發(fā)作的條件),被注入的病毒將開始對數(shù)據(jù)庫展開攻擊:阻止數(shù)據(jù)庫正常使用、刪除有價值數(shù)據(jù)、阻礙合法用戶正常登錄。此階段相對最難處理,可惜大部分用戶直到這個階段才發(fā)現(xiàn)數(shù)據(jù)庫被感染,倒也不是沒辦法補(bǔ)救,可以通過數(shù)據(jù)庫文件進(jìn)行問題定位,嘗試恢復(fù)用戶數(shù)據(jù)和清除惡意觸發(fā)器和存儲過程。雖然防范大于治療,但由于種種原因大部分用戶是在勒索病毒爆發(fā)后才發(fā)現(xiàn)。爆發(fā)后由于不同勒索病毒對數(shù)據(jù)庫的影響以及觸發(fā)的條件各不相同,沒法給出統(tǒng)一解決方案。但建議用戶,第一時間備份數(shù)據(jù)庫文件;盡量不要嘗試變更登錄方式或?qū)?shù)據(jù)庫進(jìn)行操作,避免觸發(fā)更多的惡意觸發(fā)器和調(diào)用更多的惡意存儲過程,對數(shù)據(jù)庫造成二次、三次傷害。
解決方案:尋求技術(shù)服務(wù)
發(fā)作后,為了將損失降到最低,需要及時尋找安全咨詢及服務(wù)團(tuán)隊(duì),最短時間內(nèi)排查問題、清除病毒、進(jìn)行數(shù)據(jù)庫恢復(fù),并提出有效的安全加固方案。
綜上,我們建議用戶建設(shè)有效的安全防護(hù)體系來抵御惡意攻擊,同時,多種技術(shù)手段的組合也能夠形成良好的協(xié)同配合效果。
數(shù)據(jù)庫漏掃+數(shù)據(jù)庫防火墻/數(shù)據(jù)庫審計(jì)
數(shù)據(jù)庫漏掃可基于授權(quán)檢測方式針對數(shù)據(jù)庫中異常包、存儲過程、觸發(fā)器、各項(xiàng)參數(shù)以及后門的檢測語句,對已知威脅進(jìn)行檢查,及時排除數(shù)據(jù)庫隱患。
數(shù)據(jù)庫防火墻利用解密技術(shù)和sql分析技術(shù),依托上下文sql語境,動態(tài)抓出存在惡意行為的語句包,進(jìn)行實(shí)施攔截。
數(shù)據(jù)庫漏掃側(cè)重已知隱患掃描,數(shù)據(jù)庫防火墻側(cè)重特征隱患攔截和告警,雙方既是相互獨(dú)立的也是相互聯(lián)動的。數(shù)據(jù)庫防火墻攔截到一個新型隱患,數(shù)據(jù)庫漏掃則根據(jù)這個新型的特征更新掃描檢測項(xiàng);數(shù)據(jù)庫漏掃發(fā)現(xiàn)安全隱患,則數(shù)據(jù)庫防火墻根據(jù)隱患特征更新防護(hù)策略,優(yōu)化已有安全策略,進(jìn)一步降低誤報(bào)率。
五、一些可行的安全建議
除了建設(shè)安全防護(hù)體系,數(shù)據(jù)庫管理人員在日常運(yùn)維中也需要謹(jǐn)慎操作。保守來說,如果做到以下幾點(diǎn),你可以避免至少50%的數(shù)據(jù)庫惡意攻擊,:
1.不要在非官方途徑下載數(shù)據(jù)庫相關(guān)工具,如數(shù)據(jù)庫安裝和升級包;
2.經(jīng)常檢查數(shù)據(jù)庫鏈接工具的腳本是否正常;
3.使用最小權(quán)限原則,盡可能降低給Oracle用戶的權(quán)限,如限制創(chuàng)建存儲過程或觸發(fā)器等。
PS:針對本次數(shù)據(jù)庫惡意攻擊事件,為防止其他用戶中招,安華金和能夠提供攻擊驗(yàn)證腳本和檢查腳本,用戶可及時自查防范。
下載地址:http://dbsec.cn/upload/prvtsupp.zip