themodernhacker/honeypot-siem
GitHub: themodernhacker/honeypot-siem
基于SSH蜜罐和Wazuh SIEM的紫色团队检测实验室。
Stars: 0 | Forks: 0
# Honeypot SIEM,紫色团队检测实验室
一个自包含的紫色团队实验室,运行 **SSH蜜罐(Cowrie**),将事件发送到 **SIEM(Wazuh**),并使用映射到MITRE ATT&CK的定制检测规则检测模拟攻击。在单台机器上使用Docker从头到尾构建,攻击它,检测它,记录它。

## 这展示了什么
- **检测工程**:11个基于频率关联的定制Wazuh规则(暴力破解、暴力破解后的妥协),在版本控制中:[`rules/local_rules.xml`](rules/local_rules.xml)
- **MITRE ATT&CK映射**:每个警报都标记为一种技术:[`docs/MITRE-MAPPING.md`](docs/MITRE-MAPPING.md)
- **日志管道设计**:Cowrie JSON通过共享卷发送到Wazuh管理器,没有主机代理,可以从这个仓库完全重现
- **紫色团队工作流程**:脚本化、受控的攻击和结果警报的分析:[`attack/`](attack/)
- **跨SIEM检测**:将相同的规则重写为KQL以用于Microsoft Sentinel:[`sentinel/`](sentinel/)
## 架构
```
┌────────────┐ SSH :2222 ┌─────────────┐ cowrie.json ┌──────────────────┐
│ Attacker │ ─────────────► │ Cowrie │ ──────────────► │ Wazuh Manager │
│ (scripts/ │ brute-force, │ honeypot │ (shared vol) │ decoders+rules │
│ nmap/ssh) │ recon, wget │ (Docker) │ │ MITRE tagging │
└────────────┘ └─────────────┘ └────────┬─────────┘
│
┌─────────▼─────────┐
│ Wazuh Indexer + │
│ Dashboard (:443) │
└───────────────────┘
```
## 快速开始
完整说明:[`docs/SETUP.md`](docs/SETUP.md)。简而言之(Windows + Docker Desktop,从仓库根目录):
```
git clone https://github.com/wazuh/wazuh-docker.git -b v4.9.0
cd wazuh-docker\single-node
docker compose -f generate-indexer-certs.yml run --rm generator
copy ..\..\wazuh\docker-compose.override.yml .\docker-compose.override.yml
# add the block from wazuh/manager-localfile-snippet.xml to
# config\wazuh_cluster\wazuh_manager.conf
docker compose up -d
pwsh ..\..\wazuh\apply-custom-rules.ps1 # inject custom rules once stack is healthy
# open https://localhost (change the default admin password!)
```
然后运行攻击:
```
cd ..\..\attack
pip install paramiko
.\scan.ps1
python brute_force.py
python run_session.py
```
## 检测与MITRE覆盖范围
| 检测 | ATT&CK | 规则 |
|:----:|--------|:----:|
| SSH暴力破解(8+失败/120秒,一个来源) | T1110 | 100104 |
| 暴力破解后的成功登录 | T1078 + T1110 | 100105 |
| 远程有效载荷下载(`wget`/`curl`) | T1105 | 100108/109 |
| 侦察命令(`uname`、`id`、...) | T1082 + T1033 | 100107 |
| 快速连接/自动化 | T1046 | 100110 |
| 通过蜜罐的隧道/代理 | T1090 | 100111 |
完整表格:[`docs/MITRE-MAPPING.md`](docs/MITRE-MAPPING.md).
## 演示
从攻击到检测的实验室运行。
**1. 攻击蜜罐。** 对SSH端口进行暴力破解,然后使用有效的密码登录,然后四处探索。shell落在伪造的主机`web-prod-01`上。

**2. 蜜罐记录了每一次尝试。** Cowrie将每次登录作为JSON行写入。以下是失败的猜测,然后是成功的`root/hunter2`。

**3. Wazuh将日志转换为警报。** 暴力破解后的成功登录触发了级别12的妥协规则(100105),并标记了它所代表的MITRE技术。

**4. 也会捕获访问后的活动。** 在会话中运行的侦察命令映射到发现技术(100107、T1082和T1033)。

**5. 仪表板将其整合在一起。** 顶级源IP、MITRE技术分解、尝试的密码和运行的命令,所有这些都针对蜜罐。


**6. 然后汇总到Wazuh概述。**

## 撰写
针对每次攻击的分析(从日志到捕获它的规则到MITRE技术到分析师接下来做什么)位于[`docs/`](docs):
- [暴力破解到账户接管](docs/writeup-brute-force.md)
- [进入后四处看看](docs/writeup-recon.md)
- [拉取第二阶段](docs/writeup-payload-download.md)
## 我学到的
在构建此过程中遇到并解决的真正工程问题(不是理论):
- **Wazuh关联使用特定的字段名称。** ` `仅在Wazuh的内置`srcip`字段上工作。Cowrie的JSON将地址解码为动态字段`src_ip`,因此我的暴力破解关联在切换到`src_ip `之前始终没有触发。教训:验证您的关联实际上基于哪个字段。
- **将绑定挂载到Docker命名卷可能会破坏应用程序初始化。** 将规则文件挂载到`/var/ossec/etc`使Wazuh认为卷已经填充并跳过复制其默认配置,因此管理器不会启动。通过`docker cp`在第一次启动后注入规则(见`apply-custom-rules.ps1`)来修复。
- **蜜罐检测有盲点。** Cowrie仅公开端口2222,因此端口扫描(T1046)在蜜罐本身上留下了微弱的证据,强烈的信号在攻击者/网络端。我诚实地表示了这一点,而不是夸大覆盖范围。
- **配置编码很重要。** Cowrie将`userdb.txt`读取为ASCII,并在注释中的单个非ASCII破折号上崩溃,这破坏了所有身份验证。一个小字节,一个大故障,这正是真实检测管道会遇到的事情。
- 将每个检测映射到MITRE ATT&CK将一堆警报转换成一个可读的攻击故事(侦察到暴力破解到妥协到发现到工具传输)。
## 仓库布局
```
rules/ custom Wazuh decoders + detection rules (the core artifact)
cowrie/ honeypot config (cowrie.cfg, userdb.txt) + logs (gitignored)
wazuh/ compose override + manager config snippet
attack/ controlled attack scripts (brute force, session, scan)
docs/ setup guide, MITRE mapping, attack write-ups
sentinel/ the same detections in KQL for Microsoft Sentinel (bonus)
screenshots/ evidence for the README
```
_仅用于针对我自己的基础设施进行教育/防御性安全使用的实验室。_
标签:Redis利用, 请求拦截