由於傳播、利用此文所提供的信息而造成的任何直接或者間接的後果及損失,均由使用者本人負責,雷神眾測以及文章作者不為此承擔任何責任。雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用於商業目的。
No.2
前言
去年分析過Oracle比特幣勒索事件,通過在各大下載平臺上傳惡意pl/sql安裝包。詳細鏈接如下:
http://greatagain.dbappsecurity.com.cn/#/book?id=196&type_id=1
接下來分析的事件與上述事件類似,但又有不同。
同時在各下載平臺上傳Oracle軟件的安裝介質,從而替換惡意文件prvtsupp.plb,達到實現了惡意代碼的注入,從而實現了數據庫300天之後重啟之後無法正常啟動而是出現類似ORA-00600: internal error code, arguments: [16703], [1403], [20], [], [], [], [], [], [], [], [], []的錯誤。
No.3
故障現象
客戶對數據庫進程重啟,重啟之後數據庫就無法啟動,後臺alert日誌就報ORA-00600 [16703]錯誤。
進一步通過10046分析,可以發現數據庫在啟動過程中訪問tab$和I_OBJ$的時候出現了問題。
No.4
故障原理
通過分析,發現和最近爆發的Oracle安裝介質被注入惡意代碼有關。
檢查Oracle數據庫安裝目錄,發現文件prvtsupp.plb文件正常和異常的多出來下面的代碼:
正常的:
異常的:
可以看到異常的安裝介質包中$ORACLE_HOME/rdbms/admin/prvtsupp.plb被人注入了多餘的代碼,創建了一個startup觸發器,當數據庫重啟的時候,就會觸發該動作。該動作會去執行一個叫DBMS_SUPPORT_DBMONITORP的存儲過程。該存儲過程是加密的存儲過程。使用解密工具可以查看到該存儲過程的內容,如下:
可以看到這段代碼的內容就是當系統的當前日誌>創建日期300天,就創建一個叫ORACHK開頭的表對sys.tab$執行備份。同時再刪除sys.tab$表。
這段代碼是毀滅性的,數據庫重啟之後就把基表tab$刪除了。再也啟動不了。
No.5
解決辦法
目前解決辦法有兩種:
1.通過bbed來恢復,這種恢復方法相當複雜。可以看到病毒對tab$表做了備份,可以通過bbed來讀到ORACHK表中的塊的數據,然後在還原到tab$表中的數據塊上。
EXECUTE IMMEDIATE 'create table ORACHK'||SUBSTr(SYS_GUID,10)||' tablespace system as select * from sys.tab$';
2.通過DUL等抽取工具來抽取。數據量大非常耗費時間。
3.使用備份的system.dbf文件強行推進scn打開數據庫,然後把數據導出來。
alter system set
"_system_trig_enabled"=false scope=both;
alter database open ;
drop TRIGGER
DBMS_SUPPORT_DBMONITOR;
drop PROCEDURE
DBMS_SUPPORT_DBMONITORP;
No.6
預防措施
1.根據軟件注入的原理,需要檢查文件$ORACLE_HOME/rdbms/admin/prvtsupp.plb,看看是否裡面包含多餘的創建觸發器的代碼。如果存在,需要將問題觸發器和存儲過程刪除。
2.檢查是否包含觸發器
DBMS_SUPPORT_DBMONITOR和存儲過程
DBMS_SUPPORT_DBMONITORP。
定期監控語句更新如下:
select 'DROP TRIGGER
'||owner||'."'||TRIGGER_NAME||'";'
from dba_triggers where
TRIGGER_NAME like
'DBMS_%_INTERNAL% '
or TRIGGER_NAME like
'DBMS_SUPPORT_DBMONITOR% '
union all
select 'DROP PROCEDURE
'||owner||'."'||a.object_name||'";'
from dba_procedures a
where a.object_name like
'DBMS_%_INTERNAL% ' or
a.object_name like
'DBMS_SUPPORT_DBMONITOR% ';
參考:http://www.xifenfei.com/2017/07/oracle-software-malicious-injection.html
閱讀更多 E安全 的文章