dbf如何导入oracle_Oracle软件的安装介质被注入恶意程序事件分析与防御

No.1 声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

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]错误。

5e99eefea76185e840fe22fd22dca95a.png

进一步通过10046分析,可以发现数据库在启动过程中访问tab$和I_OBJ$的时候出现了问题。

4e5dab316e1e6a37f3e195e4e9a01e0a.png

No.4 故障原理

通过分析,发现和最近爆发的Oracle安装介质被注入恶意代码有关。

检查Oracle数据库安装目录,发现文件prvtsupp.plb文件正常和异常的多出来下面的代码:

正常的:

c1a6a9f55ffae2102314ea04a60c1a9c.png

异常的:

a28d38ee3416db2337709d4b3b228ddc.png

可以看到异常的安装介质包中$ORACLE_HOME/rdbms/admin/prvtsupp.plb被人注入了多余的代码,创建了一个startup触发器,当数据库重启的时候,就会触发该动作。该动作会去执行一个叫DBMS_SUPPORT_DBMONITORP的存储过程。该存储过程是加密的存储过程。使用解密工具可以查看到该存储过程的内容,如下:

8a5001c4142905735046d663d6436119.png

可以看到这段代码的内容就是当系统的当前日志>创建日期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

2ce8a91f78ee01a2113afce07e06254e.png
  • 国际原油走势又现断崖 是黑客攻击在搅局?

  • 安恒主机卫士EDR入驻统信UOS应用商店 全方位主机安全防护“上线”

  • 攻击浪潮长达四年 间谍组织如何一次又一次地破坏Google Play?

  • 数十个关键代码漏洞被修复 Adobe为Bridge、Illustrator和Magento解决难题

5423f6740f4c07df4e2eaa71ce373c2b.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值