PLEASE_READ_ME 是一个针对 MySQL 数据库服务器的活跃数据勒索活动,其历史至少可以追溯到 2020 年。攻击方式非常简单,主要攻击手段是利用 MySQL 服务器的弱凭据。攻击的目标是全球互联网的 MySQL 服务器。PLEASE_READ_ME 是攻击者在被勒索的 MySQL 服务器上创建的数据库的名称。,因此该攻击是利用弱凭据,使用暴力破解,擦除数据库中的内容,并留下简短的注释。该票据被放置在一个名为“WARNING”的表格中,要求支付 的赎金。
1.案例
2025年1月我司安全人员在对客户进行安全运营中发现某香港ip对客户服务器短时间内进行批量密码爆破,封禁其ip后,对其进行溯源反制在其攻击服务器发现批量扫描爆破工具某广东ip长期使用rdp进行远程登录,以报警并提交相关证据进行处理。
攻击服务器上使用的mysql爆破工具
在其爆破的结果中有3000个mysql数据库已爆破成功
在其中一个中国IP(事后查找此IP为某事业单位)爆破结果下发现其数据库内有其勒索信息
其中的勒索信指向一个链接
2.攻击复现
使用 hydra进行爆破得到其密码
使用mysql进行远程连接
使用mysqldump将数据导出
删除数据
写入勒索信
2.1使用工具介绍:
1. Hydra
简介
Hydra 是一款开源的 暴力破解工具,支持多种协议(如 SSH、FTP、MySQL、HTTP 等),用于测试目标系统的弱口令漏洞。
注意:Hydra 仅应用于合法授权的安全测试,未经授权的使用可能违反法律。
核心功能
- 多协议支持:支持 50+ 协议(如 MySQL、RDP、SMTP、Telnet 等)。
- 字典攻击:通过预定义的密码字典进行暴力破解。
- 多线程加速:可并行发起多个请求,提高破解效率。
2. mysql
简介
mysql
是 MySQL 数据库的 命令行客户端工具,用于连接数据库、执行 SQL 命令及管理数据。
核心功能
- 连接数据库:通过用户名、密码和主机信息访问 MySQL 服务器。
- 执行 SQL 语句:支持查询、插入、更新、删除等操作。
- 管理权限:创建用户、分配权限、修改密码等。
3. mysqldump
简介
mysqldump
是 MySQL 自带的 数据备份工具,可将数据库结构和数据导出为 SQL 文件,支持全库、单库或单表备份。
核心功能
- 全量备份:导出整个数据库或所有数据库。
- 部分备份:导出指定表或忽略特定表。
- 压缩备份:结合
gzip
压缩备份文件,节省存储空间。
3.漏洞详情
1.漏洞名称
mysql弱口令
2.漏洞类型
弱口令
3.漏洞描述
MySQL弱口令漏洞是指由于数据库账户的密码设置过于简单或使用默认密码如(密码长度过短(如少于8位)或仅包含单一字符类型,使用常见组合),导致攻击者可通过暴力破解或猜测密码的方式非法访问数据库的安全风险。
4.应急响应排查
如果怀疑机器通过MySQL爆破,可以通过查询mysql日志来进行排查。
MySQL 日志是排查问题的重要依据,主要包括:
1. 错误日志(Error Log)
记录 MySQL 启动、运行和停止时的错误信息。
- 位置:通常位于
/var/log/mysql/error.log
或通过以下命令查看:
SHOW VARIABLES LIKE 'log_error';
- 排查内容:检查是否有异常登录、权限错误或 SQL 注入痕迹。
2. 通用查询日志(General Query Log)
记录所有 SQL 查询语句。
SET GLOBAL general_log = 'ON';
SET GLOBAL log_output = 'FILE';
- 位置:通常位于
/var/log/mysql/mysql.log
或通过以下命令查看:
SHOW VARIABLES LIKE 'general_log_file';
- 排查内容:检查是否有异常查询(如
DROP
、DELETE
、UPDATE
)。
3. 慢查询日志(Slow Query Log)
记录执行时间超过指定阈值的查询。
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
- 位置:通常位于
/var/log/mysql/mysql-slow.log
或通过以下命令查看:
SHOW VARIABLES LIKE 'slow_query_log_file';
- 排查内容:检查是否有异常慢查询或资源消耗过高的操作。
4. 二进制日志(Binary Log)
记录所有数据更改操作(如 INSERT
、UPDATE
、DELETE
)。
SET GLOBAL log_bin = 'ON';
- 位置:通常位于
/var/log/mysql/
或通过以下命令查看:
SHOW VARIABLES LIKE 'log_bin';
- 检查用户和权限
SELECT user, host FROM mysql.user;
- 检查数据库状态
SHOW PROCESSLIST;
5.防范措施
1.密码要求
- 长度:至少 12 个字符。
- 组成:混合大小写字母、数字和特殊符号(如
!@#$%^&*
)。
- 禁止常见弱密码:如
123456
、password
、root
等。
- 强制用户每 90 天更换一次密码。
- 禁止重复使用最近 5 次的历史密码。
- 修改 MySQL 配置(
my.cnf
或 my.ini
)启用密码校验插件:
[mysqld]
plugin-load-add=validate_password.so
validate_password_policy=STRONG
validate_password_length=12
validate_password_mixed_case_count=1
validate_password_number_count=1
validate_password_special_char_count=1
2. 账户要求
DROP USER ''@'localhost';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');
FLUSH PRIVILEGES;
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE ON app_db.* TO 'app_user'@'192.168.1.%';
3.修改默认端口
- 将 MySQL 默认端口
3306
改为非标准端口(如 33706
):
[mysqld]
port=33706
- 禁止 MySQL 直接暴露在公网,通过 VPN 或跳板机访问。
4.启用 SSL/TLS 加密
[mysqld]
ssl-ca=/etc/mysql/ca.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
require_secure_transport=ON
- 禁用
mysql_old_password
(旧版身份验证) 插件,仅允许 caching_sha2_password
:
[mysqld]
default_authentication_plugin=caching_sha2_password
5.启用详细日志
- 错误日志:记录所有登录失败事件。
- 通用查询日志:监控异常 SQL 操作:
SET GLOBAL general_log = 'ON';
6.定期备份备份
- 备份策略:每日全量备份 + 二进制日志增量备份。
- 恢复测试:定期测试备份文件恢复流程。