夜已深
销售老魏的电话突然响起
铃声仿佛比往日急促
是曾经拜访过的一家客户,对方是运维主管
老魏赶紧接起来
未来得及问候和寒暄
对方第一句话是
“我们的数据库启动不了了!!!,
我们被AfterConnection数据库病毒感染了”
数次重启后仍然无法正常工作
问题一直解决不了,我们的业务访问受到很大影响……
这个,能找专家帮忙解决吗?
挂了电话,老魏马上拨通了攻防实验室的电话
当晚,安全专家远程接入用户现场
尝试进行技术还原,找到事件原因
事情发生第1天用户现场报错如下
综合用户event跟踪的结果和从system表空间数据文件抽取tab$表的结果,
可以初步判断客户数据库无法启动是由于tab$中数据被清空导致。通常,数据库在启动阶段会做一致性检查,其中会去tab$中找寻obj$指定的对象,一旦找不到会导致一致性检查中的语句执行错误,最后展现出数据库启动失败!
根据对obj$记录的研究发现,客户数据库中存在3个恶意存储过程和2个恶意触发器
恶意触发器中存在startup型触发器,只要启动数据库就会执行指定的存储过程,执行恶意命令,从而对数据库进行破坏,启动中观察到tab$数据被清空就是其中一个恶意存储过程所为。
整个恶意攻击过程还原后
现场抢救
攻防实验室建议用户以下解决方案:
方案一新建库
用dul工具将Oracle数据文件中的应用数据导出,
新建数据库后再将已导出的数据导入。
方案二:四步走
第一步,恢复tab$数据启动数据库成功。
第二步,删除数据库中存在的恶意存储过程和触发器。
第三步,破解加密的恶意存储过程,从中找出还有哪些破坏数据库的地方予以修复。
第四步,有针对性的部署安全设备防止类似事件再次发生。
进过激烈的讨论,方案二虽然更为迅速,
但方案一更为保险,采用方案一
深夜渐渐过去……
·
·
·
事情发生第2天清晨7点,用户数据终于恢复正常
哈8点上班前,可以正常开工了
结束?
NO!
现场应急虽然结束,危险还在隐藏,
但安全人的天责,让我们还要继续,
休息2小时,继续……
兵分两路
A队:攻防实验室安全专家
任务:对恶意程序进行更深入的脚本分析,形成详细材料
B队:技术工程师
任务:出发前往用户现场,详细了解用户系统结构及安全风险点
A、B两队实时信息对称、进行事件复盘
·
·
·
事情发生第3天用户收到来自安华金和数据库攻防实验室全方位技术分析
包括整个事件的技术还原及防范此类攻击的解决方案
攻击行为的深度分析经过安华金和数据库安全专家分析,此次攻击属于数据库恶意注入攻击,我们看到的很多数据库勒索事件正是利用了这种方式。
黑客在数据库工具或数据库安装包/升级包中加入恶意代码。数据库管理员不慎使用感染了恶意代码的客户端工具或升级包,来操作或升级数据库,恶意代码就会被夹带进入数据库中。这些恶意代码往往是存储过程+触发器的组合形式,当权限足够,它们会产生阻止正常用户访问数据库、删除转移关键数据等恶劣行为。比较恶劣的行径是,黑客以用户数据或恢复数据库为交换条件,威胁用户支付赎金,达到勒索目的,这类恶意注入也就是我们所说的勒索病毒攻击了。但本次没有人要求赎金,应该属于非利益诉求的恶意攻击。
针对这种病毒攻击的感染源,我们继续展开分析:
恶意攻击行为的分类从攻击行为和攻击路径不同,可以将恶意攻击行为分为两类。从攻击行为来看,又可以分为阻止数据库正常使用和删除转移关键表信息两大类。
第一类:阻止数据库正常使用
常见方法有二:1、直接破坏数据库系统表,导致数据库无法正常启动。遭遇该情形,数据将彻底无法启动,给用户带来巨大影响。就大部分样例来看,即使是勒索目的,支付赎金后勒索者也很可能没办法真正恢复。建议用户遇到这种情况不要轻信对方。2、调用死循环存储过程无限弹出窗体,阻止用户正常登录数据库。这种方式主要在数据库图形化界面客户端上使用,并且一般只能阻碍低权限用户登录;DBA等高权限用户可以强行登录成功,因此只要高权限用户登录后删除触发器即可破解。
第二类:删除和转移关键表信息
常见的也有两类。1、对表内信息进行转存后清空表。查找新建的、名字怪异的表就可能找到被攻击者清除的数据,把数据导回即可。2、直接清空表,并未存储。如果是这种情况的勒索攻击,即便用户支付了赎金,勒索者也无法将数据还给用户。
现实中,攻击者往往多种手法共用。大多情况是先出现一个问题,用户贸然切成SYS用户登录数据库处理,结果虽然解决了一部分恶意触发器和存储过程,但同时也激活了更多更危险的恶意触发器和存储过程。因此,用户如果遭遇此类数据库恶意攻击或勒索事件,请先备份数据表空间文件,再尝试进行处理,防止扩大对数据库造成的损害。
上面是从攻击行为来区分,从攻击路径来看,还可分为远程攻击和本地攻击。
第一类:远程攻击
其中,远程攻击的比例比本地攻击更多。远程攻击主要来自于各种数据库工具中的自动执行脚本。例如plsqldev中的login.sql和afterconnect.sql;toad中的toad.ini;sqlplus中的glogin.sql和login.sql等。建议一定使用来自官方的工具,且使用前检查上述脚本文件的内容。
第二类:本地攻击
本地攻击则多是由于数据库系统的安装包或升级包被植入了恶意代码。在数据库安装或升级过程中,恶意存储过程或触发器已被带入数据库。所以,建议安装包和升级包务必从数据库厂商北京治疗白癜风最有名的医院怎么治白癜风