chethanredd/Diagnostic-Imaging-Center-SOC-Lab-Simulation
GitHub: chethanredd/Diagnostic-Imaging-Center-SOC-Lab-Simulation
这是一个集成了 SIEM、SOAR 和威胁情报,用于模拟诊断影像中心医疗网络环境及 DICOM 攻击场景的 HIPAA 合规安全实验室。
Stars: 0 | Forks: 0
# DIC SOC Lab — 诊断影像中心
## 架构概览
```
┌─────────────────────────────────────────────────────────────────────────┐
│ MANAGEMENT VLAN (10.10.0.0/24) │
│ │
│ ┌─────────────────┐ ┌──────────────┐ ┌─────────────────────────┐ │
│ │ Wazuh Manager │ │ Wazuh Indexer│ │ Wazuh Dashboard │ │
│ │ 10.10.0.10 │ │ 10.10.0.5 │ │ 10.10.0.15 │ │
│ │ SIEM/Manager │ │ OpenSearch │ │ https://localhost │ │
│ └────────┬────────┘ └──────────────┘ └─────────────────────────┘ │
│ │ │
│ ┌────────┴────────┐ ┌──────────────┐ ┌─────────────────────────┐ │
│ │ Suricata │ │ Shuffle │ │ Shuffle Database │ │
│ │ 10.10.0.2 │ │ 10.10.0.12 │ │ 10.10.0.14 │ │
│ │ IDS/IPS │ │ SOAR │ │ OpenSearch │ │
│ └─────────────────┘ └──────────────┘ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
│ │ │
┌────────┴──────┐ ┌──────────┴──────┐ ┌────────────┴───────┐
│ MEDICAL VLAN │ │ ADMIN VLAN │ │ DMZ │
│ 10.10.10.0/24 │ │ 10.10.20.0/24 │ │ 10.10.30.0/24 │
│ │ │ │ │ │
│ PACS .10 │ │ DC .10 │ │ Web Portal .10 │
│ RIS .20 │ │ Rad WS .20 │ │ (Patient .10) │
│ MRI .30 │ │ Admin .21 │ └────────────────────┘
│ CT .31 │ └─────────────────┘
└───────────────┘
```
## 快速开始
### 前置条件
- Docker Engine 24+ 和 Docker Compose v2
- 16 GB RAM(最低 12 GB),50 GB 磁盘空间
- 主机上已安装 `openssl`
### 1. 克隆 / 解压实验环境
```
cd dic-soc-lab
chmod +x start.sh demo.sh
```
### 2. 启动实验环境
```
./start.sh
```
### 3. 打开仪表盘
| 服务 | URL | 凭据 |
|---|---|---|
| **Wazuh SIEM** | https://`` | `admin` / `SecretPassword1!` |
| **PACS (Orthanc)** | http://``:8042 | `orthanc` / `orthanc` |
| **RIS Server** | http://``:8081 | `radiologist` / `Radiology#2026` |
| **Patient Portal** | http://``:8080 | `patient1` / `Patient#2026` |
| **SOAR (Shuffle)** | http://``:3001 | `socadmin` / `SOCAdmin!2026` |
| **Wazuh API** | https://``:56000 | `wazuh-wui` / `MyS3cr37P450r.*-` |
### 4. 运行攻击模拟
```
./demo.sh
```
### 5. 验证监控已激活
```
# 应显示 3 个活跃 agents:manager、pacs-server、ris-server
docker exec dic-wazuh-manager /var/ossec/bin/agent_control -l
# 如果 dashboard 仍然安静,则生成 baseline telemetry
./scripts/seed_soc_activity.sh
```
## 容器参考
| 容器 | 镜像 | IP | 用途 |
|---|---|---|---|
| `dic-wazuh-manager` | `wazuh/wazuh-manager:4.7.5` | 10.10.0.10 | SIEM 管理器 |
| `dic-wazuh-indexer` | `wazuh/wazuh-indexer:4.7.5` | 10.10.0.5 | OpenSearch 索引 |
| `dic-wazuh-dashboard` | `wazuh/wazuh-dashboard:4.7.5` | 10.10.0.15 | Kibana UI |
| `dic-suricata` | `jasonish/suricata:latest` | 10.10.0.2 | IDS/IPS |
| `dic-shuffle-frontend` | `ghcr.io/shuffle/shuffle-frontend` | 10.10.0.12 | SOAR UI |
| `dic-shuffle-backend` | `ghcr.io/shuffle/shuffle-backend` | 10.10.0.13 | SOAR 引擎 |
| `dic-pacs-server` | 自定义 (Orthanc) | 10.10.10.10 | DICOM PACS |
| `dic-ris-server` | 自定义 (Flask) | 10.10.10.20 | 放射科 IS |
| `dic-mri-simulator` | 自定义 | 10.10.10.30 | MR 设备 |
| `dic-ct-simulator` | 自定义 | 10.10.10.31 | CT 设备 |
| `dic-web-server` | 自定义 (nginx) | 10.10.30.10 | 患者门户 |
| `dic-attacker` | `kalilinux/kali-rolling` | 10.10.x.99 | 红队 |
## 攻击场景 (MITRE ATT&CK)
| # | 场景 | MITRE | Wazuh 规则 | Suricata SID |
|---|---|---|---|---|
| 1 | SSH 暴力破解 → PACS | T1110 | 100005 | 9000010 |
| 2 | DICOM 端口扫描 | T1046 | 100009 | 9000002 |
| 3 | 勒索软件 (DICOM 加密) | T1486 | 100001, 100003, 100004 | — |
| 4 | 钓鱼凭证收集 | T1566.002 | 100012, 100013 | — |
| 5 | DICOM 数据外泄 | T1041 | 100011 | 9000003 |
| 6 | 未经授权的 HL7 消息 | T1071 | — | 9000020 |
| 7 | AD/LDAP 枚举 | T1087.002 | 100014 | 9000042 |
| 8 | 完整 APT 链条 | 以上所有 | 全部 | 全部 |
## 文件结构
```
dic-soc-lab/
├── docker-compose.yml ← Main orchestration
├── .env ← Credentials & secrets
├── start.sh ← One-click lab setup
├── demo.sh ← Interactive attack menu
│
├── certs/ ← Generated TLS certificates
│
├── configs/
│ ├── wazuh/
│ │ ├── dic_custom_rules.xml ← 17 custom HIPAA/DICOM rules
│ │ ├── ossec_manager.conf ← Wazuh manager config
│ │ ├── wazuh.indexer.yml ← OpenSearch config
│ │ ├── internal_users.yml ← User credentials
│ │ └── certs.yml ← Cert generator config
│ ├── suricata/
│ │ ├── suricata.yaml ← IDS/IPS config
│ │ └── dic.rules ← 20 custom DICOM/medical rules
│ ├── orthanc/
│ │ └── orthanc.json ← PACS configuration
│ └── nginx/
│ └── default.conf ← Patient portal
│
├── containers/
│ ├── pacs/ ← Orthanc PACS + Wazuh agent
│ │ ├── Dockerfile
│ │ ├── entrypoint.sh
│ │ ├── generate_dicom.py ← Synthetic DICOM generator
│ │ └── ossec_agent.conf
│ ├── ris/ ← Flask RIS + HL7 listener
│ │ ├── Dockerfile
│ │ ├── ris_server.py
│ │ └── entrypoint.sh
│ ├── mri-simulator/ ← DICOM MR modality
│ ├── ct-simulator/ ← DICOM CT modality
│ ├── web-server/ ← nginx patient portal
│ │ ├── index.html
│ │ ├── portal.py ← Phishing target
│ │ └── entrypoint.sh
│ └── attacker/ ← Kali Linux red team
│ ├── ransomware_sim.py ← T1486 simulation
│ ├── phish_server.py ← T1566 simulation
│ ├── anomaly_detector.py ← ML anomaly detection
│ ├── threat_intel.py ← VT + AbuseIPDB enrichment
│ └── run_attacks.sh ← Quick attack launcher
│
└── scripts/
├── shuffle_playbooks.json ← SOAR playbook templates
└── dic_soc_dashboard.ndjson ← Kibana dashboard export
```
## 常用操作
### 查看实时告警
```
docker compose logs -f wazuh.manager | grep -E "CRITICAL|HIGH|Rule"
```
### 直接查询 Wazuh 告警
```
# 来自 PACS server 的所有 alerts
docker exec dic-wazuh-manager \
grep "pacs-server" /var/ossec/logs/alerts/alerts.log | tail -20 | jq .
# DICOM 特定的 alerts
docker exec dic-wazuh-manager \
grep '\.dcm' /var/ossec/logs/alerts/alerts.log | tail -10 | jq '.rule.description'
# Critical alerts (level 12+)
docker exec dic-wazuh-manager \
cat /var/ossec/logs/alerts/alerts.log | \
python3 -c "import json,sys; [print(json.dumps({'rule':a['rule']['description'],'level':a['rule']['level'],'agent':a['agent']['name']},indent=2)) for line in sys.stdin for a in [json.loads(line)] if a.get('rule',{}).get('level',0)>=12]"
```
### Suricata 告警
```
docker exec dic-suricata \
jq -r '.alert.signature + " | " + .src_ip' /var/log/suricata/eve.json | \
sort | uniq -c | sort -rn | head -20
```
### 进入攻击者容器
```
docker compose --profile attack up -d attacker
docker exec -it dic-attacker bash
# 然后运行:/opt/attacks/run_attacks.sh full_chain
```
### 导入 Kibana 仪表盘
```
curl -X POST "http://localhost:5601/api/saved_objects/_import" \
-H "kbn-xsrf: true" \
-H "osd-xsrf: true" \
--form file=@scripts/dic_soc_dashboard.ndjson
```
### Shuffle 工作流 (自动播种)
`./start.sh` 现在会从 `scripts/shuffle_playbooks.json` 自动创建基础 SOC 工作流(如果它们尚不存在)。
如果您只想手动运行工作流引导脚本:
```
python3 ./scripts/import_shuffle_workflows.py
```
### IR 就绪性检查 (演示前推荐)
```
chmod +x ./scripts/ir_readiness_check.sh
./scripts/ir_readiness_check.sh
```
这将验证:
- Wazuh + Shuffle + Suricata 容器已启动
- 代理已注册并处于活动状态
- 管理器拥有用于遏制措施的 active-response 二进制文件
- 可查看近期的高严重性告警
- Shuffle 工作流引导脚本仍可运行
### 在勒索软件演示后恢复 DICOM 文件
```
docker exec dic-attacker python3 /opt/attacks/ransomware_sim.py --decrypt
```
### 停止实验环境
```
docker compose down # stop, keep volumes
docker compose down -v # stop, delete all data (full reset)
```
## HIPAA 合规性映射
| 控制 | § | 实现 | 状态 |
|---|---|---|---|
| 访问控制 | 164.312(a) | VLAN 分段 + RBAC | ✅ |
| 审计控制 | 164.312(b) | Wazuh FIM + 事件日志 | ✅ |
| 完整性 | 164.312(c) | DICOM 文件哈希 (syscheck) | ✅ |
| 传输安全 | 164.312(e) | 所有节点之间使用 TLS | ✅ |
| 违规通知 | 164.400 | SOAR 自动创建事件 | ✅ |
| 风险分析 | 164.308(a)(1) | 攻击模拟 + Suricata | ✅ |
| 应急计划 | 164.308(a)(7) | 触发勒索软件时快照 | ✅ |
## 故障排除
**OpenSearch 无法启动**
```
sudo sysctl -w vm.max_map_count=262144 # run this first
```
**Wazuh 仪表盘显示 "无数据"**
```
# 等待 3-4 分钟让 indexer 完全准备好,然后:
docker compose restart wazuh.dashboard
```
**代理无法连接**
```
docker exec dic-wazuh-manager /var/ossec/bin/manage_agents -l
# 检查 enrollment password 是否与 .env ENROLLMENT_PASSWORD 匹配
```
**Shuffle 登录提示 "Failed getting org"**
```
./fix_shuffle_restart.sh
```
使用 `socadmin / SOCAdmin!2026`。如果实验环境是在 Shuffle 默认值更改之前启动的,旧的卷可能会导致组织/用户状态不一致。
**PACS 未收到 DICOM**
```
# 从 MRI sim 测试 DICOM connectivity
docker exec dic-mri-simulator \
echoscu -v 10.10.10.10 4242
```
**重置所有内容**
```
./start.sh --clean
```
**门户登录审计日志**
```
# Patient portal login attempts
docker exec dic-web-server tail -f /var/log/portal/auth.log
# RIS login attempts
docker exec dic-ris-server tail -f /var/log/ris/ris.log
```
标签:DICOM, HIPAA, IPS, Metaprompt, Shuffle, SOAR, Suricata, VLAN, Wazuh, 人工智能安全, 入侵防御, 医疗安全, 医疗影像, 合规性, 威胁情报, 威胁检测与响应, 安全实验室, 安全运营中心, 实验室, 开发者工具, 攻击模拟, 数据展示, 现代安全运营, 红队, 网络安全, 网络映射, 网络架构, 自动化编排, 请求拦截, 逆向工具, 隐私保护, 驱动签名利用