plsql dev引起的数据库被黑勒索比特币实现原理分析和解决方案
2016-11-18 09:59
309 查看
转自http://www.xifenfei.com/2016/11/plsql-dev-hacker-bitcoin.html
afterconnect.sql
是plsql dev登录后自动执行脚本,非Oralce官方脚本
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/3cdc3bf74228c54b466f21d4bbc8c1d6.jpg)
数据库启动后执行触发器DBMS_SUPPORT_INTERNAL
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/fc95f6cd23683adb3a20cc7d1349162a.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/630c559d39ffb376ce9a8298bbf60776.jpg)
DBMS_SUPPORT_INTERNAL主要的意义是:
1. 当数据库创建时间大于1200天之后,开始备份tab$表
2. 删除tab$中除掉owner#为0和38的记录(sys,xdb)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/f6ae32adf24920bd3ed6de64a02519b5.jpg)
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
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/afebc32683435ed357188e2fa10f786f.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/27e5262ab57436fb00d9b8efcf0b80d2.jpg)
当你的非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
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/9e5b857612d8a59d12295ca97908ccdb.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/74aff720b510fb5ed4f2f745b0e6d71f.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/f5631f397909e0b0d552610e68768fdd.jpg)
这里比较明显,把表名不含$,不含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)备份表中数据进行恢复
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/6470b6e4c47d380b217323f601f2edae.jpg)
预防策略
1)数据库里面查询下,如果有这些对象,及时给与清理(注意% ‘中间有空格)
2)建议业务用户尽量限制dba 权限
3)检查相关登陆工具的自动运行脚本 清理掉有风险脚本
sqlplus中的glogin.sql/login.sql
toad中的toad.ini
plsql dev中的login.sql/afterconnect.sql
4)建议从官方下载工具,不要使用绿色版/破解版等
VMware vSphere6.0 初试
ORACLE 7.3.4 截图欣赏
Oracle 8i安装过程截图
vSphere ssh登陆配置
_OFFLINE_ROLLBACK_SEGMENTS/_CORRUPTED_ROLLBACK_SEGMENTS
Oracle 8.0.5 安装过程截图
12.1中出现大量Result Cache: RC Latch处理
Linux中安装DB2截图欣赏
windows平台listener.log超过4G导致监听异常
通过Administration Assistant for Windows配置win服务和实例关联性
在win 64位平台上运行bbed(支持ORACLE 10g 11g 12c)
达梦数据库命令行工具
afterconnect.sql
是plsql dev登录后自动执行脚本,非Oralce官方脚本
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/3cdc3bf74228c54b466f21d4bbc8c1d6.jpg)
数据库启动后执行触发器DBMS_SUPPORT_INTERNAL
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/fc95f6cd23683adb3a20cc7d1349162a.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/630c559d39ffb376ce9a8298bbf60776.jpg)
DBMS_SUPPORT_INTERNAL主要的意义是:
1. 当数据库创建时间大于1200天之后,开始备份tab$表
2. 删除tab$中除掉owner#为0和38的记录(sys,xdb)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/f6ae32adf24920bd3ed6de64a02519b5.jpg)
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
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/afebc32683435ed357188e2fa10f786f.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/27e5262ab57436fb00d9b8efcf0b80d2.jpg)
当你的非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
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/9e5b857612d8a59d12295ca97908ccdb.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/74aff720b510fb5ed4f2f745b0e6d71f.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/f5631f397909e0b0d552610e68768fdd.jpg)
这里比较明显,把表名不含$,不含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,查询下列语句,然后删除掉(正常库查询为空)
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)备份表中数据进行恢复
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/10/6470b6e4c47d380b217323f601f2edae.jpg)
预防策略
1)数据库里面查询下,如果有这些对象,及时给与清理(注意% ‘中间有空格)
3)检查相关登陆工具的自动运行脚本 清理掉有风险脚本
sqlplus中的glogin.sql/login.sql
toad中的toad.ini
plsql dev中的login.sql/afterconnect.sql
4)建议从官方下载工具,不要使用绿色版/破解版等
VMware vSphere6.0 初试
ORACLE 7.3.4 截图欣赏
Oracle 8i安装过程截图
vSphere ssh登陆配置
_OFFLINE_ROLLBACK_SEGMENTS/_CORRUPTED_ROLLBACK_SEGMENTS
Oracle 8.0.5 安装过程截图
12.1中出现大量Result Cache: RC Latch处理
Linux中安装DB2截图欣赏
windows平台listener.log超过4G导致监听异常
通过Administration Assistant for Windows配置win服务和实例关联性
在win 64位平台上运行bbed(支持ORACLE 10g 11g 12c)
达梦数据库命令行工具
相关文章推荐
- Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现
- Android的延迟实现的几种解决方案以及原理分析
- Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现
- 数据库shard中间件对比,以及sharding-jdbc 实现原理分析
- 详细解释如何通过Android自带的方式来实现图片的裁剪——原理分析+解决方案
- 一个小语言的词法分析程序原理及其实现(2)
- Hibernate实现分页查询的原理分析zz
- ASP文件上传原理分析及实现实例
- asp.net中利用ashx实现图片防盗链的原理分析
- asp.net中利用ashx实现图片防盗链的原理分析
- ASP程序实现图片上传的原理分析
- 从eboot菜单分析eboot功能实现原理
- 发布一个C#+ADOMD.NET实现查看分析服务数据库信息的类对象
- 基于微软解决方案的负载测试实现-知识库1____(转)理解.NET中的数据库连接池
- Java对象池技术的原理及其实现 --Java对象的生命周期分析
- [原创] 用Delphi实现控制IE窗体的大小——IESizer程序原理分析 (2003-12)
- MFC工具条和状态栏,内部实现原理详细分析
- IronPython for ASP.NET 的原理分析(一):如何在 CLR 类型上实现动态性
- 【JfaceTextFramework学习笔记之四】TextViewer实现原理简单分析
- 也谈WEB打印(二):简单的分析一下IE的打印原理并实现简单的打印和预览