病*入侵
年12月12日凌晨,某项目组为应对双十二高峰做了一次紧急扩容,由于时间紧张,新扩容的系统都没有加入4A保护,局方特许在机房直连操作。
夜里3点开始升级,4点升级结束,重新启动系统。原本一次再寻常不过的现场升级操作,此时突然出现数据库账号被锁定的问题!数据库进不去了,提示“你的数据库已经被SQLRUSHteam锁死,请发送5个比特币到xxxxxxxxxxx地址,….”。
现场升级的同事呆住了:系统中了勒索病*!气氛立刻紧张到极点,这可是生产系统!虽然此时是深夜,没有用户使用,但距离营业厅开业只有三个小时时间,必须在这三小时里定位并消除病*影响。
病*是挂在网上下载的所谓破解版plsqldeveloper的工具上的,这个工具普遍存在于各个项目组。里面的一个文件afterconnet.sql被黑客注入了病*代码。这个代码会在你连接数据库后立即执行,如果你的账号拥有DBA权限,它会在你的数据库中创建多个存储过程和触发器,会阻止你连接数据,当你重启动后,会触发病*触发器,加密并删除sys.tab$,导致你无法访问数据库中所有的schema。然后设置定时任务,如果在期限内不交赎金,就truncate你所有的表。病*发作危害极大,而且原厂和相关的安全厂商都很难恢复。
这个病*为了增加破坏效果,加强隐蔽性,只有当数据库创建时间超过天才会爆发,有很长的潜伏期。
查验方法
1、在OracleServer端检查是否有下面几个对象:
Object_nameObeject_type
DBMS_SUPPORT_INTERNALTRIGGER
DBMS_SUPPORT_INTERNALPROCEDURE
DBMS_SYSTEM_INTERNALTRIGGER
DBMS_CORE_INTERNALTRIGGER
DBMS_SYSTEM_INTERNALPROCEDURE
DBMS_CORE_INTERNALPROCEDURE
DBMS_STANDARD_FUN9PROCEDURE
参考SQL:
select*fromdba_objectwhereobject_namelike‘%INTERNAL%’;
2、检查PLSQLDEV安装目录,查找afterconnect.sql,login.sql这个文件的大小应该是0字节,如果有内容,基本上就是病*。
后续处理
这个病*并不完备,在侵入过程中,出现了数据库操作异常而没有执行彻底,关键数据未发生致命性损伤。经过数据库专家紧急的手工恢复,最终将病*清除。
相关阅读:
从勒索病*事件看企业OS补丁管理:应该如何制定更新策略、选择工具?
新型勒索病*Petya的技术和加密过程分析
更多相关文章