记服务器数据库被攻击后修复经验
前言
大概在11月初的时候,在腾讯云上租了一台轻量级应用服务器。当时是以学生价格入手的,非常便宜,性价比也非常高。当时还加了一点钱租了一个.design的域名,感觉非常划算。
之后就是部署项目的过程了,整个过程还算顺利。
如果大家想看javaweb项目上线过程请在我的个人博客中找,因为可能发布时间会在这篇文章之后。
上线之后,运行了几天,感觉还不错。访问速度很快,一切功能都正常,直到…
问题初现
项目是11月13日上线的,之后几天因为上学的缘故就没有管。直到11月18日打开网站,发现有一个留言板的功能无法正常使用。Ajax向后台发送数据得不到相应,笔者当时就有一种不好的预感。虽然网站没有什么东西,而且笔者早就知道这种安全级别肯定会被黑,但是心中不免还是为之一震,只得感叹“欢迎来到互联网”
果然,查询了后台log4j留下的日志,才发现数据库无法访问。当时觉得可能是数据库被删除了,不过数据库里面也没有什么重要的信息,而且也有快照备份,问题不大。
随后,笔者又尝试登陆了mysql的数据,发现黑客还留下一张新建的表。并且之前的业务数据库都被删除。
留下的线索是一张名字为WARNING的数据表,其中还有比特币的地址,还”贴心“地附上了联系邮箱。
那么下面就开始我们的分析过程吧!!!
邮箱查询
攻击者在数据库中留下了联系方式,那我们不妨就从联系方式下手。
通过攻击者留下的邮箱,我们可以尝试访问一下protonmail.com。
光是看这个网站就不难发现,这是一家在瑞士的安全邮件公司,也就是说邮件的信息完全是匿名的。
而且可以通过whois查询这个域名,也得不到任何有实际作用的信息。
数据库日志分析
经学习得知,Mysql数据库会自动记录数据库创建的时间,我们可以从那里找到一些线索。
查询所有表的创建时间
SELECT table_name,create_time FROM information_schema.TABLES;
查询指定表的创建时间
SELECT table_name,create_time FROM information_schema.TABLES WHERE table_name = '表名';
最后返回的执行结果:
可以看到,WARING表是在2020年的11月17日的凌晨4时35分02秒被创建出来的,这非常像一个黑客出来整活的时间。同时,这也就印证了为什么网站在11月18日的时候无法读取数据库。
所以,可以初步确定,攻击事件是发生在11月17日凌晨4点左右。
Centos系统日志
在登陆ssh的时候会发现有上一次登陆失败的记录信息,可以看到后台肯定是遭遇到了暴力破解。
因为ssh已经存在过3万5千次的登陆失败
查阅过大量的资料之后,还可以发现Linux系列的系统都有两个命令。
last 和 lastb
这里进行分别讲解last和lastb命令。
LAST命令
执行last命令后,系统会从/var/log/wtmp处读取登录成功信息。如下,是执行结果:
还有更多的参数请自行查找资料,笔者这里不再过多赘述。
PS:遮挡信息为ip地址。
LASTB命令
执行lastb命令之后,系统会去读取/var/log/btmp,并且显示出所有登录失败的信息。
下图为执行结果:
因为实在是数量庞大,故只寻找11月17日凌晨四点左右的登录信息。