数据库遭遇比特币勒索的一次入侵分析

数据库遭遇比特币勒索的一次入侵分析

前言

事情发生在前几天,上午接到通知,公司的测试环境数据库遭遇比特币勒索,于是杯子开水加满,开始分析。

信息收集

首先想到的是看日志,空空如也。综合分析,存在以下三个疑点,欢迎补充。

疑点一:个人PC中马。因为最近有人反映收到钓鱼邮件。

疑点二:弱口令。网上搜索了一下相似的入侵案例

疑点三:git信息泄漏。最近关于git信息泄漏的新闻不少。

排查阶段

首先重点看了一下git是否存在信息泄漏,,排除此疑点。

网上存在相似案例,提供的信息是弱口令造成的,删库插入勒索信息,这也是我们觉得嫌疑最大的一方面。

关于个人PC中马,重点检查了一下掌握被入侵数据库的人员的PC。

最后得出的结果是弱口令。

背景

排查阶段并不是那么顺利,一开始怀疑就是弱口令。查日志的时候,运维大哥给了一个强密码,当时就被带沟里了。大佬去外地出差了,菜鸡的我在家看家。最后通过大佬的冷静分析,确定是弱口令,登录数据库查询,验证存在弱口令。

你大爷还是你大爷,大佬还是大佬。

安全防范

首先做了策略,数据库只允许内网的someone访问。
然后排查了一遍数据库中的弱口令。

后记

本次入侵源头是外网开放了可远程连接的mysql服务。

Python批量检测远程开放连接的mysql服务

任意IP登录情况下,update user set host = '%' where user = 'root';

mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| localhost | debian-sys-maint |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.00 sec)

模拟登录报错如下:

(1045, "Access denied for user '****' (using password: YES)")

限制任意IP登录情况下:delete from user where host = '%';

mysql> select user,host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | 127.0.0.1 |
| debian-sys-maint | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
3 rows in set (0.01 sec)

模拟登录报错如下:

(1130, "Host '****' is not allowed to connect to this MySQL server")

通过识别登录报错的元组,判断是否开启远程连接。

import MySQLdb
	 	
def coon(host):
	username = 'root'
	password = 'pass'
	port = '3306'
	try:
		result = MySQLdb.connect(host,username,password)
	except Exception as e:
		if e[0] ==1045 :
			print 'success',host
		if e[0] == 1130:
			print 'failed'
		else:
			pass

def main():
	with open('','r') as hosts:
		h = hosts.readlines()
		for host in h:
			host = host.strip('\n')
			coon(host)	

if __name__ == '__main__':
	main()

Github下载地址

posted @ 2019-05-16 10:24  mark-zh  阅读(469)  评论(0编辑  收藏  举报