Jhatchi/Ad-lab-Azure-BC-2026

GitHub: Jhatchi/Ad-lab-Azure-BC-2026

这是一个在 Azure 上从零构建的 Active Directory 红蓝对抗实验环境,覆盖 11 个 MITRE ATT&CK 攻击技术并实现 100% 检测率,同时将实验期间捕获的真实外部凭据填充攻击纳入验证,为防御方提供端到端的检测能力证明。

Stars: 0 | Forks: 0

# AD Lab Azure:构建、加固与检测 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![markdownlint](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/98e1d26938220915.svg)](.github/workflows/markdownlint.yml) ![Status](https://img.shields.io/badge/status-v2.0-blue) ## 目录 - [操作声明](#operational-notice) - [TL;DR](#tldr) - [本实验展示的内容](#what-this-lab-demonstrates) - [使用的工具](#tools-used) - [如何阅读本实验](#how-to-read-this-lab) - [架构概览](#architecture-at-a-glance) - [构建摘要](#build-summary) - [攻击与检测覆盖](#attack-and-detection-coverage) - [重要发现](#notable-findings) - [仓库结构](#repository-structure) - [交付物](#deliverables) - [许可证](#license) - [作者](#author) ## 操作声明 本实验完全隔离在作者所拥有的 Azure 租户内。此处记录的所有攻击均在作者控制的设施上执行,所有成本和风险由作者自行承担。来自 `185.156.73.74` 的外部攻击捕获是对一台面向互联网的域控制器(DC)的未经授权的入侵尝试,仅被动观察和记录,未进行任何挑衅或回应。 本仓库中描述的检测技术仅供防御性用途,适用于读者拥有或已获得书面授权进行测试的系统。在未拥有的系统上复现攻击触发行为属于未授权行为。作者及 BeCode 对滥用行为不承担责任。 ## TL;DR - 从零开始在 Azure 上构建了一个 Windows Server 2025 AD 域,包括 OU 布局、密码策略加固、组策略审计、DHCP 以及一台已加入域的 Windows 10 客户端。 - 在两台主机上部署了 Sysmon 15.15(SwiftOnSecurity 配置)和 PowerShell ScriptBlock 日志记录。 - 执行了 6 个原生攻击场景 + 5 个红/蓝对抗进阶技术,覆盖 6 个战术下的 11 个 MITRE ATT&CK 技术。**检测率:11 / 11。** - 在实验监控窗口期间,观察到来自 `185.156.73.74` 对暴露 DC 的未经授权的外部凭据填充攻击。捕获了完整的 Event 4625 链,并将其用作检测栈的真实世界验证。 - 端到端捕获了 11 个 Event Viewer 检测事件,附有 2 张截图和 2 个可导航的 GPO HTML 导出文件,存放于 [`evidence/`](evidence/) 目录下。 ## 本实验展示的内容 | 指标 | 数量 | |----------------------------------------|------| | 创建的 Active Directory 用户账户 | 13 | | 设计的安全组 | 8 | | 组织单位(OU) | 9 | | 原生检测场景 | 6 | | 红/蓝对抗进阶技术 | 5 | | 映射的 MITRE ATT&CK 技术 | 11 | | 捕获的 Event Viewer 输出(逐字记录) | 11 | | 视觉证据文件(PNG + HTML) | 4 | | Sysmon 安装数量(DC + 客户端) | 2 | | 观察到的真实外部攻击 | 1 | | 记录并论证的接受风险 | 8 | ## 使用的工具 - **Azure**(Sweden Central,单 VNet,Standard_B2ls_v2(DC)和 Standard_B2als_v2(客户端)VM) - **Windows Server 2025** 用于 `dc01`(AD DS、DNS、DHCP,林功能级别 WS 2025) - **Windows 10 Enterprise LTSC** 用于 `ws01` - **Sysmon v15.15**,使用 SwiftOnSecurity `sysmon-config` 基线 - **Event Viewer** 用于原生日志检查(Security、PowerShell Operational、Sysmon Operational) - **PowerShell** 用于构建自动化、狩猎查询和攻击触发 - **GPMC + ADUC** 用于组策略和目录管理 - **MITRE ATT&CK 框架** 用于技术映射 ## 如何阅读本实验 **如果你有 30 秒(招聘人员或招聘经理):** 阅读下方的"TL;DR"、"攻击与检测覆盖"和"重要 findings"部分。这涵盖了做了什么、做了多少以及差异化亮点。 **如果你有 5 分钟(高级分析师初次浏览):** 加上 `docs/03-detection-scenarios.md` 和 `docs/04-redblue-techniques.md`。每个场景将捕获的 Event Viewer 输出和检测逻辑集中在一处。 **如果你有 30 分钟(同行或面试官深度阅读):** 从 `docs/01-architecture.md` 了解威胁模型开始,然后阅读 `docs/02-build-walkthrough.md` 了解构建决策,接着阅读两个场景文件,最后以 `docs/05-lessons-learned.md` 结尾,了解真实世界的摩擦和外部攻击的详细记录。 ## 架构概览 ``` Internet | | RDP 3389 (deliberate exposure, see Operational notice) v +------------------------------------------------------+ | Azure VNet | | | | +----------------------+ +-------------------+ | | | dc01 | | ws01 | | | | | | | | | | WS 2025 | | Win10 LTSC | | | | AD DS, DNS, DHCP | | domain-joined | | | | Sysmon 15.15 | | Sysmon 15.15 | | | +----------+-----------+ +---------+---------+ | | | | | | +---- Kerberos, LDAP -----+ | | +---- WinRM (5985/5986) --+ | +------------------------------------------------------+ ``` 完整的设计原理和威胁模型见 [`docs/01-architecture.md`](docs/01-architecture.md)。 ## 构建摘要 **第 1 天:** 在单个 Azure VNet 中配置了两台 VM,将 `dc01` 提升为 Windows Server 2025 林,验证 DNS(存在 5 条 SRV 记录,正向和反向区域均可解析),确认 Kerberos TGT 签发,并审计了 Directory Service 日志(0 个严重错误,6 个预期的提升后警告)。 **第 2 天:** 构建了 BeCode Corp. 目录结构(9 个 OU、13 个用户、8 个安全组),加固了 Default Domain Policy(最少 12 位密码、要求复杂性、最长使用期限 90 天、5 次尝试后账户锁定),并应用了一个专用的 `Security-Monitoring` GPO,涵盖 PowerShell ScriptBlock 日志记录、Kerberos 审计、登录/注销审计、账户管理审计以及带完整命令行的进程创建审计。在工作站子网上配置了 DHCP。 **第 3 天:** 在两台主机上安装了 Sysmon 15.15。执行了 6 个原生攻击场景,涵盖密码喷洒(Kerberos + NTLM,在 `dc01` 本地和从 `ws01` 跨主机均执行)、后门账户创建、DC 侦察、编码 PowerShell、计划任务持久化和出站 DNS 查询。最后完成了 5 个红/蓝对抗进阶技术(Kerberoasting、AS-REP Roasting、通过 PowerShell 的 AD 枚举、LSASS 内存转储、通过 PSRemoting 的横向移动)。**所有 11 个技术均产生了可检测的事件。** 包含操作说明的完整演练(NLA 绕过、PSRemoting 准备、通过 cmd.exe 的编码损害):[`docs/02-build-walkthrough.md`](docs/02-build-walkthrough.md)。 ## 攻击与检测覆盖 | # | MITRE ID | 技术 | 战术 | Event ID(s) | 原生 | Sysmon | 已检测 | |----|-------------|------------------------------------|---------------------|------------------------|------|--------|--------| | 1 | T1110.003 | 密码喷洒(Kerberos) | Credential Access | 4771 | 完整 | N/A | 是 | | 2 | T1110.003 | 密码喷洒(NTLM) | Credential Access | 4625 | 完整 | N/A | 是 | | 3 | T1136.001 | 创建账户(后门) | Persistence | 4720 + 4728 + 4726 | 完整 | N/A | 是 | | 4 | T1087.002 | 账户发现(域) | Discovery | 4104, Sysmon 1 | 部分 | 完整 | 是 | | 5 | T1027 | 混淆文件(编码 PS) | Defense Evasion | 4104, 4688 | 完整* | 进阶 | 是 | | 6 | T1053.005 | 计划任务持久化 | Persistence | 4698 | 完整 | 进阶 | 是 | | 7 | T1071.001/.004 | 应用层协议 | Command and Control | Sysmon 22 | 无 | 完整 | 是 | | 8 | T1558.003 | Kerberoasting | Credential Access | 4769(RC4 = 0x17) | 完整 | N/A | 是 | | 9 | T1558.004 | AS-REP Roasting | Credential Access | 4768(Pre-auth = 0) | 完整 | N/A | 是 | | 10 | T1003.001 | OS 凭据转储:LSASS | Credential Access | Sysmon 11(10 已过滤) | 无 | 部分 | 是 | | 11 | T1021.006 | 远程服务:WinRM(PSRemote) | Lateral Movement | Sysmon 3, 4624 | 部分 | 完整 | 是 | \* 启用了 ScriptBlock 日志记录,这是本实验中应用的 GPO 基线。 **检测率:11 / 11。** 包含每个技术的检测规则逻辑的完整表格:[`docs/06-mitre-mapping.md`](docs/06-mitre-mapping.md)。 捕获的 Event Viewer 输出示例(Kerberoasting Event 4769,决定性信号 `Ticket Encryption Type = 0x17`): ``` EventID : 4769 (Kerberos service ticket requested) Service Information : Service Name : svc_backup Available Keys : RC4, AES128-SHA96, AES256-SHA96, AES128-SHA256, AES256-SHA384 Additional Information : Ticket Encryption Type : 0x17 # RC4-HMAC (Kerberoasting indicator) Failure Code : 0x0 # success, ticket issued ``` 该服务账户可用 AES256,但攻击工具故意请求 RC4,这是 Kerberoasting 的典型特征。包含纯 PowerShell 触发(无需 Mimikatz 或 Rubeus)的完整记录:[`docs/04-redblue-techniques.md`](docs/04-redblue-techniques.md)。 ## 重要发现 ### 真实世界验证:实验期间观察到的外部攻击 DC 按实验要求通过 RDP 3389 面向互联网暴露。在第 3 天的监控窗口期间,来自 `185.156.73.74`(一个与实验无关的外部 IP)的自动认证尝试开始到达。DC 记录了这些尝试,捕获的 Event 4625 链是本仓库中最具特色的证据: ``` EventID : 4625 Computer : dc01.becode.corp.lab Logon Type : 3 (Network) Failed Logon Account : Account Name : empfang # not a real account in the lab Account Domain : BECODE Failure Information : Sub Status : 0xC0000064 # STATUS_NO_SUCH_USER Network Information : Source Network Address : 185.156.73.74 ``` 在多个连续事件中观察到的模式: - 依次尝试不同的不存在的用户名(`vincent`、`empfang`、`qlik` 等),表明使用了通用的凭据填充字典 - 始终使用 NTLM(机器人通过 IP 连接,从不通过主机名) - 始终为空的 `Workstation Name`(机器人不宣告自身身份) - 始终为 `Caller Process ID 0x0`(纯网络认证) - 相邻的 Kerberos `4768` 事件,`Account Name: NOUSER, Result Code: 0x6`,与 `kerbrute userenum` 一致 这是任何面向互联网的 DC 在其监控窗口内都会成为攻击目标的真实证据。它以实际分量论证了文档中每一项接受的风险,并端到端验证了整个监控链对未经授权的真实流量的检测能力。 关于源 IP 的开源威胁情报佐证:92 个供应商中有 7 个将其标记为恶意,跨 6 种协议有 286 个已记录的攻击事件(端口扫描、MSSQL / MySQL / FTP / IMAP / SMTP)。完整的威胁情报块见 [`docs/05-lessons-learned.md`](docs/05-lessons-learned.md)。 专项记录:[`docs/05-lessons-learned.md`](docs/05-lessons-learned.md) 第 1 节。 ### 其他要点 - **基于签名的检测未捕获 11 个技术中的任何一个。** 所有技术均未使用已知的攻击工具二进制文件。全部使用了合法的 Windows 工具、PowerShell 或内置的 `.NET` 程序集。检测 100% 基于行为:加密类型异常、协议标志、进程血缘、文件名模式、数量阈值。 - **仅 DC 日志会遗漏一半的攻击链。** 认证事件驻留在 DC 上,操作事件驻留在工作站上。工作站上的 Sysmon 是不可妥协的。 - **SwiftOnSecurity LSASS 白名单是一个真实的 LOLBin 权衡。** Task Manager 可以在不触发 Sysmon Event 10 的情况下转储 LSASS。Event 11 回退方案有效,但更老练的攻击者可能会绕过两者。 完整的经验教训记录:[`docs/05-lessons-learned.md`](docs/05-lessons-learned.md)。 ## 仓库结构 ``` Ad-lab-Azure-BC-2026/ |-- README.md # this file |-- LICENSE # MIT |-- .gitignore # protects raw/, evidence brute, OS junk |-- .github/workflows/markdownlint.yml # Markdown lint on push and PR |-- docs/ | |-- lab-documentation.md # anonymized reference, every table from the lab | |-- 01-architecture.md # topology, design choices, threat model | |-- 02-build-walkthrough.md # Day 1 + Day 2 + Day 3 writeup with operational notes | |-- 03-detection-scenarios.md # 6 native scenarios, verbatim events + detection rules | |-- 04-redblue-techniques.md # 5 Red/Blue bonus techniques, full workflows | |-- 05-lessons-learned.md # 185.156.73.74 storytelling + 8 other insights | `-- 06-mitre-mapping.md # consolidated MITRE ATT&CK table, 11 techniques |-- scripts/ | `-- powershell-snippets.md # reusable build + hunting + trigger commands `-- evidence/ |-- README.md # methodology + v2 roadmap (screenshots, GPO exports) |-- screenshots/ # v2 : Event Viewer captures (PNG) | |-- 01-kerberoasting-4769-rc4.png | `-- 02-external-attack-4625-185.156.73.74.png `-- gpo-reports/ # v2 : navigable HTML GPO exports (UTF-8) |-- 01-default-domain-policy.html `-- 02-security-monitoring-policy.html ``` ## 交付物 - [x] 文本实验文档(`docs/lab-documentation.md`) - [x] 架构和威胁模型(`docs/01-architecture.md`) - [x] 含操作说明的 3 天构建演练(`docs/02-build-walkthrough.md`) - [x] 6 个含捕获事件的原生检测场景(`docs/03-detection-scenarios.md`) - [x] 5 个含完整工作流程的红/蓝对抗进阶技术(`docs/04-redblue-techniques.md`) - [x] 经验教训,包括外部攻击记录(`docs/05-lessons-learned.md`) - [x] MITRE ATT&CK 整合映射(`docs/06-mitre-mapping.md`) - [x] 可复用的 PowerShell 代码片段(`scripts/powershell-snippets.md`) - [x] Event Viewer 截图:[Kerberoasting 4769 RC4](evidence/screenshots/01-kerberoasting-4769-rc4.png) 和 [外部攻击 4625](evidence/screenshots/02-external-attack-4625-185.156.73.74.png) - [x] GPO HTML 导出:[Default Domain Policy](evidence/gpo-reports/01-default-domain-policy.html) 和 [Security-Monitoring](evidence/gpo-reports/02-security-monitoring-policy.html) 方法论、匿名化规则和各工件上下文见 [`evidence/README.md`](evidence/README.md)。 ## 许可证 MIT。见 [LICENSE](LICENSE)。 ## 作者 Johan-Emmanuel Hatchi。BeCode Brussels,2026 年网络安全方向。在 [LinkedIn](https://www.linkedin.com/in/johan-emmanuel-hatchi/) 或 [GitHub](https://github.com/Jhatchi) 上联系。 发布本 BeCode 实验的许可:Thomas Bataboudila,2026 年 5 月 17 日,所有 BeCode 项目的通用作品集授权。
标签:Active Directory, AI合规, Azure, Cloudflare, DHCP, ELK, GitHub Advanced Security, IPv6, IP 地址批量处理, MITRE ATT&CK, Plaso, PowerShell, Sysmon, Terraform 安全, URL发现, Windows Server 2025, 凭据填充, 后端开发, 域控制器, 安全加固, 安全检测, 密码策略, 检测规则, 组策略, 网络安全, 网络安全审计, 网络资产发现, 蓝队演练, 隐私保护