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连接过程中的关键通信点:

  1. 初始握手阶段

    • 服务端返回版本信息、salt等
    • 客户端发送账号密码信息
    • 服务端返回认证成功响应
  2. 文件读取阶段

    • 认证成功后,服务端可以发送读取文件的payload
    • 文件读取payload格式:chr(len(filename) + 1) + "\x00\x00\x01\xFB" + filename
      • 000001:数据包序号
      • 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服务器的响应:

  1. 使用Wireshark抓取扫描器(如超级弱口令检查工具)与正常MySQL服务器的通信包
  2. 提取扫描器发送的查询请求和服务器响应数据
  3. 在蜜罐中实现这些响应,使扫描器能正确识别"弱口令"

三、扩展利用

除了获取微信ID,还可以获取以下有价值的信息:

  1. Chrome浏览器数据

    • 登录数据:C:/Users/username/AppData/Local/Google/Chrome/User Data/Default/Login Data
      • 虽然密码可能加密,但可获取账号信息
    • 浏览历史:C:/Users/username/AppData/Local/Google/Chrome/User Data/Default/History
  2. NTLM Hash捕获

    • 结合Bettercap + Responder工具
    • 通过SMB共享请求:\\ip\test

四、技术挑战与待解决问题

  1. 同一出口IP的不同攻击者区分

    • 需要设计机制区分来自同一IP的不同攻击会话
  2. 大文件读取处理

    • 客户端会分段传输大文件
    • 需要实现机制来完整接收和重组文件内容
  3. 前端显示优化

    • 当前实现可能存在显示bug,需要改进

五、防御措施

  1. 客户端防护

    • 禁用LOAD DATA LOCAL功能:在连接字符串中添加allowLoadLocalInfile=false
    • 使用最新版本的MySQL客户端,部分版本已修复此问题
  2. 服务器端防护

    • 避免使用弱口令
    • 限制MySQL服务的访问IP
    • 定期更新MySQL版本
  3. 环境隔离

    • 渗透测试环境与日常工作环境完全分离
    • 使用专用设备或虚拟机进行安全测试

六、实现参考

GitHub项目地址:https://github.com/qigpig/MysqlHoneypot

七、总结

MySQL蜜罐技术利用客户端文件读取特性,结合对攻击者行为的深入分析,能够有效获取攻击者的个人信息如微信ID等。这种技术不仅可用于溯源反制,也提醒我们安全测试时需要做好环境隔离和个人信息保护。

MySQL蜜罐获取攻击者微信ID技术详解 一、技术原理 MySQL蜜罐利用的是MySQL客户端/服务器协议中的一个特性: LOAD DATA LOCAL INFILE 语句。该语句原本用于让客户端读取本地文件并加载到服务器表中,但可以被恶意服务器利用来读取客户端上的任意文件。 关键语句: 攻击者可以伪造一个MySQL服务器,当客户端连接时,发送读取文件的payload来获取客户端机器上的敏感文件。 二、技术实现细节 1. MySQL协议分析 MySQL连接过程中的关键通信点: 初始握手阶段 : 服务端返回版本信息、salt等 客户端发送账号密码信息 服务端返回认证成功响应 文件读取阶段 : 认证成功后,服务端可以发送读取文件的payload 文件读取payload格式: chr(len(filename) + 1) + "\x00\x00\x01\xFB" + filename 000001 :数据包序号 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等。这种技术不仅可用于溯源反制,也提醒我们安全测试时需要做好环境隔离和个人信息保护。