MySQL数据库被攻击,被删库勒索,逼迫我使出洪荒之力进行恢复数据

2023-11-19

昨天连夜赶了一篇文章,讲述了一个被黑客连续攻击服务器三次的普通“搬砖人”,一次比一次艰难,一次比一次狠。

我给大家看几张图,看看黑客的“佳作”

  1. 首先创建一个数据库:README_FHX
    在这里插入图片描述
  2. 然后创建表:README
    在这里插入图片描述
  3. 插入一条数据
    在这里插入图片描述

内容如下:

  • 内容:以下数据库已被删除:*****。 我们有完整的备份。 要恢复它,您必须向我们的比特币地址bc1q6d96nllp6spyxruc0wmtkpk8e36949gny5qrcr支付0.0075比特币(BTC)。 如果您需要证明,请通过以下电子邮件与我们联系。 shao3@tutanota.com 。 任何与付款无关的邮件都将被忽略!
  • 比特币地址:bc1q6d96nllp6spyxruc0wmtkpk8e36949gny5qrcr
  • 邮箱地址:shao3@tutanota.com
  1. 删除我的数据库
    在这里插入图片描述

以上操作建库,删库,库名是我们大家一般不会注意到的,可能就是因为怕受害者看不到,所以某些恶心人玩意儿,又建了一个和被删数据库同名的数据库名,创建表,插入刚才第三步的内容。

这样的话,大家再次登录数据库后会发现表不存在了,但是数据还存在,会不会觉得是否是自己误删了?或者服务器宕机导致表丢失?

但是稍微有点基础的人都知道,mysql肯定有日志,一般不会丢失。此刻去mysql服务器查看服务日志,发现是空的。因为恶心人的玩意儿把日志truncate
在这里插入图片描述
上边是我自己觉得的一些操作,就到此为止了;其实黑客又干了一件事,为了让我们受害者一定会去服务查看日志或者数据,直接把我们连接数据库的用户给delete
在这里插入图片描述

到此,才结束这一个受害者的破坏。继续下一个受害者。。。

我的猜测

我猜测黑客可能是破解了我的数据库用户root的密码,然后执行他们准备好的脚本,然后进行搞破坏。

总结破坏的流程:

  1. 攻击服务器暴露的端口,根据不同的端口执行不同的攻击策略
  2. 找到暴露的mysql数据库端口3306,开始进行攻击,比如常用的用户名root,然后进行破解密码,比如我之前的用户名和密码都是root(现在肯定不是了,并且所有端口我都没有暴露,你除非把腾讯云给破解了,然后删除我的云服务器。),极其好破解
  3. 通过账号密码连上服务器
  4. 创建数据库和表,插入以上内容
  5. 删除非mysql默认数据库
  6. 创建非mysql默认数据库
  7. 然后再非mysql默认数据库分别创建表和插入以上内容
  8. 防止mysql服务记录连接mysql的客户端ip等信息,删除mysql服务日志
  9. 删除破解的用户名
  10. 搞定收工。。。

以上流程只是根据自己的经历猜测出来的,并不一定真实。。。因为对黑客的植入,破解,攻击等操作我一概不清楚(虽然我也很想学习);但是我怕学会和他们(人渣)一样,通过不法途径,谋取来路不正的钱财,当上人上人,迎娶白富美,走上人生巅峰。。。咳咳,跑题了。。。

前天晚上得知我被攻击破解数据库的时候,我很生气,很难受,我辛辛苦苦两个月写的文章,全部没了,虽然我可以重新弄出来,但是我心不干,我想恢复。。。

腾讯客服让我通过快照,或者备份恢复,但是我没有用任何的腾讯云上的功能;当时我就想到我用mysql的日志恢复,但是我不是很会啊,只是知道mysql的binlog是记录每一条sql的日志;再说了,我也不清楚我有没有开启日志,当时心想,还是看看吧。。。

结果就是我看到了,看到了黎明,看到了曙光,,,我开始着手搞日志,查资料,看博客,想尽一切办法恢复数据。我现在就在想,我要不要说出来我怎么回复日志的,我怕我说出来,黑客他们知道了手段,下次再去搞破坏时,根据我说的恢复机制,补充他们的“漏洞”。

想了想,我还是说出来吧,防止有些人跟我一样,被搞破坏了,却不知道如何搞了。

恢复数据的过程虽然艰辛(对当时的我来说,真的很煎熬),但是解决还是很美好,当天晚上我就奖励了自己一个鸡腿,,,

其实不管数据库是不是被删除数据、被修改数据,或者手误操作,其实数据都可以找回来的(前提是:binlog日志要存在),只是看数据的重要性,比如企业的生产数据,一般情况是不会被攻击以及被删除的,因为企业对数据库的安全性看的很重,除了DBA一般人是没有权限修改的,只有查看的权限。

我先说我是怎么恢复数据的吧,首先先声明,我的数据库虽然被删除了,但是日志还在,没有被黑客删除;我以前也看到过新闻,一家公司数据库被攻击,删除并且备份了保密数据,要求公司按每条数据0.05美元(大概这个数吧),一共是几百万条数据,大概总价值600万美元吧,如果不汇款的话,他们还要去什么用户保密协会(我也不太清楚了),如果有兴趣的话,可以自行百度搜索相关新闻,我这里就不详细说了。

这么说的话,这个黑客是不是给我打折了,一共操0.0075个比特币,折合人民币的话,大概1700元左右(当前比特币价值:35500$),其实就算让我转0.0001个比特币(人民币:23元),我也不会去向你妥协,我会向你拖鞋,妈的fuck。关键是我不会啊,我不会往你比特币地址上转啊,我要是会的话,我就不用火币app平台充钱了,还要我手续费,还清退我,呜呜呜。。。

如果那个黑客有幸看到我这篇文章的话,你联系我,你把支付宝收款码或者微信收款码给我,我给你转。我实在不知道怎么给你转,所以我怎么赎回我的数据啊。。。。。。

恢复数据的过程

  1. 首先,我备份了一些重要的数据,比如mysql的data,redis的日志文件,文件(呜呜呜,我的文件还是没有来及备份,导致我的文章好多文件丢失。。。)

  2. 然后,我重置了我的服务器,防止黑客在攻击的过程中,植入一些见不得人的脚本,继续破坏我以及我的服务器。(极其建议服务器被攻击过的进行这一步操作)

  3. 针对恢复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

时间可以根据nov3.sql中的时间进行截段执行,比如
在这里插入图片描述

到此,我的数据就恢复全部了。。。

总结

为了防止再次被攻击,可以这么做:

  • 避免不必要的暴露端口,比如:3306、6379、8080等一些常用的端口
  • 修改常用的端口:比如3306修改为3307,6379修改6380等等
  • 提高密码复杂度
  • 不要透漏任何的地址信息,马赛克现在也不安全了,防止被有心人士破解
  • 密码不使用明文密码登录等等手段

天下没有不透风的墙,再强的防火墙,安全加密,也会有被破解的一天,我们只能尽量做到有效的防止,而不能百分百的禁止。。。希望能吃一堑长一智。

最后提一句,有事没事可以多备份一下自己的重要数据,不管是手机上的还是电脑上的,防止丢失找不到,可以及时的恢复,这一处我的博客停机了两天,也不知道有人知道么。。。(再次哭笑,毕竟我也不是什么大V什么的。。。哈哈)

码文章真难啊,这6000多字,我竟然写了二个多小时,我的天啊,真心不易啊。

最后再提一句,我之前看到一个CSDN博主也被攻击过,我看到的截图是这样的
图片来源:https://blog.csdn.net/qq_40731745/article/details/116015326
在这里插入图片描述
我发现是一个团伙作案:

  1. 首先内容几乎一样,除了比特币地址,和邮箱地址
  2. 邮箱地址竟然全是@tutanota.com

希望大家以此警钟自己吧。。。

码文章不易,希望大家点一下赞以及反手一个关注,如果有需要帮忙恢复数据的,大家可以一起探讨一下,促使自己获取更多知识,更多安全意识

大家可以关注我的公众号和个人网站

公众号内有很多干货。。。在这里多谢大家光顾。。。
个人网站:https://www.cuizb.top
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL数据库被攻击,被删库勒索,逼迫我使出洪荒之力进行恢复数据 的相关文章

  • MYSQL嵌套查询运行速度很慢?

    以下查询不断超时 是否有开销更少的方法来实现相同的功能 UPDATE Invoices SET ispaid 0 WHERE Invoice number IN SELECT invoice number FROM payment allo
  • MySQL 中电话号码的最佳数据类型是什么?它的 Java 类型映射应该是什么?

    我正在将 MySQL 与 Spring JDBC 模板一起用于我的 Web 应用程序 我需要存储仅包含数字的电话号码 10 我对使用数据类型的数据类型有点困惑 MySQL 中最适合它的数据类型是什么 为此 Bean POJO 类中的 Jav
  • MySQL将多个表中的记录插入到新表中

    我正在尝试使用另外 2 个表中的记录填充一个新表 period states 是新的 空的 period states id period id sla id period 包含 15 条记录 periods id slas 包含 84 条
  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • Mono 和 WebRequest 速度 - 测试

    在 mono 4 6 2 linux 中 我注意到 wget 下载文件的速度与webclient DownloadString 所以我做了一个小测试来调查 为什么 wget 明显比 C 快 根据我自己的实验 使用 wget 下载 手动读取文
  • 使用 Sequelize 计算关联条目数

    我有两张桌子 locations and sensors 每个条目在sensors有一个外键指向locations 使用 Sequelize 如何获取所有条目locations以及条目总数sensors与每个条目相关联locations R
  • 是否可以找到哪个用户位于 localhost TCP 连接的另一端?

    这是一个编程问题 但它是 Linux Unix 特定的 如果我从本地主机获得 TCP 连接 是否有一种简单的方法可以告诉哪个用户在 C 程序内建立了连接而无需 shell 我知道这对于 Unix 域套接字来说并不太难 我已经知道远程 IP
  • PHP/PDO/MySQL:插入 MEDIUMBLOB 会存储错误数据

    我有一个简单的 PHP Web 应用程序 它通过文件上传接受图标图像并将它们存储在 MEDIUMBLOB 列中 在我的机器 Windows 和两台 Linux 服务器上 这工作得很好 在第三台 Linux 服务器上 插入的图像已损坏 在 S
  • 如何在 mysql 或 JDBC 的表中自动插入外键引用?

    我正在使用MySQL 我的问题是如何自动将新添加的行插入外键表中 一个例子可以澄清我的问题 我有两个表 员工 和 薪水 CREATE TABLE Employee emp id int NOT NULL AUTO INCREMENT nam
  • 对 sf:: 的未定义引用

    我想用 C 制作 GUI 应用程序 发现 SFML 是一个不错的选择 幸运的是 我使用的是 Linux 所以 SFML 2 4 已经安装在我的系统上 所以我开始搜索一些教程并找到了一个制作简单窗口的教程 但是当我运行代码时 出现错误 提示未
  • 删除所有值比第二高值低 5 倍的记录

    我有一个表 价格 有两个字段 代码 字符 和价格 小数 我需要查找具有相同代码 价格比两个最高价格低 5 倍或更少的所有记录 例如 在这种情况下 我希望删除 id 1 id code price 1 1001 10 2 1001 101 3
  • xdotool 类型需要很长时间并导致整个桌面冻结

    我一直在使用xdotool type过去只能在快捷方式上输入耸肩xdotool type 这可行 但总是需要相当长的时间 并导致整个桌面冻结 完全冻结 而不仅仅是输入 几秒钟 不过并没有太打扰我 现在我需要一种方法来从文件中读取内容 对其进
  • MySQL 和 PHP:多关键字搜索

    我有一个包含逗号分隔关键字的字符串 例如 keywords keyword1 keyword2 keyword3 我的表架构 名为tbl address是这样的 简化的 id INT 11 PRIMARY KEY AUTO INCREMEN
  • 变量作为 bash 数组索引?

    bin bash set x array counter 0 array value 1 array 0 0 0 for number in array do array array counter array value array co
  • 无法在 mysql 表中的值中使用破折号(-)[重复]

    这个问题在这里已经有答案了 我一直在尝试从 python 将数据插入 MYSQL 表 我的sql表中的字段是id token start time end time和no of trans 我想存储使用生成的令牌uuid4在令牌栏中 但由于
  • 如何使用 bash 脚本关闭所有终端,在每个终端中有效地按 Ctrl+Shift+Q

    我经常打开许多终端 其中一些正在运行重要的进程 例如服务器 而另一些则没有运行任何东西并且可以关闭 如果您按 重要 则会弹出确认提示Cntrl Shift Q在其中 如下所示 我想要一个 bash 脚本 它可以关闭所有终端 但将 重要 终端
  • 将 stdout 作为命令行 util 的文件名传递?

    我正在使用一个命令行实用程序 该实用程序需要传递文件名以将输出写入 例如 foo o output txt 它唯一写入的东西stdout是一条消息 表明它运行成功 我希望能够通过管道传输写入的所有内容output txt到另一个命令行实用程
  • MYSQL数据库删除行后需要进行后期优化

    我有一个当前为 10GB 的日志表 它有很多过去两年的数据 我真的觉得目前我不需要那么多 我是否错误地认为在表中保存多年的数据不好 表越小越好 我的桌子都有 MYISAM 引擎 我想删除 2014 年和 2015 年的所有数据 很快我就会删
  • 通过“SELECT”命令选择每组的前两条记录的最佳方法是什么?

    例如我有下表 id group data 1 1 aaa 2 1 aaa 3 2 aaa 4 2 aaa 5 2 aaa 6 3 aaa 7 3 aaa 8 3 aaa 通过 SELECT 命令选择每组的前两条记录的最佳方法是什么 如果没有
  • SQL查询:按字符长度排序?

    是否可以按字符总数对sql数据行进行排序 e g SELECT FROM database ORDER BY data length 我想你想用这个 http dev mysql com doc refman 5 0 en string f

随机推荐

  • QT信号和槽连接方式小结

    QT信号和槽 qt信号和槽的连接方式 qt信号和槽的连接方式分为具体分五种 在手册中查看了Qt ConnectionType的枚举类型结果如下 Qt AutoConnection 0 默认 如果信号的发送和接收方在相同线程的情况下 使用Qt
  • 用Python的turtle模块绘制粽子

    导语 在这篇博客中 我们将使用Python的turtle模块来绘制中国传统食物 粽子 粽子是一种由糯米包裹在竹叶中制成的饺子 通常在端午节期间食用 我们将逐步解释代码并解释每个组成部分 以了解如何绘制粽子 准备工作 首先 我们需要导入tur
  • 如何遍历一个栈而且保持原栈不动

    用Iterator public static void printStack Stack
  • 适合于流式播放的DirectShow客户服的编写

    转载请标明是引用于 http blog csdn net chenyujing1234 例子代码 包括客户端与服务端 编译工具 VS2005 http www rayfile com zh cn files a34cb700 74ce 11
  • 免费实用的日记应用:Day One for Mac中文版

    Day One for Mac是一款运行在Mac平台上的日记软件 你可以使用Day One for mac通过快速菜单栏条目 提醒系统和鼓舞人心的信息来编写更多内容 day one mac版还支持Dropbox同步功能 想要day one
  • Linux shell中if [ $? -eq 0 ] 语句作用:判断命令是否执行成功

    shell脚本中 是指上一次命令执行的成功或者失败的状态 如果成功就是0 失败为1 语句if eq 0 是判断if语句的上一个命令执行如果成功就执行if中的语句 否则就执行else中的内容 note 使用时要注意 if后面的中括号 eq 0
  • ES概述与JS实现

    一 ES概述与JS实现 ES是国际标准化组织发布的浏览器脚本语言的标准 全名 ECMAScript ES是JS语言的国际标准 JS是ES的实现 在日常场合 两个词可以互换 ES是JS的子集 它是JS的内容的一部分 一个完整的JS实现是由以下
  • Ubuntu snap 使用大量 /dev/loop 设备

    snap 是 Ubuntu 上的新型软件包管理方式 但也证明 snap 虽然想以新代旧 但明显做的并不好 这里也是 snap 软件包管理的问题 自带的 咱并不想要 这个问题类似于 MacOS 上安装了 img 格式的软件后会有一个挂载点存在
  • 【DETR】3、Conditional DETR

    文章目录 一 Conditional DETR 是怎么被提出来的 二 Conditional DETR 的具体实现 2 1 框架结构 2 2 DETR 的 cross attention 和 Conditional DETR 的 cross
  • 开始编写Spring Boot代码及运行该代码

    编写代码 为了完成应用程序 我们需要创建一个单独的Java文件 Maven默认会编译src main java下的源码 所以你需要创建那样的文件结构 然后添加一个名为src main java Example java的文件 import
  • Java之路:变量作用域

    变量作用域 变量是有作用范围 Scope 的 也即作用域 一旦超出变量的作用域 就无法再使用这个变量 在程序中 变量一定会被定义在某一对大括号中 该大括号所包含的代码区便是这个变量的作用域 按作用域范围划分 变量分为成员变量和局部变量 1
  • Python 爬虫入门基础

    什么是爬虫 爬虫 即网络爬虫 大家可以理解为在网络上爬行的一直蜘蛛 互联网就比作一张大网 而爬虫便是在这张网上爬来爬去的蜘蛛咯 如果它遇到资源 那么它就会抓取下来 想抓取什么 这个由你来控制它咯 比如它在抓取一个网页 在这个网中他发现了一条
  • 1Panel本人目前为止,遇到过的最牛docker管理工具

    1Panel 现代化 开源的 Linux 服务器运维管理面板 1Panel 的功能和优势包括 快速建站 深度集成 Wordpress 和 Halo 域名绑定 SSL 证书配置等一键搞定 高效管理 通过 Web 端轻松管理 Linux 服务器
  • undefined control sequence .....等系列问题

    undefined control sequence includegraphics Undefined control sequence LN col undefined control sequence 等问题 在文章最前面的 docu
  • Jmeter 课程笔记(五)集合点、思考时间和三种断言

    添加集合点 Http请求 右键 定时器 Synchronizing Timer Numberb of Simulated Users to Group by 并发用户数量 默认为0则与线程组的线程数一致 Timeout inmillisec
  • jQuery ajax(自动补全)

    1 Ajax了解 Ajax 是一种用于创建快速动态网页的技术 1 1为什么用Ajax 无刷新 不刷新整个网页 只刷新局部 无刷新的好处 值更新部分页面 有效利用宽带 提高用户体验 2 Ajax用来做什么 用来刷新局部页面 不使用 Ajax
  • 镜之Json Compare Diff

    前言 镜 寓意是凡事都有两面性 Json 对比也不例外 因公司业务功能当中有一个履历的功能 它有多个版本的 JSON 数据需要对比出每个版本的不同差异节点并且将差异放置在一个新的 JSON 当中原有结构不能变动 差异节点使用数组对象的形式存
  • Unity3D 官方文档 平台特殊化之Standalone和多显示器的处理

    版本 unity 5 6 语言 C 总起 Standalone 我一眼看下去的理解就是PC机平台 官方文档中说该平台指的是Mac Windows和Linux 这篇文章主要讲的是Standalone平台下的设置 通过点击菜单栏的File gt
  • linux cat命令使用方法,Linux cat命令怎么使用

    作为一个典型的DOS 和WINDOWS用户 让我们一起来学习Linux的一些主要命令 下面跟着学习啦小编来一起了解下Linux cat命令怎么使用吧 Linux cat命令使用方法 cat命令主要用来查看文件内容 创建文件 文件合并 追加文
  • MySQL数据库被攻击,被删库勒索,逼迫我使出洪荒之力进行恢复数据

    昨天连夜赶了一篇文章 讲述了一个被黑客连续攻击服务器三次的普通 搬砖人 一次比一次艰难 一次比一次狠 我给大家看几张图 看看黑客的 佳作 首先创建一个数据库 README FHX 然后创建表 README 插入一条数据 内容如下 内容 以下