修改jar 注入_ORA00600[16703]安装介质注入型勒索病毒恢复案例

     早期客户数据库软件被注入恶意代码,导致数据库无法启动,报错ORA-00600: internal error code, arguments:[16703], [1403], [20],由于恶意攻击,$ORACLE_HOME/rdbms/admin/prvtsupp.plb被注入恶意代码,因prvtsupp.plb为加密文件,可使用网名“大头”的"unwrap.jar"解密查看。核心部分为一个触发器一个存储过程,清空了tab$,导致数据库启动时,bootstrap阶段无法完成。这里过多原因不再赘述,这里只讲干货。如果有备份的话,那么很简单就不展开了,本文主要介绍没备份的方法。

一.  因客户数据保密性,这里选择构造模拟场景:

1.  创建清空TAB$存储过程

01cc552c7ee3877adb8b97142c6b5168.png

2. 创建触发器

9e4c0303f97ff68f4bb697ebba6b1893.png

3. 创建test表测试数据

3253c870c337a58821d29fcf46e131f6.png

修改系统时间,abort数据库,重启后报错如下:

397f6d696150ec4a2aee72893f53686f.png

二 . 恢复步骤:

1. 使用核心恢复shell scan.sh生成恢复脚本(该脚本不做公布)

f723e1635b3da32b91ca7e0f798c98e4.png

--//主要时间消耗在第3步,大约需要5分多钟.看看生成修改的脚本:

$ls  scan**.bbed*

scan3_bbed.txt                        --修改记录flag偏移脚本

scan4k_bbed.txt  

scan4m_bbed.txt                   --修改mref_offset标识

san5_bbed.txt                          --sum apply脚本

2. 使用scanx.sh脚本检查tailchk值,这里tailchk值都一致。如不一致,需要去分析tailchk值是不是相差过大,如相差过大多数原因在于近期执行了delete操作,这部分内容不需要恢复。

$ cat scanx.sh

#! /bin/bash

grep dba scan3_bbed.txt | cut -d" " -f4 | uniq | while read dba

do

        echo -n $dba :

        echo "p dba $dba offset 8188"| rlbbed | grep "ub4 tailchk"

done

$ . scanx.sh | cut -c64-71 | sort|uniq -c

3. 执行生成的bbed脚本

4bb51b1f73dc43f152f286fa66a820f7.png

4. 禁用sys.tab$的索引I_TAB1

1145429b4803ca8f002006ddd1dc4c03.png

5.禁用job和系统触发器,启动数据库

2441e218b90e54d741c5742f5ca7d881.png

6. drop破坏脚本dc805d4fd1e4cb7e481090e11399ca13.png

7. 检查破坏脚本tab$备份表ORA与tab$记录

SQL> select count(*) from (

     select obj# from ORACHK1C350A4E053D200A8C0FE9E

     minus

     select obj# from tab$);

  COUNT(*)

----------

         0

ORA开头表与tab$记录一致,不需要追加。

8. dbv校验system01.dbf

5b414b2126fa01aedccd35b35948b2c2.png

存在549个

kdbchk: the amount of space used is not equal to block size

        used=5115 fsc=486 avsp=2981 dtl=8096

Page 86141 failed with check code 6110

类似错误。

建议:

        将数据库迁移到另外数据库。

三.  迁移数据库

  1. 使用exp工具导出TEST用户数据

    [oracle@test bbed]$ exp 'userid="/ as sysdba"' owner=test  file=test06.dmp

    报ORA-01578: ORACLE data block corrupted (file # 1, block # 86141)错误,使用bbed撤销坏块标记,如下:

fa41d6846a2c0897c60196fa4090e2f9.png

0323dd402e32ea946aeca25f11a6f8e6.png

2. 再次导出TEST用户数据

5eac4a9d4e8f38ed8648c138c62b413b.png

也可以按表模式导出:

5a547f8d84d8a22e1703b5788001723c.png

数据导出无报错的情况下,都能够正常恢复到另外数据库中,余下步骤不再演示,至此数据库完美恢复。后期会继续分享加密型勒索病毒恢复案例、ASM DATA磁盘组元数据损坏恢复案例等,敬请关注!     26edc5f86fa8765ce0f3fc5443fcf8d8.gif   89596892fc8f031623e4fd809f0a7a3d.png  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值