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; #开启
尝试读取本地C盘Windows目录下的win.ini
load data local infile 'C:/Windows/win.ini' into table test fields terminated by '\n';
5. MySQL读取文件过程流量分析
Wireshak抓包可以看到正常的执行流程如下:
- Client向Server发起Load data local infile请求
- Server返回需要读取的文件路径
- Client读取文件内容并发送给Server
PS:在本机上启动服务端与客户端,启动wireshark 抓包,要选择回环接口:Adapter for lookback traffic capture ,如果选择本地连接,会抓不到流量包。
1)Greeting包返回了服务端的版本等信息
2)使用navicat客户端连接服务端,客户端发起登录请求
3)然后看到一个Request Query包,客户端发送请求:set names utf8mb4
从MySQL5.5开始,可以支持4个字节utf8mb4,utf8mb4兼容utf8,且支持更多的字符。
4)客户端连接MySQL服务端后,向服务端发起查询请求
5)服务端返回一个Response TABULAR,指定读取的文件路径
6)客户端读取文件内容并发送给服务端
从上面交互过程可以看出,在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蜜罐
dicc.txt文件路径列表(测试机中文件路径)
使用navicat工具连接MySQL
成功读取到PFRO.log和config.data文件内容
打开Mysqlist-master\log\192.168.1.50\C__Windows_PFRO.log文件,读取用户名Administrator
打开Mysqlist-master\log\192.168.1.50\D__Documents_WeChat Files_All Users_config_config.data文件,获取微信id号
根据上面得到的accinfo.dat文件路径,重复上述步骤读取D:/Documents/WeChat Files/wxid_7xxxxxxx/config/AccInfo.dat,进而获取到手机号、微信号
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的不同攻击者信息如何区分