RupeshGhimire77/honeygrid
GitHub: RupeshGhimire77/honeygrid
一款集成 SSH/HTTP/FTP 三种伪造服务的多协议蜜罐,内置 MITRE ATT&CK 映射的规则检测引擎和实时攻击可视化仪表板,用于捕获、分析和展示攻击者行为。
Stars: 0 | Forks: 0
# Honeygrid
[](https://github.com/RupeshGhimire77/honeygrid/actions/workflows/ci.yml)
[](LICENSE)
**一个具有基于规则的检测引擎和实时攻击仪表板的多服务蜜罐。**
Honeygrid 运行三个伪造服务 — **SSH, HTTP, 和 FTP** — 并记录攻击者所做的一切。检测引擎监控事件流,触发标记有 [MITRE ATT&CK](https://attack.mitre.org/) 技术 ID 的警报,并且实时仪表板可以展示正在发生的攻击流:暴力破解、SQL 注入、目录遍历、数据外泄、后渗透 shell 命令。
它的构建就是为了**被攻击**。运行模拟器(或使用 `ssh`、`curl` 或 `nmap` 亲自攻击它),看着反馈面板亮起 — 然后导出一份 Markdown 事件报告。
## 功能
- **三个模拟服务** — 伪造的 SSH shell(通过 `paramiko`)、伪造的 web 应用(标准库 `http.server`)、伪造的 FTP(通过 `pyftpdlib`)。
- **检测即代码** — 一个声明式规则引擎:9 条规则,每个警报都映射到一个 MITRE ATT&CK 技术。
- **实时仪表板** — 通过 Server-Sent Events 获取实时流、基于严重程度的颜色编码警报、热门攻击者、源国家/地区图表、地理位置攻击地图以及完整的 **SSH 会话重放**。
- **原始 JSONL 遥测数据** — 每个事件都以每条记录一行 JSON 的形式持久化存储,可由任何工具进行 grep。
- **即时演示** — `simulate_attack.py` 运行逼真的攻击活动;`report.py` 导出 Markdown 事件报告。
- **测试 + CI** — pytest 测试套件以及在 Python 3.10–3.12 上运行的 GitHub Actions 工作流。
## 架构
```
┌──────────────────────────────────────────┐
│ Honeypot services (threaded) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
attacker ────────────▶│ │ SSH │ │ HTTP │ │ FTP │ │
│ │ 2222 │ │ 8080 │ │ 2121 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└──────────────┬───────────────────────────┘
│ EventBus (thread-safe)
┌─────────────────────────┼─────────────────────────┐
│ │ │
┌───────▼──────┐ ┌───────▼────────┐ ┌───────▼────────┐
│ JSONL log │ │ Detection │ │ LiveHub │
│ events.jsonl│ │ Engine (rules)│ │ (geo + SSE) │
└──────────────┘ └───────┬────────┘ └───────┬────────┘
│ alerts (same bus) │
▼ ▼
┌──────────────┐ ┌──────────────────┐
│ MITRE-mapped │ │ Web dashboard │
│ alerts │ │ /stream (SSE) │
└──────────────┘ └──────────────────┘
```
所有组件都通过单一的 `EventBus` 解耦:服务发出事件,而日志记录器、检测引擎和仪表板中心独立订阅。没有任何服务知道关于警报或显示的任何信息。
## 快速开始
### 选项 A — Docker
```
docker compose up --build
```
### 选项 B — 本地(Python 3.10+)
```
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
python scripts/run_honeypot.py
```
无论选择哪种方式,您都将获得:
| 服务 | 位置 |
|---|---|
| SSH 蜜罐 | `localhost:2222` |
| HTTP 蜜罐 | `localhost:8080` |
| FTP 蜜罐 | `localhost:2121` |
| **仪表板** | http://localhost:5000 |
## 攻击它
蜜罐会“接受”一组特定的密码,并将成功登录的用户引入一个伪造的 shell。默认密码:`Summer2024`, `password`, `123456`。
```
# 查看 dashboard,然后:
ssh -p 2222 root@127.0.0.1 # try Summer2024 → you're "in"
curl http://127.0.0.1:8080/../../etc/passwd
curl -X POST http://127.0.0.1:8080/upload
# 或者运行完整的模拟 campaign(推荐):
python scripts/simulate_attack.py
```
`simulate_attack.py` 扮演了四种攻击者角色 — 一次 nmap 式的端口扫描、一次 Hydra 式最终成功并探索 shell 的 SSH 暴力破解、一个 Web 应用攻击者(SQLi、目录遍历、Webshell、凭证填充、数据外泄)以及 FTP 暴力破解。所有规则均被触发。
## 检测规则
| 规则 | 捕获内容 | 严重程度 | MITRE |
|---|---|---|---|
| SSH 暴力破解 | 来自单一 IP 的大于 N 次的 SSH 登录失败 | high | T1110 |
| 反复认证失败 | 跨任意服务的登录垃圾信息 | low | T1110 |
| 端口扫描 | 单一 IP 扫描所有暴露端口 | medium | T1046 |
| HTTP 凭证填充 | 来自单一 IP 的大量登录 POST 请求 | medium | T1110 |
| 目录遍历 | 路径中的 `../`(明文或编码) | medium | T1190 |
| SQL 注入 | URL/请求体中的 SQLi 特征 | high | T1190 |
| Webshell / RCE | `cmd.exe`, `powershell`, `whoami`… | medium | T1505.003 |
| 可疑 shell 命令 | `cat /etc/shadow`, `rm -rf`, `wget | bash`, `useradd`… | varies | varies |
| 数据外泄 | 向 `/upload` endpoint 发送 POST 请求 | high | T1567 |
规则是声明式的 — 阈值和特征列表位于 [`honeygrid/config.py`](honeygrid/config.py) 中,可针对不同部署进行调整。
## 事件报告
遥测数据存储在 `logs/events.jsonl` 中(每行一个 JSON 对象)。生成一份 Markdown 摘要 — 包含 MITRE 覆盖范围、按严重程度分组的警报、热门攻击者以及原始时间线:
```
python report.py # → reports/attack-report.md
```
## 项目结构
```
honeygrid/
├── honeygrid/ # main package
│ ├── config.py # ports, thresholds, signature lists, accepted passwords
│ ├── events.py # Event, EventBus, JSONL persistence
│ ├── sessions.py # SSH session store (for replay)
│ ├── geoip.py # geolocation enrichment (cached, offline-safe)
│ ├── detection/
│ │ ├── rules.py # rule engine + 9 rules
│ │ └── mitre.py # ATT&CK technique table
│ ├── services/
│ │ ├── ssh_server.py # paramiko fake shell
│ │ ├── http_server.py # fake web app
│ │ └── ftp_server.py # pyftpdlib fake FTP
│ └── dashboard/
│ ├── app.py # Flask + SSE
│ ├── templates/index.html
│ └── static/ # app.js, style.css
├── scripts/
│ ├── run_honeypot.py # start everything
│ └── simulate_attack.py # demo attack campaign
├── report.py # Markdown incident report
├── tests/ # pytest suite
└── Dockerfile, docker-compose.yml, .github/workflows/ci.yml
```
## 项目状态 / 路线图
- [x] 包含完整事件捕获的 SSH、HTTP、FTP 蜜罐
- [x] 带有 MITRE 映射的检测引擎
- [x] 实时仪表板(信息流、警报、地图、会话重放)
- [x] 攻击模拟器 + 事件报告导出器
- [ ] 本 README 中的截图(从实际运行中捕获)
- [ ] 用于检测引擎的 Sigma 规则导入
- [ ] Docker 化的单文件部署(发布镜像)
- [ ] 安全部署到公共 IP 的指南(VM + 防火墙规则)
## 负责任的使用
Honeygrid 是一款用于学习和研究的**防御性**安全工具:
- 它会记录其自身攻击者输入的凭证和命令。请勿将其指向您无法控制的任何目标。
- 将蜜罐部署到公共互联网会吸引真实的攻击者 — 仅在隔离的、您可以承受丢失的 VM 上执行此操作,并置于防火墙之后,绝不要在生产基础设施上进行。关于此操作的实验室指南已列入路线图。
- 被接受的密码在设计上很弱,并会打印到控制台。在任何实际部署中更改它们(`HONEYGRID_ACCEPTED_PASSWORDS`)。
## 许可证
[MIT](LICENSE) © Rupesh Ghimire
标签:AMSI绕过, CISA项目, Python, 威胁检测, 无后门, 网络安全审计, 网络攻防, 蓝队, 蜜罐, 证书利用, 请求拦截, 逆向工具