B0bTheSkull/bluestack
GitHub: B0bTheSkull/bluestack
一个预配置的 ELK SIEM 容器化方案,专为 B0bTheSkull 蓝队工具集提供一键式日志聚合、MITRE ATT&CK 标签富化和 Kibana 可视化能力。
Stars: 0 | Forks: 0
# BlueStack — 开箱即用的 SIEM
一个预先配置好的 ELK stack(Elasticsearch + Logstash + Kibana),用于接收 [B0bTheSkull](https://github.com/B0bTheSkull) 蓝队工具集中其他工具的 JSON 输出,并通过一次 `docker compose up` 将其转化为可搜索的、带有仪表盘的检测结果。
```
┌─────────────┐ JSON ┌──────────────┐
LogHound ──→ │ Logstash │ over TCP │ Elasticsearch│
NetSentinel ──→ │ pipelines │ ────────────→ │ (single │
HoneyNet ──→ │ (one per │ │ node) │
ThreatPulse ──→ │ source) │ └──────┬───────┘
└─────────────┘ │
▼
┌──────────┐
│ Kibana │ ← you
└──────────┘
```
**你将获得:**
- 单节点 Elasticsearch 集群,大小适合笔记本电脑(默认 1 GB 堆内存)
- 四条 Logstash 管道,每个来源工具对应一条,具备 grok/JSON 解析、严重级别标准化以及**内置 MITRE ATT&CK 标签**
- 共享的索引模板,确保跨源仪表盘具有正确的字段类型(IP 为 `ip`,时间戳为 `date`,严重级别为 `keyword`)
- 自动创建的 Kibana 数据视图,方便你打开 Discover 立即进行查询
- 示例数据文件,让你可以在 60 秒内验证整个系统
- 仅限本地回环的端口绑定——默认情况下,此堆栈不会向局域网 (LAN) 暴露任何内容
**它不是什么:**
- 这是一个实验室/作品集工具包,而不是经过加固的生产级 SIEM。身份验证已禁用,TLS 已关闭。在将其暴露于任何你关心的环境之前,请参阅 [`docs/HARDENING.md`](docs/HARDENING.md)。
## 快速开始
```
git clone https://github.com/B0bTheSkull/bluestack
cd bluestack
cp .env.example .env # tune ports/heap if you need to
./scripts/setup.sh # bring stack up + install templates + create data views
./scripts/send-sample-data.sh # ship the bundled sample payloads through Logstash
open http://localhost:5601 # Kibana → Discover → bluestack-*
```
你应该会在 4 个索引(`bluestack-loghound-*`、`bluestack-netsentinel-*`、`bluestack-honeynet-*`、`bluestack-threatpulse-*`)中看到大约 16 个事件。
## 接入端口
每个源工具都有自己专属的 Logstash 管道和 TCP 端口,这样一个流中的解析错误就不会阻塞其他流。
| 源工具 | 端口 | 格式 | 索引模式 |
|---|---|---|---|
| LogHound | 5001 | 包装的 JSON 报告 | `bluestack-loghound-*` |
| NetSentinel | 5002 | 换行符分隔的 JSON | `bluestack-netsentinel-*` |
| HoneyNet | 5003 | 换行符分隔的 JSON | `bluestack-honeynet-*` |
| ThreatPulse | 5004 | 换行符分隔的 JSON | `bluestack-threatpulse-*` |
### 连接真实的工具输出
```
# LogHound — 单个封装报告
loghound auth /var/log/auth.log --output /tmp/loghound.json
nc -q1 localhost 5001 < /tmp/loghound.json
# NetSentinel — 实时跟踪日志
tail -F /var/log/netsentinel.json | nc -q1 localhost 5002
# HoneyNet — 实时跟踪日志
tail -F logs/honeynet.json | nc -q1 localhost 5003
# ThreatPulse — 批量管道查询
threatpulse-bulk --iocs ioc-list.txt --json | nc -q1 localhost 5004
```
为了实现接近生产环境的用法,请在 JSON 文件前放置一个 Filebeat sidecar,而不是使用 `tail | nc`。[`filebeat/`](filebeat/) 中提供了一个 Filebeat `inputs.d` 示例。
## 管道的作用
每个管道不仅仅是进行简单的 JSON 盲转——它们会丰富每个事件,以便仪表盘可以跨数据源进行数据透视:
- **严重级别标准化**——每个数据源都会发出 `severity`;管道将其转换为大写并统一为 `CRITICAL/HIGH/MEDIUM/LOW/INFO`。
- **`source_tool` 标记**——每个文档都带有 `source_tool: loghound | netsentinel | honeynet | threatpulse`,这样单个 Kibana 视图就可以按来源进行拆分或过滤。
- **MITRE ATT&CK 富化**——已知的事件类型被映射到技术 ID:
- NetSentinel `port_scan` → `T1046`
- NetSentinel `arp_spoof` → `T1557.002`
- NetSentinel `dns_tunnel` → `T1041`
- HoneyNet `credential_attempt` → `T1110`
- HoneyNet `command_executed` → `T1059`
- LogHound 直接透传其自身的 `mitre_technique`。
- **ECS 对齐的别名**——`source.ip`、`destination.address`、`mitre.technique_id`、`mitre.tactic`,以确保跨源仪表盘正常工作。
- **LogHound 数据扁平化**——LogHound 输出包含 `findings[]` 数组的包装报告;管道会将其拆分,使每条发现都成为独立的文档。
完整的 ATT&CK 覆盖表位于 [`docs/ATTACK-COVERAGE.md`](docs/ATTACK-COVERAGE.md)。
## 仓库布局
```
bluestack/
├── docker-compose.yml # ES + Kibana + Logstash, single network
├── .env.example # ports + heap sizing
├── elasticsearch/config/ # single-node lab config
├── kibana/config/ # publicBaseUrl, telemetry off
├── kibana/dashboards/ # exported saved objects (your handcrafted dashboards go here)
├── logstash/
│ ├── config/ # logstash.yml + pipelines.yml (one pipeline per source)
│ └── pipeline/ # the four source pipelines
├── filebeat/ # optional sidecar for tail-style ingestion
├── scripts/
│ ├── setup.sh # idempotent stand-up: compose up, install templates, create data views
│ ├── send-sample-data.sh # smoke-test the pipelines
│ └── index-template.json # field-type mappings for bluestack-*
├── examples/ # one sample payload per source tool
└── docs/
├── ATTACK-COVERAGE.md
└── HARDENING.md
```
## 构建仪表盘
安装脚本会创建 Kibana 数据视图(`bluestack`、`bluestack-loghound` 等),但*不会*提供预制仪表盘。在 Kibana 中构建你自己的仪表盘,然后将其导出:
```
# 在 Kibana 中:Stack Management → Saved Objects → 选择 dashboards → Export。
# 将生成的 ndjson 保存在此处:
mv ~/Downloads/export.ndjson kibana/dashboards/bluestack-saved-objects.ndjson
```
重新运行 `./scripts/setup.sh` 将会获取该文件,并在每次全新启动时重新导入它。
建议的仪表盘(我最先构建的部分):
- **概览**——按 `source_tool` 统计的事件计数、严重级别分布、排名靠前的源 IP。
- **MITRE ATT&CK 热力图**——`mitre.tactic` × `mitre.technique_id`,以及每个单元格的计数。
- **HoneyNet 攻击者时间线**——按 IP 划分的时间线,包含凭据尝试、命令执行、协同扫描标记。
- **NetSentinel 网络异常**——按 `event_type` 拆分,带有源/目标 IP 字段。
- **LogHound 身份验证发现**——聚焦于 `severity:CRITICAL OR HIGH`,按暴力破解升级的 `count` 排序。
## 卸载拆除
```
docker compose down # keep data
docker compose down -v # nuke the Elasticsearch volume too
```
## 路线图
- 导出为版本稳定保存对象的预构建 Kibana 仪表盘
- 带有为这四个工具配置好 `inputs.d` 的 Filebeat sidecar
- Wazuh 风格的变体(compose profile),适合想要在 JSON 管道之外使用 HIDS + 基于代理的收集功能的用户
- 检测规则包——覆盖高信号场景(多次 SSH 失败后成功、DNS 隧道、ARP 缓存投毒)的 Elastic detection-engine 规则(`siem.rules`)
- 告警输出——Logstash 针对 `severity:CRITICAL` 的 Slack/email 输出
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
标签:AMSI绕过, CISA项目, Cloudflare, Docker, Elasticsearch, ELK, GitHub Advanced Security, IP 地址批量处理, JSON解析, Logstash, MITRE ATT&CK, Mutation, 仪表盘, 内容过滤, 可视化, 威胁情报, 威胁检测, 安全加固, 安全实验室, 安全运营, 安全防御评估, 开发者工具, 扫描框架, 插件系统, 数据管道, 无线安全, 日志采集, 版权保护, 端口监听, 网络安全, 网络安全审计, 蜜罐, 规避防御, 证书利用, 请求拦截, 越狱测试, 软件工程, 隐私保护