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, 人工智能安全, 入侵防御, 医疗安全, 医疗影像, 合规性, 威胁情报, 威胁检测与响应, 安全实验室, 安全运营中心, 实验室, 开发者工具, 攻击模拟, 数据展示, 现代安全运营, 红队, 网络安全, 网络映射, 网络架构, 自动化编排, 请求拦截, 逆向工具, 隐私保护, 驱动签名利用