1.蜜罐介绍

        蜜罐是对攻击者的欺骗技术,用以监视、检测、分析和溯源攻击行为,其没有业务上的用途,所有流入/流出蜜罐的流量都预示着扫描或者攻击行为,因此可以比较好的聚焦于攻击流量。

        蜜罐可以实现对攻击者的主动诱捕,能够详细地记录攻击者攻击过程中的许多痕迹,可以收集到大量有价值的数据,如病毒或蠕虫的源码、黑客的操作等,从而便于提供丰富的溯源数据。另外蜜罐也可以消耗攻击者的时间,基于JSONP等方式来获取攻击者的画像。

        但是蜜罐存在安全隐患,如果没有做好隔离,可能成为新的攻击源。

2.MySQL蜜罐介绍

        MySQL蜜罐通过搭建一个简单的MySQ服务,如果攻击者对目标进行3306端口爆破,并且用navicat等工具连接MySQL蜜罐服务器,就可能被防守方获取攻击IP、读取本地文件,包括微信配置文件和谷歌历史记录等等,这样很容易被防守方溯源

3.反制思路

        MySQL服务端可以利用 LOAD DATA LOCAL命令来读取MYSQL客户端的任意文件,然后伪造恶意服务器向连接到这个服务器的客户端发送读取文件的payload。

4.MySQL任意文件读取

        MySQL中有个local data local infile函数能够读取本地文件到MySQL数据库中。

        Local data infile语句用于高速地从一个文本中读取行,并写入一个表中。文件名称必须为一个文字字符串。Local data infile是select…into outfile地相对语句。把表的数据被分到文件中使用select…into outfile,从备份文件回复表数据,使用load data infile。

这个功能默认是关闭,查看是否开启:

show global variables like 'local_infile';

set global local_infile=1; #开启

MYSQL反向生成PDM脚本 mysql反制_客户端

尝试读取本地C盘Windows目录下的win.ini

load data local infile 'C:/Windows/win.ini' into table test fields terminated by '\n';

MYSQL反向生成PDM脚本 mysql反制_客户端_02

MYSQL反向生成PDM脚本 mysql反制_MYSQL反向生成PDM脚本_03

5. MySQL读取文件过程流量分析

Wireshak抓包可以看到正常的执行流程如下:

  • Client向Server发起Load data local infile请求
  • Server返回需要读取的文件路径
  • Client读取文件内容并发送给Server

PS:在本机上启动服务端与客户端,启动wireshark 抓包,要选择回环接口:Adapter for lookback traffic capture ,如果选择本地连接,会抓不到流量包。

MYSQL反向生成PDM脚本 mysql反制_客户端_04

1)Greeting包返回了服务端的版本等信息

MYSQL反向生成PDM脚本 mysql反制_安全_05

2)使用navicat客户端连接服务端,客户端发起登录请求

MYSQL反向生成PDM脚本 mysql反制_客户端_06

3)然后看到一个Request Query包,客户端发送请求:set names utf8mb4

从MySQL5.5开始,可以支持4个字节utf8mb4,utf8mb4兼容utf8,且支持更多的字符。

MYSQL反向生成PDM脚本 mysql反制_MySQL_07

4)客户端连接MySQL服务端后,向服务端发起查询请求

MYSQL反向生成PDM脚本 mysql反制_客户端_08

5)服务端返回一个Response TABULAR,指定读取的文件路径

MYSQL反向生成PDM脚本 mysql反制_安全_09

6)客户端读取文件内容并发送给服务端

MYSQL反向生成PDM脚本 mysql反制_客户端_10

        从上面交互过程可以看出,在Client向Server发起查询后,Server会返回一个Response TABULAR的响应包。而如果在这个数据包中指定文件路径,就可以读取Client相应的文件。实际上Server可以在回复任何Client端的请求时返回Response TABULAR响应包,而不仅仅是在Client发起Load data local infile后。

6.应用场景

        攻击者在对目标网站进行攻击时,通常会发现网站的一些漏洞,我们这里使用蜜罐技术,故意暴露我们的MySQL数据库,将数据库设置弱口令,让攻击者可以爆破出账号密码,使用工具进行连接。攻击者在使用navicat连接我们的数据库时成功后,我们可以执行代码,利用MySQL读取文件获取到攻击者的手机号、微信号、地址等信息。

7.MySQL蜜罐反制利用

读取手机号和微信ID的方法(默认常见微信文件路径):

  • 通过C:/Windows/PFRO.log获取windows用户名
  • 通过C:/Users/用户名/Documents/WeChat Files/All Users/config/config.data获取wxid
  • 通过C:/Users/用户名/Documents/WeChat Files/wx_id/config/AccInfo.dat获取微信号、手机号

MySQL蜜罐下载地址:https://github.com/ev0A/Mysqlist

MYSQL反向生成PDM脚本 mysql反制_客户端_11

启动MySQL蜜罐

MYSQL反向生成PDM脚本 mysql反制_MYSQL反向生成PDM脚本_12

dicc.txt文件路径列表(测试机中文件路径)

MYSQL反向生成PDM脚本 mysql反制_MySQL_13

使用navicat工具连接MySQL

MYSQL反向生成PDM脚本 mysql反制_客户端_14

 

成功读取到PFRO.log和config.data文件内容

MYSQL反向生成PDM脚本 mysql反制_客户端_15

MYSQL反向生成PDM脚本 mysql反制_MYSQL反向生成PDM脚本_16

打开Mysqlist-master\log\192.168.1.50\C__Windows_PFRO.log文件,读取用户名Administrator

MYSQL反向生成PDM脚本 mysql反制_安全_17

打开Mysqlist-master\log\192.168.1.50\D__Documents_WeChat Files_All Users_config_config.data文件,获取微信id号

MYSQL反向生成PDM脚本 mysql反制_安全_18

根据上面得到的accinfo.dat文件路径,重复上述步骤读取D:/Documents/WeChat Files/wxid_7xxxxxxx/config/AccInfo.dat,进而获取到手机号、微信号

MYSQL反向生成PDM脚本 mysql反制_服务端_19

8.思考

除了获取微信ID,还可以读取chrome的账号、历史记录等信息

1)chrome的login data,虽然无法解密出密码,但是还是可以获取到对方的一些账号的

    'C:/Users/' + username + '/AppData/Local/Google/Chrome/User Data/Default/Login Data'

2)chrome的历史记录

    'C:/Users/' + username + '/AppData/Local/Google/Chrome/User Data/Default/History'

3)使用同一出口IP的不同攻击者信息如何区分