RupeshGhimire77/honeygrid

GitHub: RupeshGhimire77/honeygrid

一款集成 SSH/HTTP/FTP 三种伪造服务的多协议蜜罐,内置 MITRE ATT&CK 映射的规则检测引擎和实时攻击可视化仪表板,用于捕获、分析和展示攻击者行为。

Stars: 0 | Forks: 0

# Honeygrid [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/RupeshGhimire77/honeygrid/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](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, 威胁检测, 无后门, 网络安全审计, 网络攻防, 蓝队, 蜜罐, 证书利用, 请求拦截, 逆向工具