-
-
[翻译]针对MySQL和Mongodb数据库的勒索软件
-
发表于: 2018-10-9 23:29 5472
-
如今,勒索软件可以说是网络安全专家处理的所有攻击中最难缠的一种。勒索软件对一个组织机构产生的影响是巨大的,并会带来严重的经济损失。仅勒索软件所勒索的赎金并不能反映攻击的总费用——更重要的成本来自停机、数据恢复以及部分或全部的业务瘫痪带来的损失。在NotPetya勒索软件攻击事件中,马士基(Maersk)估计其损失在2亿至3亿美元之间,而联邦快递(FedEx)估计其损失为3亿美元。毋庸置疑,与勒索软件相关的损失似乎正在增加。
众所周知,典型的勒索软件会将文件加密——那针对数据库的勒索软件呢?我们在之前已经写过一篇文章来介绍它们的危害,尽管数据库勒索软件可能会对组织的数据和核心应用依赖的数据库产生更大的潜在威胁,但它们依旧不被人们关注。
在本文中,我们将介绍数据库勒索软件是如何进行攻击的,并提供两个我们近期监控到的数据库勒索软件的攻击行为分析:一个在MySQL上,另一个在NoSQL(MongoDB)上。
为了破坏和篡改数据,勒索软件主要用以下三种方法攻击数据库:
假设攻击者已经取得了对于数据库的访问权限(无论是通过暴力破解获取到DBA的账户信息,还是早已拥有访问权限的内部人员),它可以删除、插入、更新数据,从而修改数据。这些都可以通过一些简单的SQL事务或者NoSQL命令来完成。
Web应用程序漏洞,比方说SQL注入或NoSQL注入,攻击者可以执行他们想要执行的任何SQL语句。虽然我们已经看到勒索软件在攻击网络应用程序,在实际环境中我们还没有看到这种针对数据库的攻击方法,但它很可能会发生。
外部攻击者进行攻击的另一种方法是通过公共IP来找到数据库目标,这可以通过Shodan等在线服务轻松实现。
数据库文件存储着数据库架构和数据。此类攻击与针对文件的传统勒索软件攻击完全相同。唯一的警告(从勒索软件的角度来看)是它必须在加密之前先停止数据库进程,因为数据库进程会占用数据库文件,使其在使用时无法被其他进程修改。
让我们来看一下我们的系统最近监控到的两个基于SQL/NoSQL事务的攻击。
攻击者通过爆破用户名/密码成功获取了数据库的访问权限。下一步是“show databases”,然后使用“drop database”语句删除枚举出来的所有数据库。
值得注意的是,数据库监控和执行系统不能依赖于每个连接(流)的累积可疑活动来识别攻击。 此类攻击中,在每个SQL语句之后,攻击者的客户端在执行下一个SQL语句之前都会注销一次。 因此,删除10个表的数据库最终会有11个连续的连接(额外的一个用于列出表)。 此外,Wireshark中的“追踪TCP流”功能一次只能显示一个恶意活动,而不是整个攻击序列。
图1-3显示了攻击者如何列出数据库并删除其中一个数据库。
图1: 攻击者列出所有的数据库
图2: 攻击者在进入下一阶段之前断开连接
图3: 攻击者删除数据库
在处理完该数据库中的数据后,攻击者创建了一个名为“Readme”的表,并在表里留下了勒索提示(图4和图5)。
图 4: 创建 “Readme” 表
图 5: 插入勒索提示,向受害者解释发生了什么以及如何付款
这是它在Imperva SecureSphere数据库活动监控(系统)中的表现(图6):
图6:SecureSphere审计屏幕显示了整个攻击栈
勒索提示详情(如图5所示):
注意:此类攻击中,攻击者在删除数据之前甚至不愿意读取数据。
可以看到这个组织每隔几周就会改变其比特币地址。上述比特币地址用于三周前发生的攻击,而我们的系统在几天前观察到一个新的比特币支付地址:1G5tfypKqHGDs8WsYe1HR5JxiwffRzUUas(见图7)。
图7:Imperva SecureSphere监控到的MySQL勒索软件的新比特币地址
MongoDB是一个NoSQL数据库,但攻击逻辑非常相似。这次,由于不需要身份认证,登陆对攻击者来说变得很简单。 MongoDB默认情况下不启用访问控制,因此只知道IP和(众所周知的)端口,便可以访问到MongoDB数据库。根据Shodan的说法,有大约20,000个带有公共IP的MongoDB没有认证。这约占所有暴露在公网中的MongoDB数据库的40%。
图8和图9显示了攻击者列出数据库并删除其中一个数据库。
图8:攻击者列出数据库
图9:攻击者删除其中一个数据库
为了让受害者了解到已经遭受攻击(以及如何支付赎金),攻击者创建一个名为“Warning”的数据库,里面有个“Readme”字段。下面是使用MongoDB的本机审计工具生成的JSON内容:
图10:创建Readme以存储勒索提示
下面是消息的内容:
图11:勒索提示和比特币账户的内容勒索提示详情(如图11所示):
虽然这是一个与前面MySQL攻击不同的比特币(BTC)地址,但请注意攻击者的联系信息(邮箱信息)——它与MySQL攻击的组织相同,也是此组织在MongoDB攻击的2.6万受害者中提到的地址中最多的一个。我们的系统还表明这两种攻击都来自同一个IP(中国)。到底要不要支付赎金?在撰写本文时,MySQL帐户有两笔付款,MongoDB帐户的三笔付款,共计1个BTC,即4,800美元。
Imperva并不建议客户支付赎金(尽管在没有备份的情况下,将会面临着两难的选择),并且即使用户没有备份,我们强烈建议不要向攻击者支付赎金。这是因为对于这两次攻击行为的记录和审计,我们发现攻击者甚至在进行攻击之前之前都没有读取数据。攻击者列出了数据库并立即删除了表,甚至都没有备份,因此恢复数据(对于攻击者而言)也就成了无稽之谈。译者注:其实当遇到勒索的时候,可以及时联系攻击者,随机指定几条数据让其恢复,如果确实可以恢复出来,并且数据没有备份,可以酌情支付赎金;如果没法恢复,也就避免了二次损失。当然最好的就是从根源处切断攻击者的攻击路径。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
- [翻译] AngularJS客户端模板注入(XSS) 9574
- [翻译]利用RDP隧道来突破网络限制 10962
- [翻译]Android 应用逆向工具总结 9250
- [翻译]Powershell 代码反混淆技术研究 14356
- [翻译]针对MySQL和Mongodb数据库的勒索软件 5473