2017年开年的第一次比较大的安全事件: MongoDB “赎金事件”,如何看待互联网安全问题

今天上午(2017年1月7日),我的微信群中同时出现了两个MongoDB被黑掉要赎金的情况,于是在调查过程中,发现了这个事件。这个事件应该是2017年开年的第一次比较大的安全事件吧,发现国内居然没有什么报道,国内安全圈也没有什么动静(当然,他们也许知道,只是不想说吧),Anyway,让我这个非安全领域的人来帮补补位。

事件回顾

这个事情应该是从2017年1月3日进入公众视野的,是由安全圈的大拿 Victor Gevers (网名:0xDUDEGDI.foundation 的Chairman),其实,他早在2016年12月27日就发现了一些在互联网上用户的MongoDB没有任何的保护措施,被攻击者把数据库删除了,并留下了一个叫 WARNING 的数据库,这张表的内容如下:

{
    "_id" : ObjectId("5859a0370b8e49f123fcc7da"),
    "mail" : "[email protected]",
    "note" : "SEND 0.2 BTC TO THIS ADDRESS 13zaxGVjj9MNc2jyvDRhLyYpkCh323MsMq AND CONTACT THIS EMAIL WITH YOUR IP OF YOUR SERVER TO RECOVER YOUR DATABASE !"
}

基本上如下所示:

MongoDB ransom demand (via Victor Gevers)

说白了就是黑客留下的东西——老子把你的MongoDB里的数据库给转走了,如果你要你的数据的话,给我0.2个的比特币(大约USD200)。然后,他的twitter上不断地发布这个“赎金事件”的跟踪报道。与此同时,中国区的V2EX上也发现了相关的攻击问题 《自己装的 mongo 没有设置密码结果被黑了

然后,在接下来的几天内,全球大约有1800个MongoDB的数据库被黑,这个行为来自一个叫 Harak1r1 的黑客组织(这个组织似乎就好黑MongoDB,据说他们历史上干了近8500个MongoDB的数据库,几乎都是在祼奔的MongoDB)。

不过,这个组织干了两天后就停手了,可能是因为这事已经引起了全球科技媒体的注意,产生了大量的报道(如果你在Google News里查一下“mongodb ransom”,你会看到大量的报道(中文社区中,只有台湾有相关的报道)),他们也许是不敢再搞下去了。

不过,很快,有几个copycats开始接着干,

马上跟进的是 own3d ,他们留下的数据库的名字叫 WARNING_ALERT,他们至少干掉了 930个MongoDB,赎金0.5个比特币(USD500),至少有3个用户付费了

然后是0704341626asdf,他们留下的数据库名字叫PWNED,他们至少干掉了740个MongoDB,赎金0.15个比特币(USD150),看看他们在数据库里留下的文字——你的MongoDB没有任何的认证,并且暴露在公网里(你TMD是怎么想的?)……

0704341626asdf group ransom note (via Victor Gerves)

就在这两天,有两个新的黑客也来了

  • 先是kraken0,发现到现在1天了,干了13个MongoDB,赎金 0.1个比特币。
  • 然后是 3lix1r,发现到现在5个小时,干了17个MongoDB,赎金0.25比特币。

BBC新闻也于昨天报道了这一情况——《Web databases hit in ransom attacks》,现在这个事情应该是一个Big News了。

关于MongoDB的安全

安全问题从来都是需要多方面一起努力,但是安全问题最大的短板就是在用户这边。这次的这个事,说白了,就是用户没有给MongoDB设置上用户名和口令,然后还把服务公开到了公网上。

是的,这个安全事件,相当的匪夷所思,为什么这些用户要在公网上祼奔自己的数据库?他们的脑子是怎么想的?

让我们去看一下Shodan上可以看到的有多少个在暴露在公网上而且没有防范的MongoDB?我了个去!4万7千个,还是很触目惊心的(下图来自我刚刚创建的 Shodan关于MongoDB的报表

那么,怎么会有这么多的对外暴露的MongoDB?看了一下Shodan的报告,发现主要还是来自公有云平台,Amazon,Alibaba,Digital Ocean,OVH,Azure 的云平台上有很多这样的服务。不过,像AWS这样的云平台,有很完善的默认安全组设置和VPC是可以不把这样的后端服务暴露到公有云上的,为什么还会有那么多?

这么大量的暴露在公网上的服务是怎么回事?有人发现(参看这篇文章《It’s the Data, Stupid!》 ),MongoDB历史上一直都是把侦听端口绑在所有的IP上的,这个问题在5年前(2011年11月)就报给了MongoDB (SERVER-4216),结果2014年4月才解决掉。所以,他觉得可能似乎 MongoDB的 2.6之前的版本都会默认上侦听在0.0.0.0 。

于是我做了一个小试验,到我的Ubuntu 14.04上去 apt-get install mongodb(2.4.9版),然后我在/etc/mongodb.conf 文件中,看到了默认的配置是127.0.0.1,mongod启动也侦听在了127.0.0.1这台机器上。一切正常。不过,可能是时过境迁,debain的安装包里已加上了这个默认配置文件。不管怎么样,MongoDB似乎是有一些问题的。

再到Shodan上看到相关的在公网裸奔的MongoDB的版本如下,发现3.x的也是主流:

虽然,3.x的版本成为了主流,但是似乎,还是有很多人把MongoDB的服务开到了互联网上来,而且可以随意访问。

你看,我在阿里云随便找了几台机器,一登就登上去了。

真是如那些黑客中的邮件所说的:WTF,你们是怎么想的?

后续的反思

为什么还是有这么多的MongoDB在公网上祼奔呢?难道有这么多的用户都是小白?这个原因,是什么呢?我觉得可能会是如下两个原因:

1)一是技术人员下载了mongod的软包,一般来说,mongodb的压缩包只有binary文件 ,没有配置文件 ,所以直接解开后运行,结果就没有安全认证,也绑在了公网上。也许,MongoDB这么做的原因就是为了可以快速上手,不要在环境上花太多的时间,这个有助于软件方面的推广。但是,这样可能就坑了更多的人。

2)因为MongoDB是后端基础服务,所以,需要很多内部机器防问,按道理呢,应该绑定在内网IP上,但是呢,可能是技术人员不小心,绑在了0.0.0.0的IP上。

那么,这个问题在云平台上是否可以更好的解决呢?

关于公网的IP。一般来说,公有云平台上的虚拟主机都会有一个公网的IP地址,老实说,这并不是一个好的方法,因为有很多主机是不需要暴露到公网上的,所以,也就不需要使用公网IP,于是,就会出现弹性IP或虚拟路由器以及VPC这样的虚拟网络服务,这样用户在公有云就可以很容易的组网,也就没有必要每台机器都需要一个公网IP,使用云平台,最好还是使用组网方案比较好的平台。

关于安全组。在AWS上,你开一台EC2,会有一个非常严格的安全组——只暴露22端口,其它的全部对外网关闭。这样做,其实是可以帮用户防止一下不小心把不必要的服务Open到公网上。按道理来说,AWS上应该是帮用户防了这些的。但是,AWS上的MongoDB祼奔的机器数量是最多的,估计和AWS的EC2的 基数有关系吧(据说AWS有千万台左右的EC2了)

最后,提醒大家一下,被黑了也不要去付赎金,因为目前来说没有任何证据证明黑客们真正保存了你的数据,因为,被黑的服务器太多了,估计有几百T的数据,估计是不会为你保存的。下面也是Victor Gevers的提示:

转自 SUN‘S BLOG - 专注互联网知识,分享互联网精神!
原文地址《2017年开年的第一次比较大的安全事件: MongoDB “赎金事件”,如何看待互联网安全问题

相关阅读:什么是工程师文化?各位工程师是为什么活的?作为一个IT或互联网公司为什么要工程师文化?

相关阅读: 对程序员有用:2017最新能上Google的hosts文件下载及总结网友遇到的各种hosts问题解决方法及配置详解

相关阅读:你一直使用的能FQ的hosts文件原理是什么?怎么配置?|我来科普下

出处 酷 壳 – CoolShell

作者:陈浩

相关BLOG:SUN’S BLOG - 专注互联网知识,分享互联网精神!去看看:www.whosmall.com

时间: 2024-10-12 05:50:55

2017年开年的第一次比较大的安全事件: MongoDB “赎金事件”,如何看待互联网安全问题的相关文章

外网总结2019年十大移动安全事件

翻译自Top Mobile Security Stories of 2019 正如回顾2019年十大移动安全事件所显示的那样,赛博空间中的犯罪分子越来越多地将移动用户作为目标.对于不断扩张的企业而言,移动攻击载体也会随着业务扩展而显著扩大,迫使诸多公司重新考虑其安全要求.而对于消费者而言,保护个人隐私数据的唯一希望是提高安全意识. 1. 苹果公布漏洞双金 2019年12月,苹果官方公布了其历史悠久的私人漏洞赏金计划,同时将最高将近提高到100万美元(比如在具有完整内核并在苹果最新硬件完整运行的零

2017年这几件财政大事儿和你密切相关i3

2016年,我去过以色列,还去过欧洲的一些城市,参观过一些罗马时期的古城遗址,这些遗址与我在土耳其见到的大同小异.城市的布局.街道的铺设.拱门的样式.剧场的设计,以及广场.喷泉等等,如出一辙.有些城市相距万里,隔着千山万水,怎么会出自同一蓝图?埃克森美孚向被提名美国国务卿的前CEO发放退休金在北美大陆,从詹姆斯敦(最早的英国人定居地)的建立一直到美国独立,接近四分之三的外来者都不是自由人.在1680年的时候,只有不到5%的殖民地人口是非洲裔,奴隶的数量不到一万人;1684年,卡罗莱纳第一次引进了

2017软工实践第一次作业

(1)回想一下你初入大学时对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的? 大概是以前看的影视作品影响到我了···觉得程序员什么的好牛逼的样子.个人对电脑也比较感兴趣,就选择了计算机专业. 你认为过去两年中接触到的课程是否符合你对计算机专业的期待,为什么? 学的东西很多,甚至感觉有点太多了···我不否认基础知识的重要性,但我坚持认为我们学的很多东西以后根本用不上.多学点技术方面的可能会更有意思点·· 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 我以前感觉还挺喜欢的,但对计算机

当大数据遇上云计算,传统互联网将退出历史舞台?

很多人还没有搞清楚什么是PC互联网,移动互联网来了,我们还没有搞清楚移动互联的时候,大数据时代又来了.--马云 其实当我们还没有搞清楚大数据时代,大数据加云计算的时代又来了.数据和内容作为互联网的核心,而数据和内容的充分利用离不开云计算.早在奥巴马当选的时候就听说过大数据,奥巴马在总统竞选中使用大数据分析来收集选民的数据,让他可以专注于对他最感兴趣的选民,不久前在北京举办道德第一届"一带一路"国际合作高峰论坛已经将"大数据"入"十三五"规划的国家

大数据分析:王宝强离婚事件到底有多火热!

王宝强微博发布离婚9个小时后: 1.王宝强近24小时热议度309304较昨日同期增长20348%.—来自:微博指数; 大数据分析王宝强离婚事件 2.根据新浪CEO提供的数据显示:王宝强发布微博一个小时后,QPS(每秒查询率,即最大吞吐能力)瞬间增长2倍之多; 大数据分析王宝强离婚事件 3.根据百度指数显示:王宝强和马蓉搜索指数均增长3倍以上; 大数据分析王宝强离婚事件 4.根据Google Trends数据显示,王宝强关键词在一度达到热度100最高峰值. 大数据分析王宝强离婚事件 5.截止201

jquery点击按钮或链接,第一次与第二次执行不同的事件

本文和大家分享一个jquery的实例,这个实例实现的是点击网页里的按钮或链接,第一次和第二次会执行不同的事件,也就是两个事件会轮流执行. <script language="javascript"> $(function(){ var f = false; $("#aijquery1").click(function(){ if(f == !f){ alert(1) }else{ alert(2) } }); }); </script> 上面

跟着大神学Mongo,Mongodb主从复制本机简单操作总结

原文链接:http://www.cnblogs.com/huangxincheng/archive/2012/03/04/2379755.html 本机安装MongoDB不在介绍,本文Mongo小菜鸟学习本机实践.闲言少叙,书归正传. 模拟多机器运行环境.(只在本机,并不代表多机器一定成功) 启动各个MongoDB服务,并配置主从服务器 主服务器插入数据 查询从服务器数据 第一步:模拟多机器运行环境,其中ServerMain为主数据库,Other 1,2,3为从数据库.直接上图 第二步:启动各个

大数据技术暑期实习六___互联网营销精准决策(手机数据爬取)

一.解决方案 二.电商数据的爬取和清洗 2.1 Python爬取京东手机销售历史数据 1).环境 python3 环境.第三方包有 scrapy,re Pycharm .NotePad++.SublimeText 等代码编辑工具 2).爬虫步骤 采用 scrapy 爬虫框架编写爬虫脚本,选取核心代码讲解爬取京东手机销售数据的爬取逻辑.具体步骤如下: 1> 获取电商网站目标数据信息 2>根据手机品牌作为搜索关键词 withopen('./mobile_project/data/手机品牌.csv'

大数据技术暑期实习七___互联网营销精准决策(加载数据源)

1. 进入Hadoop环境(在Hadoop安装目录下运行命令.若配置好ssh则可以直接运行启动命令) 2. 启动hive进程(按照网上或林子雨的配置教程来就可以,不再赘述) 进入到shell 3.加载数据到hive数据库(在项目实操中不建议查询语句为select *,而应根据列名查询,若只是查看表结构及数据效果,建议加limit,不然要机子要崩~~沙卡拉卡) hive> show tables; ##查看表 hive> desc formatted hive_table; ##描述表信息 de