MySQL蜜罐获取攻击者微信ID
字数 1531 2025-08-15 21:31:52
MySQL蜜罐获取攻击者微信ID技术详解
一、技术原理
MySQL蜜罐利用的是MySQL客户端/服务器协议中的一个特性:LOAD DATA LOCAL INFILE语句。该语句原本用于让客户端读取本地文件并加载到服务器表中,但可以被恶意服务器利用来读取客户端上的任意文件。
关键语句:
LOAD DATA LOCAL INFILE '/etc/passwd' INTO TABLE test FIELDS TERMINATED BY '\n';
攻击者可以伪造一个MySQL服务器,当客户端连接时,发送读取文件的payload来获取客户端机器上的敏感文件。
二、技术实现细节
1. MySQL协议分析
MySQL连接过程中的关键通信点:
-
初始握手阶段:
- 服务端返回版本信息、salt等
- 客户端发送账号密码信息
- 服务端返回认证成功响应
-
文件读取阶段:
- 认证成功后,服务端可以发送读取文件的payload
- 文件读取payload格式:
chr(len(filename) + 1) + "\x00\x00\x01\xFB" + filename000001:数据包序号FB:包类型- 前面的
14:文件名长度(从FB开始,16进制)
2. 目标文件定位
微信ID获取方法:
- 微信默认配置文件路径:
C:\Users\username\Documents\WeChat Files\ - 微信ID存储位置:
C:\Users\username\Documents\WeChat Files\All Users\config\config.data
用户名获取方法:
- 通过读取
C:\Windows\PFRO.log文件,有很大几率能找到用户名
3. 蜜罐伪装技术
为了使蜜罐对扫描器有效,需要模拟真实MySQL服务器的响应:
- 使用Wireshark抓取扫描器(如超级弱口令检查工具)与正常MySQL服务器的通信包
- 提取扫描器发送的查询请求和服务器响应数据
- 在蜜罐中实现这些响应,使扫描器能正确识别"弱口令"
三、扩展利用
除了获取微信ID,还可以获取以下有价值的信息:
-
Chrome浏览器数据:
- 登录数据:
C:/Users/username/AppData/Local/Google/Chrome/User Data/Default/Login Data- 虽然密码可能加密,但可获取账号信息
- 浏览历史:
C:/Users/username/AppData/Local/Google/Chrome/User Data/Default/History
- 登录数据:
-
NTLM Hash捕获:
- 结合Bettercap + Responder工具
- 通过SMB共享请求:
\\ip\test
四、技术挑战与待解决问题
-
同一出口IP的不同攻击者区分:
- 需要设计机制区分来自同一IP的不同攻击会话
-
大文件读取处理:
- 客户端会分段传输大文件
- 需要实现机制来完整接收和重组文件内容
-
前端显示优化:
- 当前实现可能存在显示bug,需要改进
五、防御措施
-
客户端防护:
- 禁用
LOAD DATA LOCAL功能:在连接字符串中添加allowLoadLocalInfile=false - 使用最新版本的MySQL客户端,部分版本已修复此问题
- 禁用
-
服务器端防护:
- 避免使用弱口令
- 限制MySQL服务的访问IP
- 定期更新MySQL版本
-
环境隔离:
- 渗透测试环境与日常工作环境完全分离
- 使用专用设备或虚拟机进行安全测试
六、实现参考
GitHub项目地址:https://github.com/qigpig/MysqlHoneypot
七、总结
MySQL蜜罐技术利用客户端文件读取特性,结合对攻击者行为的深入分析,能够有效获取攻击者的个人信息如微信ID等。这种技术不仅可用于溯源反制,也提醒我们安全测试时需要做好环境隔离和个人信息保护。