Oracle RushQL勒索病毒恢復方法

沃趣科技發表於2019-04-09

在上期 《勒索病毒Globelmposter來襲,資料備份你做好了嗎》 中,我們介紹了Globelmposter勒索病毒,以SMB、RDP協議漏洞為突破口,加密篡改使用者檔案,從而達到勒索的目的,其感染目標並不侷限特定的應用。

本次我們再來介紹另一種專門針對資料庫的勒索病毒 -- RushQL。相比Globelmposter,RushQL專門針對資料庫設計、並且具備一定潛伏期和隱蔽性,危害極大。

該病毒最早被發現是捆綁在被感染的綠色版/破解版PS/SQL安裝程式上,一旦使用者使用此類破解版軟體連線到資料庫,會立即執行“Afterconnet.sql”中的程式碼(此檔案一般在官方PL/SQL軟體中是一個空檔案),在資料庫中建立多個儲存過程和觸發器。

RushQL感染後並不會立即造成資料損壞,具備一定時間的潛伏期,它會首先判斷資料庫建立時間是否大於1200天(比較狠,專挑執行較長時間的資料庫下手)。如果大於1200天,則重啟資料庫後觸發病毒觸發器,加密並刪除 sys.tab$ ,導致使用者無法訪問資料庫中所有的資料庫物件集合(schema),提示“你的資料庫已經被SQL RUSH Team鎖死,請傳送5個比特幣到這個地址……”的勒索資訊(也有變種會要求以太幣等),並設定定時任務,如果在期限內不交贖金,就刪除所有的表

RushQL包含多個儲存過程和觸發器,選取其中一個PROCEDURE DBMS_SUPPORT_INTERNAL來看主要的操作為:

1. 建立並備份`sys.tab$`表的資料到表 `ORACHK || SUBSTR(SYS_GUID,10)`;
2. 刪除`sys.tab$`中的資料,條件是所有表的建立者ID 在(0,38)範圍(針對核心表);
3. 在你的alert日誌中寫上2046次勒索資訊,並觸發異常告警

從儲存過程的內容可知,相比Globelmposter,RushQL更難防範。其行為從資料庫角度看來都是再正常不過的操作(update、truncate等),因此現有所有備份手段幾乎都會失效,例如Dataguard可以防護檔案類感染,但遇到RushQL仍會將錯誤的資料進行同步;定時備份能起到一定恢復作用,但無法保證資料沒有丟失等。

若是被感染且尚未滿足條件發作,則處理方式很簡單,只要刪除4個儲存過程及3個觸發器、不再使用帶病毒的破解/綠色軟體即可:

儲存過程 DBMS_SUPPORT_INTERNAL
儲存過程 DBMS_STANDARD_FUN9
儲存過程 DBMS_SYSTEM_INTERNA
儲存過程 DBMS_CORE_INTERNAL
觸發器 DBMS_SUPPORT_INTERNAL
觸發器 DBMS_SYSTEM_INTERNAL
觸發器 DBMS_CORE_INTERNAL

如果病毒已經生效,資料庫處於被鎖定狀態,則需:

1. 刪除4個儲存過程和3個觸發器
2. 檢查相關登入工具的自動化指令碼,清理有風險的指令碼
3. 使用備份將表恢復到truncate之前,視嚴重程度可能要用到DUL工具
(不一定能恢復所有的表,例如truncate的空間已被使用)

由於truncate的空間有可能被再次使用,大概率會有部分資料無法恢復。但是,如果之前已經部署過QPlus-DP 資料庫備份雲一體機,則恢復過程十分簡單,可以使用“秒級恢復”功能建立病毒發作前1秒(或指定SCN號)的歷史資料庫,實現無資料丟失找回被truncate的表,如圖:

經過幾分鐘的等待,使用新建立的資料庫環境、確認需要恢復的表之後再導回至生產庫即可。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28218939/viewspace-2640793/,如需轉載,請註明出處,否則將追究法律責任。

相關文章