六、防护手段建议
1) 感染期
数据库被感染恶意程序主要通过两种途径:数据库客户端和数据库升级包。数据库升级包在官网有标注的MD5值。请用户一定计算MD5值,防止使用带有恶意代码的升级包,升级数据库。数据库客户端由于配置文件的复杂性和后期DBA的二次开发,虽然可以依赖MD5值,但往往效果不好。用户可以在网络中对数据库包中的内容和特征进行甄别,阻断具有恶意注入特征的数据包即可阻断此处的攻击。
恶意攻击的最佳防护时机是阻断感染路径,在潜伏期消除恶意程序的影响,如果拖到发作后,虽然有解决办法,但很可能已经造成数据资产损失。
解决方案:数据库防火墙+数据库审计
通过部署数据库防火墙发现和切断感染路径,经过对多样本特征的分析,以及样本格式的理解,我们建议用户使用具备能读懂sql和能解密加密数据库两项能力的数据库防火墙。其中,能解密、加密数据库即可以对如Oracle采用的密文存储过程进行解密操作。另外,如果第三方工具向数据库发送大量加密包形式的数据,也只有准确破解加密包才能为语法分析做好准备。
如果不能解决解密问题,最终只能对加密的恶意存储过程进行指纹比对,这种方法误报率和漏报率都很高。
另一方面,能读懂sql语句是指基于sql语法解析,联系上下文理解存储过程或包中是否存在恶意行为。在unwrap的支撑下数据库防火墙能把所有去向数据库的加密存储过程明文化,再通过sql语法分析器对明文进行恶意行为的匹配。
数据库防火墙不是单纯的就单句sql进行行为分析,而是根据上下文环境的sql行为对整个sql语句包进行分析。当其中存在命中安全规则的多个必要点时,可以判断该语句包存在恶意行为,语句包会被阻断,并向相关人员进行告警。
数据库防火墙拦截下恶意数据包后,再通过数据库审计系统记录的详细数据包流向信息,定位出恶意数据包来自哪里,帮助用户在海量设备中快速定位安全问题发生点,为用户能找到勒索病毒源头,彻底修复安全问题提供依据。
此外,数据库审计系统能够提供同样的恶意程序识别,区别于数据库防火墙的是,旁路部署的审计系统是在发现病毒后,以实时告警的方式提醒用户注意,那么,至于防火墙还是审计更合适,需要依据用户的业务系统要求来选择。
2) 潜伏期
恶意程序感染数据库后会计算数据库运行时间,通过时间来判断自己继续潜伏还是爆发。常见的数据库攻击样本潜伏期为1-4年。这期间数据库虽然已被感染,但并不会受其影响。所以该阶段是清除病毒的好时机。建议用户加强数据库上存储过程和触发器的检查,及时清除潜在的恶意隐患。
解决方案:数据库漏扫+技术服务
当用户错过了在感染路径上阻断恶勒索病毒的机会,建议用户定期使用有检测数据库勒索病毒功能的数据库漏扫工具,对数据库进行定期检查,争取在潜伏期彻底消灭勒索病毒。原理是用户给扫描工具sysdba权限,扫描工具深入基表,利用特征库中的特征对触发器、存储过程、包等进行逐项检测,一旦发现异常会在最终的报告中生成详细的描述以及具体的修复建议,在这个过程中,可寻求专业的数据库安全企业提供咨询服务,帮助排查病毒,以及提供相应的安全服务,清楚恶意程序。
3) 发作期
一旦时机成熟(满足恶意程序发作的条件),被注入的病毒将开始对数据库展开攻击:阻止数据库正常使用、删除有价值数据、阻碍合法用户正常登录。此阶段相对最难处理,可惜大部分用户直到这个阶段才发现数据库被感染,倒也不是没办法补救,可以通过数据库文件进行问题定位,尝试恢复用户数据和清除恶意触发器和存储过程。
虽然防范大于治疗,但由于种种原因大部分用户是在勒索病毒爆发后才发现。爆发后由于不同勒索病毒对数据库的影响以及触发的条件各不相同,没法给出统一解决方案。但建议用户,第一时间备份数据库文件;尽量不要尝试变更登录方式或对数据库进行操作,避免触发更多的恶意触发器和调用更多的恶意存储过程,对数据库造成二次、三次伤害。
解决方案:寻求技术服务
发作后,为了将损失降到最低,需要及时寻找安全咨询及服务团队,最短时间内排查问题、清除病毒、进行数据库恢复,并提出有效的安全加固方案。
七、协同防护体系
综上,我们建议用户建设有效的安全防护体系来抵御恶意攻击,同时,多种技术手段的组合也能够形成良好的协同配合效果。
数据库漏扫+数据库防火墙
数据库漏扫可基于授权检测方式针对数据库中异常包、存储过程、触发器、各项参数以及后门的检测语句,对已知威胁进行检查,及时排除数据库隐患。
数据库防火墙利用解密技术和sql分析技术,依托上下文sql语境,动态抓出存在恶意行为的语句包,进行实施拦截。
数据库漏扫侧重已知隐患扫描,数据库防火墙侧重特征隐患拦截和告警,双方既是相互独立的也是相互联动的。数据库防火墙拦截到一个新型隐患,数据库漏扫则根据这个新型的特征更新扫描检测项;数据库漏扫发现安全隐患,则数据库防火墙根据隐患特征更新防护策略,优化已有安全策略,进一步降低误报率。
一些可行的安全建议
除了建设安全防护体系,数据库管理人员在日常运维中也需要谨慎操作。保守来说,如果做到以下几点,你可以避免至少50%的数据库恶意攻击:
1.不要在非官方途径下载数据库相关工具,如数据库安装和升级包;
2.经常检查数据库链接工具的脚本是否正常;
3.使用最小权限原则,尽可能降低给Oracle用户的权限,如限制创建存储过程或触发器等。
针对本次数据库恶意攻击事件,安华金和提供攻击验证脚本和检查脚本,用户可及时自查防范:
http://dbsec.cn/upload/prvtsupp.zip
作者:安华金和
(责任编辑:安博涛)