odytr/mirage
GitHub: odytr/mirage
Mirage 是一个自托管蜜罐情报平台,通过多协议蜜罐捕获攻击行为,结合 ELK、威胁情报富化和 LLM 分析,将原始攻击数据转化为可读的威胁故事。
Stars: 0 | Forks: 0
# Mirage
Mirage 是一个自托管的蜜罐情报平台。它向互联网暴露了一组蜜罐,将攻击者的一切行为发送到 ELK pipeline 中,利用威胁情报源对每个攻击者 IP 进行富化,对活动运行 AI 分析,并在实时 Web 门户中展示全局情况。
我构建它是为了回答一个简单的问题:到底是谁在访问暴露的服务器?他们想要做什么?最终形成了一套从原始数据包到可读威胁故事的完整 pipeline。
## 功能
* 运行 Cowrie (SSH/Telnet)、Dionaea (恶意软件捕获)、Honeyd (伪装主机) 以及一个记录所有凭据和探测的诱饵 VPN 登录页面。
* 使用 Zeek 捕获网络流量,并在其上运行 Suricata 作为 IDS。
* 通过 Logstash 将所有日志格式标准化为统一的 schema,并将其存储在 Elasticsearch 中。
* 使用 VirusTotal、AbuseIPDB、Shodan、OTX、GreyNoise、IPInfo、MalwareBazaar 和 MetaDefender 对每个攻击者 IP 进行评分,并通过本地 YARA 规则运行捕获的二进制文件。
* 使用 LLM (Groq LLaMA 3.3,并以 Gemini 作为备选) 来编写基于 IP 的威胁叙述,将攻击分组为攻击活动,生成 Sigma 规则,并发布每日摘要。
* 提供一个 Vue 门户,包含仪表盘、实时攻击地图、会话重放、PCAP 下载、恶意软件分析、攻击活动聚类,以及一个可以推送到主机防火墙的 blocklist。
## 架构
```
flowchart TD
net["Attackers / Internet"] --> hp["Honeypots
Cowrie, Dionaea, Honeyd, Decoy VPN"] net --> cap["Zeek + Suricata
packet capture and IDS"] hp --> pipe["Filebeat to Logstash to Elasticsearch"] cap --> pipe pipe --> enr["Enrichment
8 threat-intel APIs + YARA"] enr --> ai["AI Engine
Groq / Gemini"] pipe --> portal["Portal
FastAPI + Vue 3"] enr --> portal ai --> portal portal --> caddy["Caddy
automatic HTTPS"] ``` 所有程序均作为 Docker 容器运行,并分布在三个隔离的网络中,因此蜜罐永远无法直接访问数据层或管理层。 ## 环境要求 * Ubuntu Server 22.04 或 24.04 * Docker Engine 26+ 及 Compose 插件 * 体验功能需 4 个 vCPU 和 8 GB RAM,实际使用需 6 个 vCPU 和 12 GB RAM * 主机上空闲的蜜罐端口:21, 22, 23, 80, 443, 445, 3306, 5060 由于 Cowrie 会占用端口 22,请在启动前将您真实的 SSH 服务转移到其他端口。 ## 运行说明 **1. 获取代码并设置您的环境文件。** ``` git clone https://github.com/odytr/mirage.git cd mirage cp .env.example .env ``` 打开 `.env` 并设置密码、`JWT_SECRET` 和 `FIREWALL_AGENT_TOKEN`。您可以使用 `openssl rand -hex 32` 生成密钥。威胁情报的 API 密钥都是可选的,因此您可以将其留空,以后再添加。对于本地运行,请保留 `DOMAIN=localhost`。 **2. 准备蜜罐数据卷。** ``` docker run --rm \ -v mirage-cowrie-logs:/cowrie/var/log/cowrie \ -v mirage-cowrie-ttylogs:/cowrie/var/lib/cowrie/ttylogs \ -v mirage-cowrie-downloads:/cowrie/var/lib/cowrie/downloads \ -v mirage-cowrie-ssh-keys:/cowrie/var/lib/cowrie \ cowrie/cowrie:latest sh -c "chown -R 999:999 /cowrie/var" docker run --rm \ -v mirage_dionaea-binaries:/opt/dionaea/var/lib/dionaea \ dinotools/dionaea:latest sh -c "cd /opt/dionaea && cp -van template/lib var/" ``` **3. 启动蜜罐和 ELK stack。** ``` docker compose build honeyd docker compose up -d ``` Elasticsearch 需要一两分钟才能启动。其他所有服务都会等待它就绪。 **4. 应用 Elasticsearch 模板。** ``` docker exec mirage-elasticsearch bash /opt/setup/setup_kibana.sh ``` **5. 启动情报层和门户。** ``` docker compose --profile intelligence up -d ``` 大功告成。使用 `docker compose ps` 检查容器状态,并在 `http://localhost:8080` 打开门户。使用您的 `.env` 文件中的管理员用户名和密码登录。Kibana 位于 `http://localhost:5601`。 想马上查看数据?运行 `bash scripts/attack.sh` 向蜜罐发起一些逼真的流量并填充门户。 若要使用公共 HTTPS,请将 `DOMAIN` 设置为您拥有的域名,并将其 DNS 指向该服务器。Caddy 会自动申请证书。 ## 配置说明 所有设置都位于 `.env` 中。复制 `.env.example`,其中记录了每个值,并标明了哪些是必填项,哪些是选填项。切勿提交您真实的 `.env` 文件,它已被添加到 gitignore 中。 ## 常用命令 ``` make up # start the full stack make logs SERVICE=cowrie # tail one service make rebuild SERVICE=portal-backend # rebuild and restart one service make monitoring # add Prometheus and Grafana docker compose ps # container status docker compose down # stop, keep data ``` ## 项目布局 ``` cowrie/ SSH and Telnet honeypot dionaea/ malware capture honeypot honeyd/ virtual host honeypot decoy/ fake VPN login page zeek/ network capture scripts suricata/ IDS ruleset and config elastic/ Elasticsearch, Logstash, Filebeat, Kibana configs enrichment/ IP enrichment service and YARA rules ai-engine/ LLM analysis, Sigma rules, daily reports portal/ FastAPI backend and Vue 3 frontend caddy/ HTTPS reverse proxy firewall-agent/ host iptables sidecar monitoring/ Prometheus and Grafana scripts/ demo traffic and helper scripts ```
Cowrie, Dionaea, Honeyd, Decoy VPN"] net --> cap["Zeek + Suricata
packet capture and IDS"] hp --> pipe["Filebeat to Logstash to Elasticsearch"] cap --> pipe pipe --> enr["Enrichment
8 threat-intel APIs + YARA"] enr --> ai["AI Engine
Groq / Gemini"] pipe --> portal["Portal
FastAPI + Vue 3"] enr --> portal ai --> portal portal --> caddy["Caddy
automatic HTTPS"] ``` 所有程序均作为 Docker 容器运行,并分布在三个隔离的网络中,因此蜜罐永远无法直接访问数据层或管理层。 ## 环境要求 * Ubuntu Server 22.04 或 24.04 * Docker Engine 26+ 及 Compose 插件 * 体验功能需 4 个 vCPU 和 8 GB RAM,实际使用需 6 个 vCPU 和 12 GB RAM * 主机上空闲的蜜罐端口:21, 22, 23, 80, 443, 445, 3306, 5060 由于 Cowrie 会占用端口 22,请在启动前将您真实的 SSH 服务转移到其他端口。 ## 运行说明 **1. 获取代码并设置您的环境文件。** ``` git clone https://github.com/odytr/mirage.git cd mirage cp .env.example .env ``` 打开 `.env` 并设置密码、`JWT_SECRET` 和 `FIREWALL_AGENT_TOKEN`。您可以使用 `openssl rand -hex 32` 生成密钥。威胁情报的 API 密钥都是可选的,因此您可以将其留空,以后再添加。对于本地运行,请保留 `DOMAIN=localhost`。 **2. 准备蜜罐数据卷。** ``` docker run --rm \ -v mirage-cowrie-logs:/cowrie/var/log/cowrie \ -v mirage-cowrie-ttylogs:/cowrie/var/lib/cowrie/ttylogs \ -v mirage-cowrie-downloads:/cowrie/var/lib/cowrie/downloads \ -v mirage-cowrie-ssh-keys:/cowrie/var/lib/cowrie \ cowrie/cowrie:latest sh -c "chown -R 999:999 /cowrie/var" docker run --rm \ -v mirage_dionaea-binaries:/opt/dionaea/var/lib/dionaea \ dinotools/dionaea:latest sh -c "cd /opt/dionaea && cp -van template/lib var/" ``` **3. 启动蜜罐和 ELK stack。** ``` docker compose build honeyd docker compose up -d ``` Elasticsearch 需要一两分钟才能启动。其他所有服务都会等待它就绪。 **4. 应用 Elasticsearch 模板。** ``` docker exec mirage-elasticsearch bash /opt/setup/setup_kibana.sh ``` **5. 启动情报层和门户。** ``` docker compose --profile intelligence up -d ``` 大功告成。使用 `docker compose ps` 检查容器状态,并在 `http://localhost:8080` 打开门户。使用您的 `.env` 文件中的管理员用户名和密码登录。Kibana 位于 `http://localhost:5601`。 想马上查看数据?运行 `bash scripts/attack.sh` 向蜜罐发起一些逼真的流量并填充门户。 若要使用公共 HTTPS,请将 `DOMAIN` 设置为您拥有的域名,并将其 DNS 指向该服务器。Caddy 会自动申请证书。 ## 配置说明 所有设置都位于 `.env` 中。复制 `.env.example`,其中记录了每个值,并标明了哪些是必填项,哪些是选填项。切勿提交您真实的 `.env` 文件,它已被添加到 gitignore 中。 ## 常用命令 ``` make up # start the full stack make logs SERVICE=cowrie # tail one service make rebuild SERVICE=portal-backend # rebuild and restart one service make monitoring # add Prometheus and Grafana docker compose ps # container status docker compose down # stop, keep data ``` ## 项目布局 ``` cowrie/ SSH and Telnet honeypot dionaea/ malware capture honeypot honeyd/ virtual host honeypot decoy/ fake VPN login page zeek/ network capture scripts suricata/ IDS ruleset and config elastic/ Elasticsearch, Logstash, Filebeat, Kibana configs enrichment/ IP enrichment service and YARA rules ai-engine/ LLM analysis, Sigma rules, daily reports portal/ FastAPI backend and Vue 3 frontend caddy/ HTTPS reverse proxy firewall-agent/ host iptables sidecar monitoring/ Prometheus and Grafana scripts/ demo traffic and helper scripts ```
标签:Metaprompt, 内容过滤, 威胁情报, 安全大数据, 容器化部署, 开发者工具, 插件系统, 自定义请求头, 蜜罐系统, 请求拦截, 越狱测试, 逆向工具