多协议蜜罐初体验 🐝
目标:快速搭建多协议蜜罐,记录攻击行为,入门蜜罐实践
🎯 实验目标
- 搭建 TCP / HTTP / HTTPS / SSH / Telnet / FTP 的低交互蜜罐
- 捕获和记录攻击输入
- 了解异步架构 asyncio 的多协议处理方式
- 学习 JSONL 格式日志记录与分析
🛠 环境准备
- Python 3.11+ 🐍
- 系统:Linux / Windows / macOS
- 端口:非特权端口(避免 root)
bash
python multi_protocol_honeypot.py --host 0.0.0.0 --log honeypot_sessions.jsonl --generate-cert
⚠️
--generate-cert
用于 HTTPS 自签名证书
📡 测试示例
TCP 测试
bash
nc 127.0.0.1 9000
# 输入任意文本,观察回显 🔁
Telnet 测试
bash
telnet 127.0.0.1 2323
# 登录 mini-shell,输入 whoami / exit
FTP 测试
bash
ftp 127.0.0.1 2121
# USER test
# PASS 1234
# LIST / RETR filename
# QUIT
📄 日志示例
json
{
"session_id": "3f6e0d4a-1234-5678-9abc-abcdef123456",
"protocol": "telnet",
"remote_ip": "127.0.0.1",
"remote_port": 50232,
"login": "test",
"password": "<captured>",
"inputs": [
{"ts": "2025-09-26T12:00:01+00:00", "input": "whoami"},
{"ts": "2025-09-26T12:00:05+00:00", "input": "exit"}
],
"raw_base64": "dGVzdF9sb2dpbgpwd2QK..."
}
✅ 每条会话包含:协议类型、远端 IP、输入记录、原始数据
📊 日志解析示例
python
import json
with open("honeypot_sessions.jsonl") as f:
for line in f:
entry = json.loads(line)
if entry["protocol"] == "telnet":
print(entry["remote_ip"], entry["login"], len(entry["inputs"]))
- 可以统计攻击来源 IP 🌍
- 分析常用命令和密码尝试 🔑
🔚 总结
- 低交互蜜罐易于部署
- JSONL 格式便于批量分析
- 适合入门攻击行为记录和日志分析