umuthancakir/Enterprise-Active-Directory-Attack-Detection-Lab

GitHub: umuthancakir/Enterprise-Active-Directory-Attack-Detection-Lab

一个隔离可复现的紫队实验室与 Web 平台,通过自动化编排 AD 攻击场景并验证 Sigma 检测规则,解决检测工程闭环中攻击覆盖率难以量化验证的问题。

Stars: 0 | Forks: 0

# EADADL — 企业级 Active Directory 攻击与检测实验室 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/umuthancakir/Enterprise-Active-Directory-Attack-Detection-Lab/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Status](https://img.shields.io/badge/status-build_in_progress-orange)](ROADMAP.md) 一个完全隔离、可复现的**紫队**(purple-team)实验室外加一个平台 层,用于配置易受攻击的 Active Directory 环境,编排 针对该环境的攻击场景,将生成的遥测数据发送至 SIEM, 根据这些遥测数据验证检测效果,并通过 Web UI 报告 MITRE ATT&CK 覆盖率。 本项目仍在建设中。**[ROADMAP.md](ROADMAP.md)** 和 **[BUILD_LOG.md](BUILD_LOG.md)** 是了解实际已完成与计划中工作的唯一事实来源——本 README 描述的是目标架构,而非 已完成的产品。 ## ⚠️ 仅限授权使用 本仓库用于配置一个**刻意设计为存在漏洞**的 Active Directory 环境,并针对该环境执行**真实的进攻性安全工具**(NetExec、 Impacket、BloodHound/SharpHound、PowerView、Atomic Red Team、Caldera)。 其构建初衷是帮助防御者练习检测工程,以及帮助红队 人员在合法、受控的环境下练习技术执行。 - 仅在你拥有或获得明确授权测试的基础设施上运行此项目。 - 攻击引擎会拒绝针对 [`inventory/lab-scope.yaml`](inventory/lab-scope.yaml) 之外的任何目标进行操作——请参阅 [SECURITY.md](SECURITY.md) 获取完整的安全不变量列表。 - 本项目不包含新型漏洞利用程序或恶意软件。它仅负责编排 已建立且公开记录的工具,并将每一项技术映射到 已发布的 MITRE ATT&CK ID。 ## 项目初衷 大多数“AD 攻击实验室”项目仅仅停留在配置一个存在漏洞的域 并手动执行一系列攻击检查清单上。EADADL 认为*检测工程师的 闭环工作*同样重要:这里演练的每一种攻击技术 都应该提供相应的 [Sigma](https://github.com/SigmaHQ/sigma) 检测规则,并根据该技术实际产生的遥测数据进行测试, 同时将生成的攻击→检测覆盖范围进行追踪,并 以 ATT&CK Navigator 风格的热力图形式呈现。这是一个紫队(purple-team)闭环,而不是红队(red-team) 演示。 ## 架构 ``` flowchart TB subgraph Lab["Isolated Lab Network (UTM host-only vmnet segment, no internet route)"] DC["dc01\nDomain Controller\n(Windows Server, x86_64 emulated)"] MEM["mem01\nMember Server\n(Windows Server, x86_64 emulated)"] ATT["attacker01\nAttacker Box\n(Kali, native arm64)"] SIEM["siem01\nSIEM Host\n(Elastic/Wazuh, native arm64)"] DC <--> MEM ATT -.attacks.-> DC ATT -.attacks.-> MEM DC -- Sysmon/WEF --> SIEM MEM -- Sysmon/WEF --> SIEM end subgraph Platform["Platform Layer (Docker Compose, outside the lab network)"] API["FastAPI backend\n(runner, history, coverage API, RBAC)"] DB[("PostgreSQL")] UI["React/Next frontend\n(dashboard, Navigator heatmap, reports)"] API <--> DB UI <--> API end Operator(("Operator\n(the host Mac itself)")) --> UI Operator -.UTM console.-> Lab API -- reads --> Scope["inventory/lab-scope.yaml\n(scope guard)"] API -- orchestrates --> ATT API -- queries --> SIEM Detections["detections/ (Sigma + tests)"] -- validated against --> SIEM ``` *为了保持模拟的 x86_64 虚拟机数量在较低水平,该架构方案中去除了一个独立的 `wks01` 工作站——请参阅 [ADR 0004](docs/adr/0004-revert-to-local-utm.md)。重新引入它是一个 已记录在案的备选方案,而不是被移除的强制要求。* ## 仓库结构 ``` eadadl/ ├── inventory/ # lab-scope.yaml — the ONLY authorized attack targets ├── infra/ # Packer + UTM bundle generator — the AD environment as code (local) ├── config/ # Ansible roles: DC, members, attacker, SIEM ├── telemetry/ # Sysmon config, WEF/forwarding, SIEM shipping ├── attack/ # scenario engine: atomic techniques + chains, ATT&CK-tagged ├── detections/ # Sigma rules + tests, ATT&CK mapping, detection-as-code ├── platform/ │ ├── backend/ # FastAPI + PostgreSQL: runner, run history, coverage API │ └── frontend/ # React/Next + Tailwind: dashboard, Navigator heatmap ├── ir/ # DFIR playbooks, hunting notebooks, response automation ├── docs/ # architecture notes, ADRs, runbooks └── .github/workflows/ # CI: lint, test, detection validation, IaC checks ``` ## 部署目标 `DEPLOY_TARGET=local`,运行在 UTM/QEMU 上(请参阅 [`docs/adr/0004-revert-to-local-utm.md`](docs/adr/0004-revert-to-local-utm.md) 了解完整的背景原因,包括为什么最初尝试在 Azure 上进行)。这台 Mac 使用的是 Apple Silicon (arm64) 芯片;Windows Server 并没有实用的 ARM64 架构方案,因此 `dc01`/`mem01` 运行在 QEMU 的纯软件 (TCG) x86_64 模拟环境下——真实可用但速度较慢——而 `attacker01` (Kali) 和 `siem01` (Ubuntu) 则作为原生 arm64 客户机运行,没有任何模拟性能损耗。网络隔离通过 UTM 的 Host Only 模式强制执行(没有实验室虚拟机分配到 NAT/ 连接互联网的网卡)——请参阅 [`docs/adr/0005-local-network-isolation.md`](docs/adr/0005-local-network-isolation.md)。 UTM 没有 CLI 来以声明式方式创建虚拟机,因此与典型的 由 Terraform 驱动的实验室不同,这里的配置工作由 Packer(用于构建磁盘镜像) + 一个小型的 Python 生成器(负责从一次性手动创建的空白模板中组装 UTM 的 `.utm` 封包) + 一个手动的“在 UTM 应用程序中启动这 4 个虚拟机”步骤组成,而这部分是无法脚本化的——请参阅 [`infra/local/README.md`](infra/local/README.md) 了解真实详尽的 全貌,包括哪些是自动化的,哪些不是。 ### 前置条件 通过 Homebrew 安装(当前账户缺少安装 Homebrew 本身所需的 sudo 权限——请以管理员身份运行这些命令,或请管理员运行一次): ``` brew install packer qemu ansible ``` 必须事先安装好 UTM.app(它是一个 GUI 虚拟机管理程序,而不是 Homebrew 包)——这台机器上已经预装了它。 ### 快速开始(在 infra/local/ 构建完成后可用——参见 ROADMAP.md) ``` cp .env.example .env # fill in ADMIN_PASSWORD + ISO URLs/checksums # 一次性操作:创建两个空白的 UTM 模板 — 参见 infra/local/README.md make up # packer build + generate .utm bundles # 打开 UTM,启动 dc01/mem01/attacker01/siem01,等待启动 make sync-scope # record booted VMs' IPs into inventory/lab-scope.yaml make attack SCENARIO= # run an attack chain against in-scope hosts make detections-test # prove the matching Sigma rules fire make platform # serve the dashboard/UI locally make down # full teardown ``` ## 文档说明 - [SECURITY.md](SECURITY.md) — 安全不变量以及如何报告平台问题 - [docs/vulnerabilities.md](docs/vulnerabilities.md) — 每一项刻意的实验室错误配置,均映射到涵盖它们的 ATT&CK 技术和 Sigma 检测规则 - [docs/architecture.md](docs/architecture.md) — 遥测数据流、 `domain_dominance` 攻击链以及紫队检测闭环,以图表形式展示 - [docs/adr/](docs/adr/) — 架构决策记录 - [ir/playbooks/](ir/playbooks/) — NIST SP 800-61 事件响应手册 - [handbook.txt](handbook.txt) — 纯文本格式的安装/使用手册(与实际行为保持同步) - [ROADMAP.md](ROADMAP.md) — 真实的已完成/进行中/未开始状态 - [BUILD_LOG.md](BUILD_LOG.md) — 分阶段的构建历史记录 ## 许可证 [MIT](LICENSE)
标签:Active Directory, AV绕过, FastAPI, Plaso, Web报告查看器, 安全攻防实验室, 测试用例, 系统提示词, 紫队演练, 请求拦截, 逆向工具