昨天连夜赶了一篇文章,讲述了一个被黑客连续攻击服务器三次的普通“搬砖人”,一次比一次艰难,一次比一次狠。
我给大家看几张图,看看黑客的“佳作”
内容如下:
以上操作建库,删库,库名是我们大家一般不会注意到的,可能就是因为怕受害者看不到,所以某些恶心人玩意儿,又建了一个和被删数据库同名的数据库名,创建表,插入刚才第三步的内容。
这样的话,大家再次登录数据库后会发现表不存在了,但是数据还存在,会不会觉得是否是自己误删了?或者服务器宕机导致表丢失?
但是稍微有点基础的人都知道,mysql肯定有日志,一般不会丢失。此刻去mysql服务器查看服务日志,发现是空的。因为恶心人的玩意儿把日志truncate
了
上边是我自己觉得的一些操作,就到此为止了;其实黑客又干了一件事,为了让我们受害者一定会去服务查看日志或者数据,直接把我们连接数据库的用户给delete
到此,才结束这一个受害者的破坏。继续下一个受害者。。。
我猜测黑客可能是破解了我的数据库用户root的密码,然后执行他们准备好的脚本,然后进行搞破坏。
总结破坏的流程:
以上流程只是根据自己的经历猜测出来的,并不一定真实。。。因为对黑客的植入,破解,攻击等操作我一概不清楚(虽然我也很想学习);但是我怕学会和他们(人渣)一样,通过不法途径,谋取来路不正的钱财,当上人上人,迎娶白富美,走上人生巅峰。。。咳咳,跑题了。。。
前天晚上得知我被攻击破解数据库的时候,我很生气,很难受,我辛辛苦苦两个月写的文章,全部没了,虽然我可以重新弄出来,但是我心不干,我想恢复。。。
腾讯客服让我通过快照,或者备份恢复,但是我没有用任何的腾讯云上的功能;当时我就想到我用mysql的日志恢复,但是我不是很会啊,只是知道mysql的binlog是记录每一条sql的日志;再说了,我也不清楚我有没有开启日志,当时心想,还是看看吧。。。
结果就是我看到了,看到了黎明,看到了曙光,,,我开始着手搞日志,查资料,看博客,想尽一切办法恢复数据。我现在就在想,我要不要说出来我怎么回复日志的,我怕我说出来,黑客他们知道了手段,下次再去搞破坏时,根据我说的恢复机制,补充他们的“漏洞”。
想了想,我还是说出来吧,防止有些人跟我一样,被搞破坏了,却不知道如何搞了。
恢复数据的过程虽然艰辛(对当时的我来说,真的很煎熬),但是解决还是很美好,当天晚上我就奖励了自己一个鸡腿,,,
其实不管数据库是不是被删除数据、被修改数据,或者手误操作,其实数据都可以找回来的(前提是:binlog日志要存在),只是看数据的重要性,比如企业的生产数据,一般情况是不会被攻击以及被删除的,因为企业对数据库的安全性看的很重,除了DBA一般人是没有权限修改的,只有查看的权限。
我先说我是怎么恢复数据的吧,首先先声明,我的数据库虽然被删除了,但是日志还在,没有被黑客删除;我以前也看到过新闻,一家公司数据库被攻击,删除并且备份了保密数据,要求公司按每条数据0.05美元(大概这个数吧),一共是几百万条数据,大概总价值600万美元吧,如果不汇款的话,他们还要去什么用户保密协会(我也不太清楚了),如果有兴趣的话,可以自行百度搜索相关新闻,我这里就不详细说了。
这么说的话,这个黑客是不是给我打折了,一共操0.0075个比特币,折合人民币的话,大概1700元左右(当前比特币价值:35500$),其实就算让我转0.0001个比特币(人民币:23元),我也不会去向你妥协,我会向你拖鞋,妈的fuck。关键是我不会啊,我不会往你比特币地址上转啊,我要是会的话,我就不用火币app平台充钱了,还要我手续费,还清退我,呜呜呜。。。
如果那个黑客有幸看到我这篇文章的话,你联系我,你把支付宝收款码或者微信收款码给我,我给你转。我实在不知道怎么给你转,所以我怎么赎回我的数据啊。。。。。。
首先,我备份了一些重要的数据,比如mysql的data,redis的日志文件,文件(呜呜呜,我的文件还是没有来及备份,导致我的文章好多文件丢失。。。)
然后,我重置了我的服务器,防止黑客在攻击的过程中,植入一些见不得人的脚本,继续破坏我以及我的服务器。(极其建议服务器被攻击过的进行这一步操作)
针对恢复mysql数据库的一些操作:
一. 安装msyql 我使用yum进行安装的,配置和数据分别放置的
#(a)数据库目录
/var/lib/mysql/
#(b)配置文件
/usr/share /mysql(mysql.server命令及配置文件)
#( c )相关命令
/usr/bin(mysqladmin mysqldump等命令)
#(d)启动脚本
/etc/rc.d/init.d/(启动脚本文件mysql的目录)
二. 根据上边找到数据目录,mysql数据库的binlog会默认保存到/var/lib/mysql/
这个目录,默认格式:binlog.000001
/var/lib/mysql/
建议做好这个文件的备份,防止数据丢失,可以根据这个文件进行找回,恢复。
注意:
重置数据库的话,当前目录是没有需要恢复的日志文件。
首先需要你从本地上传到这个目录中,比如
然后修改binlog.index,记录当前binlog的index,服务器会从这里读取对应路径下的文件
然后才能正常执行以下操作。
三. 登录到mysql服务,然后执行命令show binlog events in ‘binlog.000001’;
如果用户被删掉,不能正常登录的话,可以这样:
首先停掉mysql服务,然后执行/usr/bin/mysqld_safe --skip-grant-tables &跳过验证登录,
然后另开一个xshell窗口输入mysql,进入mysql服务,执行以上命令
这个命令是查看这个文件的执行情况
四. 执行命令,并把nov3.sql文件下载到本地查看
/usr/bin/mysqlbinlog --no-defaults -v --base64-output=decode-rows binlog.000001 > nov3.sql
因为binlog.000001是一个二进制文件,这个命令会把解码加密的语句,这样我们可以看到mysql执行的每一个sql,如果不加–base64-output=decode-rows这个参数,看到的结果时这样的:
加上是这样的:
所以才有了以上我给大家展示的内容,否则我也不知道。。。苦笑。。。
执行这条命令是为了防止文件中存在对数据有害的操作指令,比如我给大家展示黑客的操作。这样我才能避免一些不能执行的指令。
五. 添加参数执行
/usr/bin/mysqlbinlog binlog.000007 | mysql -uroot -p -v -f > /opt/1.txt
然后输入密码开始恢复数据,
-f是为了跳过执行错误,
-v是展开执行的详细信息
如果文件中存在不能执行的指令,可以按照时间进行执行比如:
加上时间段参数 --start-datetime=‘2022-01-06 14:14:37’ --stop-datetime=‘2022-01-24 13:04:44’
/usr/bin/mysqlbinlog --no-defaults -v --base64-output=decode-rows binlog.000011 --start-datetime=‘2022-01-06 14:14:37’ --stop-datetime=‘2022-01-24 13:04:44’ > nov3.sql
到此,我的数据就恢复全部了。。。
为了防止再次被攻击,可以这么做:
天下没有不透风的墙,再强的防火墙,安全加密,也会有被破解的一天,我们只能尽量做到有效的防止,而不能百分百的禁止。。。希望能吃一堑长一智。
最后提一句,有事没事可以多备份一下自己的重要数据,不管是手机上的还是电脑上的,防止丢失找不到,可以及时的恢复,这一处我的博客停机了两天,也不知道有人知道么。。。(再次哭笑,毕竟我也不是什么大V什么的。。。哈哈)
码文章真难啊,这6000多字,我竟然写了二个多小时,我的天啊,真心不易啊。
最后再提一句,我之前看到一个CSDN博主也被攻击过,我看到的截图是这样的
图片来源:https://blog.csdn.net/qq_40731745/article/details/116015326
我发现是一个团伙作案:
希望大家以此警钟自己吧。。。
码文章不易,希望大家点一下赞以及反手一个关注,如果有需要帮忙恢复数据的,大家可以一起探讨一下,促使自己获取更多知识,更多安全意识