jennafrank/healthcare-enterprise-honeynet
GitHub: jennafrank/healthcare-enterprise-honeynet
一个模拟医疗企业网络的双节点蜜罐靶场,用于威胁狩猎训练、SOC 培训和攻击者行为研究,提供实时仪表板和自动威胁情报富化。
Stars: 0 | Forks: 0
# 🍯 Log(n) Pacific Cyber Range
**一个用于威胁狩猎、SOC 培训和攻击者行为研究的生产级双节点蜜罐部署。**
由 [Jenna Frank](https://github.com/jennafrank) 使用 [Claude Code](https://claude.ai/code) 构建和维护。
[](LICENSE)



## 这是什么?
Log(n) Pacific Cyber Range 是一个真实的多服务蜜罐环境,模拟了医疗网络中的两个组织:
| 节点 | 身份 | 服务 |
|------|----------|----------|
| **Meridian HR** | 一家虚构的 HR 软件公司 | SSH, Redis, MongoDB, MySQL, Kerberos, LDAP, SMB |
| **Cascade Medical EMR** | 一个虚构的医院 EMR 系统 | RDP, MSSQL, VNC, Telnet, SSH, HL7, SMTP |
每个接触这两个系统的攻击者都会被记录下来,通过威胁情报进行富化,进行复杂度评分,并显示在实时的 SOC 仪表板中。这两个节点相互连接,旨在吸引——并检测——它们之间的横向移动。
## 架构
```
┌─────────────────────────────────────────────────────────────────────┐
│ Log(n) Pacific Cyber Range │
│ Azure East US 2 │
├──────────────────────────────┬──────────────────────────────────────┤
│ Meridian HR Node │ Cascade Medical Node │
│ 20.242.13.15 │ 20.246.106.71 │
│ │ │
│ SSH :22 │ RDP :3389 │
│ Redis :6379 │ MSSQL :1433 │
│ MongoDB :27017 │ VNC :5900 │
│ MySQL :3306 │ Telnet :23 │
│ Kerberos:88 │ SSH :22 │
│ LDAP :389/636 │ HL7 :2575 │
│ SMB :445 │ SMTP :25 │
│ │ │
│ Dashboard :8080 │ Dashboard :8080 │
│ Unified :9090 ──────────┼──► (pulls from both) │
└──────────────────────────────┴──────────────────────────────────────┘
│
SQLite per node
events.jsonl per node
Full threat enrichment
MITRE ATT&CK mapping
```
## 实时仪表板
| 仪表板 | URL | 描述 |
|-----------|-----|-------------|
| Meridian HR | `http://20.242.13.15:8080` | 单节点 Meridian 仪表板 |
| Cascade Medical | `http://20.246.106.71:8080` | 单节点 Cascade 仪表板 |
| **统一 SOC** | `http://20.242.13.15:9090` | **双蜜罐的综合视图** |
统一仪表板包含一个 **Threat Hunt** 面板——支持通过 IP、用户名、命令或服务在两个蜜罐中进行搜索,并提供实时结果。
## 快速开始
### 前置条件
- Docker + Docker Compose
- Python 3.12+
- 一台端口可访问的 Azure VM(或任何 Linux 主机)
### 部署 Meridian HR
```
git clone https://github.com/jennafrank/log-n-pacific-cyber-range.git
cd log-n-pacific-cyber-range/honeypots/meridian-hr
cp .env.example .env
# 使用您的 API keys 编辑 .env
docker compose up -d
```
仪表板地址 `http://YOUR_IP:8080`
### 部署 Cascade Medical
```
cd log-n-pacific-cyber-range/honeypots/cascade-medical
cp .env.example .env
docker compose up -d
```
仪表板地址 `http://YOUR_IP:8080`
### 部署统一仪表板
统一仪表板作为第二个 Flask 应用运行在 Meridian 节点的 9090 端口上。它包含在 `unified_app.py` 中,并由 `main.py` 自动启动。更新 `dashboard/templates/unified.html` 中的 `CAS_BASE`,使其指向您的 Cascade 节点 IP。
## 涵盖的服务
### Meridian HR(企业 HR 系统)
| 服务 | 端口 | 攻击者的行为 |
|---------|------|-------------------|
| SSH | 22 | 暴力破解、shell 访问、命令执行 |
| Redis | 6379 | KEYS 枚举、配置篡改、复制劫持 |
| MongoDB | 27017 | 集合转储、用户枚举、数据库删除尝试 |
| MySQL | 3306 | SELECT * 转储、凭据暴力破解 |
| Kerberos | 88 | AS-REP roasting、TGS-REQ (Kerberoasting) |
| LDAP | 389/636 | 目录枚举、用户/组列表 |
| SMB | 445 | 共享枚举、哈希传递攻击尝试 |
### Cascade Medical EMR(医院系统)
| 服务 | 端口 | 攻击者的行为 |
|---------|------|-------------------|
| RDP | 3389 | 凭据喷洒、会话劫持 |
| MSSQL | 1433 | xp_cmdshell、SA 暴力破解、数据转储 |
| VNC | 5900 | 密码喷洒、屏幕捕获尝试 |
| Telnet | 23 | 默认凭据填充 |
| SSH | 22 | 暴力破解、横向移动跳板 |
| HL7 | 2575 | 患者记录枚举、ADT 消息探测 |
| SMTP | 25 | 开放中继测试、地址枚举 |
## 合成文档生态系统
两个蜜罐节点都包含一个 **包含 3,181 个文件的合成文档库**(`northstar-documents/`),代表了一家虚构的医疗保健组织——NorthStar Regional Health Network。文件时间跨度为 2016–2026 年,内容包括:
- **HR 记录**:员工合同、W-2 表格、绩效评估、组织架构图
- **患者档案**:入院表、出院摘要、实验室结果、处方
- **IT 文档**:网络拓扑图、操作手册、事件报告、变更日志
- **高管内容**:董事会会议记录、战略计划、并购文档、预算
- **个人杂项**:桌面截图、浏览器书签、电子邮件草稿、日记条目
- **账单与保险**:索赔、EOB(福利说明)、保险信函
- **合规**:HIPAA 评估、审计报告、BAA 协议
所有 PII 均为**完全合成**——SSN 使用 9XX 前缀(无效),电话号码使用 555 区号,不代表任何真实个人。
该数据集使蜜罐足够逼真,能够吸引并保持攻击者的注意力,同时为威胁狩猎培训提供丰富的数据。
## 威胁情报栈
每个会话都会自动进行以下富化:
- **IP 地理位置**(国家、城市、ISP、ASN)
- **AbuseIPDB 评分**(滥用可信度 0-100)
- **VPN/数据中心检测**
- **MITRE ATT&CK 技术映射**(T1059, T1082, T1547 等)
- **复杂度评分**(1-10 分制)
- **高关注度标记**(横向移动、持久化尝试、提权)
## 威胁狩猎
`threat-hunting/` 目录包含:
| 文件 | 描述 |
|------|-------------|
| [`threat_hunting_queries.kql`](threat-hunting/threat_hunting_queries.kql) | 30 多个 KQL 查询(可适配 SQL/DuckDB),涵盖侦察、暴力破解、横向移动、MITRE TTP、异常检测 |
| [`threat_hunting_guide_for_newbies.md`](threat-hunting/threat_hunting_guide_for_newbies.md) | 新手指南:寻找目标、如何解读攻击链、包含 MITRE 映射的完整实例分析 |
| [`sophistication_rating_framework.md`](threat-hunting/sophistication_rating_framework.md) | 1-10 攻击者评分标准、漏洞严重性评级、4 个已评分的真实案例 |
### 实时狩猎
使用统一仪表板(`http://20.242.13.15:9090`)中的 **Threat Hunt 面板**:
- 通过 IP、用户名、命令关键字或服务进行搜索
- 结果涵盖 Sessions、Commands 和 Credentials 选项卡
- 同时查询两个蜜罐
### API 搜索
```
# 查找所有 wget/curl 命令
curl "http://20.242.13.15:8080/api/search?command=wget"
# 查找来自特定 IP 的所有尝试
curl "http://20.242.13.15:8080/api/search?ip=118.194"
# 查找所有 username 为 'admin' 的 SSH 尝试
curl "http://20.242.13.15:8080/api/search?username=admin&service=ssh"
```
## 仓库结构
```
log-n-pacific-cyber-range/
├── README.md
├── ARCHITECTURE.md
├── LICENSE
├── .gitignore
│
├── honeypots/
│ ├── meridian-hr/ # Meridian HR honeypot
│ │ ├── honeypot/ # Core service emulators
│ │ │ ├── server.py # Main listener orchestrator
│ │ │ ├── db.py # SQLite data layer + search
│ │ │ ├── shell.py # Fake SSH shell
│ │ │ ├── logger.py # JSONL event logger
│ │ │ ├── session.py # Session management
│ │ │ ├── enrichment.py # IP enrichment (geo, abuse)
│ │ │ ├── mitre.py # MITRE ATT&CK mapping
│ │ │ ├── nosql_servers.py # Redis + MongoDB emulators
│ │ │ ├── ad/ # Kerberos/LDAP/AD emulation
│ │ │ └── ...
│ │ ├── dashboard/
│ │ │ ├── app.py # Flask API + /api/search
│ │ │ └── templates/
│ │ │ ├── index.html # Meridian SOC dashboard
│ │ │ └── unified.html # Unified SOC dashboard (port 9090)
│ │ ├── main.py # Entry point (starts all services)
│ │ ├── unified_app.py # Unified dashboard Flask app
│ │ ├── lateral_detector.py # Cross-honeypot pivot detection
│ │ ├── docker-compose.yml
│ │ ├── Dockerfile
│ │ ├── requirements.txt
│ │ └── .env.example
│ │
│ └── cascade-medical/ # Cascade Medical EMR honeypot
│ ├── honeypot/ # RDP, MSSQL, VNC, HL7, SMTP emulators
│ ├── dashboard/
│ │ ├── app.py # Flask API + /api/search
│ │ └── templates/
│ │ └── index.html # Cascade SOC dashboard
│ ├── main.py
│ ├── docker-compose.yml
│ ├── Dockerfile
│ ├── requirements.txt
│ └── .env.example
│
├── threat-hunting/
│ ├── threat_hunting_queries.kql # 30+ hunt queries
│ ├── threat_hunting_guide_for_newbies.md # Beginner's guide
│ └── sophistication_rating_framework.md # Attacker scoring
│
├── azure/
│ ├── VM_setup.md # VM sizing and configuration
│ └── NSG_rules.md # Required firewall rules
│
└── docs/
├── DEPLOYMENT.md # Step-by-step deploy guide
├── TROUBLESHOOTING.md # Common issues and fixes
├── FAQ.md # Frequently asked questions
└── gen_northstar.py # Synthetic document generator (3,181 files)
```
## Azure 部署
完整说明请参阅 [`azure/VM_setup.md`](azure/VM_setup.md)。快速参考:
**每个节点的推荐 VM 规格:**
- 规格:`Standard_B2s`(2 vCPU,4GB RAM)
- 操作系统:Ubuntu 22.04 LTS
- 磁盘:30GB Standard SSD
- 区域:East US 2
**必需的 NSG 入站规则:**
```
Port 22 → SSH (management)
Port 8080 → Dashboard
Port 9090 → Unified dashboard (Meridian only)
Port 2223 → Alternate SSH (optional management port)
```
加上您想向互联网公开的任何蜜罐端口。
## 使用 Claude Code 构建
整个项目——包括两个蜜罐、所有仪表板、威胁狩猎框架以及合成文档生态系统——都是使用 [Claude Code](https://claude.ai/code)(Anthropic 的 AI 驱动 CLI)构建的。
Claude Code 协助构建的关键内容:
- 从零开始编写的所有 Python 蜜罐服务模拟器
- 具有实时 SSE 更新的 Flask SOC 仪表板
- 具有实时搜索功能的统一跨蜜罐仪表板
- MITRE ATT&CK 检测和复杂度评分
- 3,181 份合成医疗文档
- 整个代码仓库和文档
## 合理使用
本软件用于**防御性安全研究、SOC 培训,以及在您拥有或获得明确监控权限的系统上部署蜜罐**。请勿对您不拥有的系统进行部署。捕获的所有攻击者数据仅供研究之用。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
标签:Azure, Docker, PE 加载器, Python, XXE攻击, 安全, 安全运营, 安全防御评估, 扫描框架, 无后门, 模拟器, 版权保护, 网络靶场, 蜜罐, 证书利用, 请求拦截, 超时处理, 逆向工具