没准勒索病毒就在身边

2016年各种勒索病毒肆虐全球,本人所在的运维团队维护的客户幸运的未被感染;然而两年的后今天,某个库在18年6月20日下午,数据库alter 日志中出现勒索病毒的告警信息,团队高度紧张找应用开发商确,找安全部门进行漏扫、渗透等测试。现阶段主要安装网上的经验将相应的异常存储过程、触发器等删除;所幸我们这边被感染的用户没有创建触发器的权限等

文章应用惜分飞大神:http://www.xifenfei.com/2016/11/plsql-dev;以及lunar美女博客内容:http://www.lunar2013.com/。

数据库启动alert报错

Mon Jul 10 19:51:24 2016
Errors in file e:\app\administrator\diag\rdbms\zhxh\zhxh\trace\zhxh_ora_3584.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-20313: 你的数据库已被SQL RUSH Team锁死  发送5个比特币到这个地址 166xk1FXMB2g8JxBVF5T4Aw1Z5JaZ6vrSE (大小写一致)  之后把你的Oracle SID邮寄地址 sqlrush@mail.com 我们将让你知道如何解锁你的数据库  Hi buddy, your database was hacked by SQL RUSH Team, send 5 bitcoin to address 166xk1FXMB2g8JxBVF5T4Aw1Z5JaZ6vrSE ( 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: 在 "ZHXH.DBMS_SYSTEM_INTERNAL         " , line 15
ORA-06512: 在 line 2
Mon Jul 10 19:51:30 2016
OER 7451 in Load Indicator : Error Code = OSD-04500: 指定了非法选项
O /S-Error : (OS 1) 函数不正确。 !
Mon Jul 10 19:51:34 2017
Errors in file e:\app\administrator\diag\rdbms\zhxh\zhxh\trace\zhxh_ora_824.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-20313: 你的数据库已被SQL RUSH Team锁死  发送5个比特币到这个地址 166xk1FXMB2g8JxBVF5T4Aw1Z5JaZ6vrSE (大小写一致)  之后把你的Oracle SID邮寄地址 sqlrush@mail.com 我们将让你知道如何解锁你的数据库  Hi buddy, your database was hacked by SQL RUSH Team, send 5 bitcoin to address 166xk1FXMB2g8JxBVF5T4Aw1Z5JaZ6vrSE ( 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: 在 "ZHXH.DBMS_SYSTEM_INTERNAL         " , line 15
ORA-06512: 在 line 2

afterconnect.sql
是plsql dev登录后自动执行脚本,非Oralce官方脚本
1


数据库启动后执行触发器DBMS_SUPPORT_INTERNAL
2
3


DBMS_SUPPORT_INTERNAL主要的意义是:
1. 当数据库创建时间大于1200天之后,开始备份tab$表
2. 删除tab$中除掉owner#为0和38的记录(sys,xdb)
4


3. 通过SYS.DBMS_BACKUP_RESTORE.RESETCFILESECTION清理掉备份信息(v$controlfile_record_section)
4. 然后通过DBMS_SYSTEM.KSDWRT在你的alert日志中写上2046次的提示信息
Hi buddy, your database was hacked by SQL RUSH Team, send 5 bitcoin to address 166xk1FXMB2g8JxBVF5T4Aw1Z5JaZ6vrSE (case sensitive), after that send your Oracle SID to mail address sqlrush@mail.com, we will let you know how to unlock your database.
你的数据库已被SQL RUSH Team锁死 发送5个比特币到这个地址 166xk1FXMB2g8JxBVF5T4Aw1Z5JaZ6vrSE (大小写一致) 之后把你的Oracle SID邮寄地址 sqlrush@mail.com 我们将让你知道如何解锁你的数据库
5. 再抛出一个前台的和4类似的警告信息
数据库登录触发器DBMS_SYSTEM_INTERNAL
6
7


当你的非SYSTEM,SYSAUX,EXAMPLE之外的所有表的最小统计信息时间大于1200天,而且非C89239.EXE程序,就会报出来” 你的数据库已被SQL RUSH Team锁死 发送5个比特币到这个地址 166xk1FXMB2g8JxBVF5T4Aw1Z5JaZ6vrSE (大小写一致) 之后把你的Oracle SID邮寄地址 sqlrush@mail.com 我们将让你知道如何解锁你的数据库 Hi buddy, your database was hacked by SQL RUSH Team, send 5 bitcoin to address 166xk1FXMB2g8JxBVF5T4Aw1Z5JaZ6vrSE
(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_CORE_INTERNAL
8
9
5


这里比较明显,把表名不含$,不含ORACHK,不是cluster的表放到一个游标里面,然后取非SYSTEM,SYSAUX,EXAMPLE之外的表空间的表的最小统计信息收集时间和当前时间比较如果大于1200天就执行truncate table操作,操作完成之后判断如果登录程序不为C89239.EXE,则报出来异常,” 你的数据库已被SQL RUSH Team锁死 发送5个比特币到这个地址 166xk1FXMB2g8JxBVF5T4Aw1Z5JaZ6vrSE (大小写一致) 之后把你的Oracle SID邮寄地址 sqlrush@mail.com 我们将让你知道如何解锁你的数据库 Hi buddy, your database was hacked by SQL RUSH Team, send 5 bitcoin to address 166xk1FXMB2g8JxBVF5T4Aw1Z5JaZ6vrSE
(case sensitive), after that send your Oracle SID to mail address sqlrush@mail.com, we will let you know how to unlock your database.”。

对于这次故障处理方法
1. 如果SELECT NVL(TO_CHAR(SYSDATE-MIN(LAST_ANALYZED)),0) FROM ALL_TABLES WHERE TABLESPACE_NAME NOT IN (‘SYSTEM’,'SYSAUX’,'EXAMPLE’); 小于1200,查询下列语句,然后删除掉(正常库查询为空)

2. 如果SYSDATE-MIN(LAST_ANALYZED)大于1200, SYSDATE-CREATED大于1200天未重启,或者SYSDATE-CREATED小于1200;就是tab$还未被清理,但是表被truncate,这样情况可以通过oracle原厂dul工具恢复

3. 如果SYSDATE-CREATED大于1200天,而且数据库重启过,但是SYSDATE-MIN(LAST_ANALYZED)小于1200天,那可以直接通过把ORACHK’||SUBSTR(SYS_GUID,10)中备份信息插入到$tab中

4. SYSDATE-CREATED大于1200天,而且数据库重启过,但是SYSDATE-MIN(LAST_ANALYZED)大于1200天,Oracle 原厂dul之类工具结合ORACHK’||SUBSTR(SYS_GUID,10)备份表中数据进行恢复
dul


预防策略
1)数据库查询,如果有这些对象,及时给与清理
2)建议业务用户尽量限制dba 权限

3)检查相关登陆工具的自动运行脚本 清理掉有风险脚本
sqlplus中的glogin.sql/login.sql
toad中的toad.ini
plsql dev中的login.sql/afterconnect.sql

4)建议从官方下载工具,不要使用绿色版/破解版等


最近有部分黑客采用各种手段对数据库进行sql注入或者直接加密等损坏方式攻击客户的数据库。
需要说明的是这里并非黑客用多么高深的手段或者技能攻破Oracle数据库或者由于Oracle Bug引起的,Oracle被无辜躺枪
相反,这类攻击完全是使用盗版客户端工具或者客户网络(或者主机)安全有漏洞,入侵主机或者直接使用盗版客户端(部分网上下载的非官方工具已经是被黑客篡改过的)对数据库登录时进行SQL注入的方法。

.
常见的攻击手法和案例:
.
攻击手法 1 :黑客攻入客户网络,进入客户主机,在操作系统上直接对数据库文件进行“加密”
现象:


409150050134754533


.
攻击手法 2 :也有可能是使用非官方的网上下载的被污染的工具连接数据库,然后“被执行”了类似下面的在数据库中执行恶意代码而注入损坏数据sql语句
(例如,注入一些存储过程,trigger或者其他DDL,DML等等)
现象:
在数据库的日志中,可能获得的信息如下:

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

.
此类攻击的效果有1200天的潜伏期:
黑客代码中有类似下面的判断条件:IF (DATE1>=1200) THEN
因此,建议客户检查数据库的异常对象,如果发现异常对象,建议直接删除相关对象

.
对于上述攻击,我们的客户遇到的解决方法大致如下:
第一 :被攻击的数据库用户中没有重要的业务对象时
1.这段代码的运行都是通过job来操作的,高版本默认的job_queue_processes已经是1000了,所以当时通过操作系统看到后台有700多个job进程在跑这段代码。
通过把job_queue_processes设置为0,重启实例它这段脚本就跑不起来了。只有没有跑这段代码,存储过程等对象才能删除。
2.从操作系统登录到数据库(sys用户),找出非法的存储过程,job定义,触发器,把它们都drop就可以,
当时由于这个客户在受攻击的数据库用户下面没有业务对象,把这个用户drop,重建就可以了。
上述的整个处理过程没有数据丢失,之所以耗时这么长是因为客户担心丢失先做一次备份。
.
第二 :当被攻击的数据库用户中有重要业务对象时:
1. 如果是对文件加密,根据具体客户情况,可以考虑比对正常文件(没有被攻击的数据库的文件)和有问题文件比对,找到端倪后,拼接等等思路
2. 根据实际情况,如果上面的“1.”不可行,那么考虑停止黑客的异常job,过程,触发器等等(可以采用倒推等方式或者直接查询DBA_OBJECTS 中的LAST_DDL时间),
根据实际情况,如果有必要的话,还可以根据报错时间点进行logminer来进行检查和确认损坏过程,
并找到黑客备份的系统表,进行还原(请在Oracle Support或者专业DBA指导下完成)。
3. 如果上述的“1.”和“2.”都不可行,那么可以考虑使用各种可以进行逻辑挖掘的工具挖出数据。
.
当然根据不同的黑客入侵方式,可能还有其他解决方法,这里要重点讨论的是我们如何防患于未然:
1,请使用正版工具或者使用Oracle官方推荐的免费SQL客户端工具:

http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

上面地址是官网正版下载地址,功能非常强大,完美支持12c和以前的数据库版本,并且免费。
.
2,如果发现类似问题,尽量保护现场,并根据报错信息的时间点,追查原因
.
3,重要数据库一定要备份,如果配置了ADG,备库建议开闪回,如此,很多问题处理上就简单多了。
.
4,对于数据库用户的dba等高级权限应该有效管理
.
5.请注意,有些黑客会设置一个潜伏期,例如上面的例子,该攻击的效果存在1200天的潜伏期:
黑客代码中有类似下面的判断条件:IF (DATE1>=1200) THEN
因此,建议客户检查数据库的异常对象,如果发现异常对象,建议直接删除相关恶意注入的数据库对象(procedure,job,trigger等等)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值