从零到通关:EntraGoat 部署全流程与高频故障自救
【免费下载链接】EntraGoatA deliberately vulnerable Microsoft Entra ID environment. Learn identity security through hands-on, realistic attack challenges.项目地址: https://gitcode.com/GitHub_Trending/en/EntraGoat
EntraGoat 部署最容易卡住的环节,往往不是代码,而是环境:它要在你的 Entra ID 测试租户里注入真实的身份配置错误和提权路径,租户、权限、Graph SDK 任何一环没对齐,脚本都会在第一步就报错。这篇文章写给第一次接触 EntraGoat 的安全新手,按环境体检、三步上线、验证交付、故障自救的顺序,带你把 6 个挑战场景完整跑通。
🩺 出发前:环境体检清单
这一步解决"明明照着做却连不上"的问题——EntraGoat 安装失败九成是前置条件没对齐,花五分钟把下表过完,后面能少走很多弯路。
| 检查项 | 要求 | 快速确认方式 |
|---|---|---|
| 租户 | 专用 Entra ID 测试/试用租户,绝不用生产 | 登录租户后确认里面没有业务用户 |
| 权限 | 当前账号是 Global Administrator | Entra 管理中心 → 角色分配里能看到 GA 角色 |
| Graph SDK | Microsoft.Graph PowerShell 模块 | 下面这条命令有版本输出即可 |
| 系统与运行时 | Windows + PowerShell 5.1 或 7+(GUI 路线必需);Web 路线另需 Node.js 和 npm | node -v、npm -v能打印版本号 |
| 网络 | 浏览器可达 Entra 管理中心和 Graph 端点 | 能正常打开并登录管理中心 |
Get-Module -ListAvailable Microsoft.Graph | Select-Object Name, Version更细的前置说明可以对照 docs/getting-started.md。
🚀 第一公里:三步把部署走通
这一步解决"东西装在哪、从哪个文件开始跑"的问题。整个 EntraGoat 部署就是三步:拿代码、装 SDK、选一条路线启动界面。
步骤 1:克隆仓库,认准入口文件
git clone https://gitcode.com/GitHub_Trending/en/EntraGoat cd EntraGoat入口文件是根目录的Start-EntraGoat.ps1;走纯手动路线的话,脚本都在scenarios/目录里。
步骤 2:安装 Microsoft Graph PowerShell SDK
Install-Module Microsoft.Graph -Scope CurrentUser -Force装过但版本较旧的话,用Update-Module Microsoft.Graph升到最新即可,不需要卸载重装。
步骤 3:挑一条路线启动界面
路线 A:PowerShell GUI(推荐,无需 Node.js)
.\Start-EntraGoat.ps1窗口打开后,6 个挑战按难度排列成卡片,每张卡片可以直接运行 setup 和 cleanup 脚本,提示词默认折叠,不会剧透。界面支持Ctrl+Plus/Ctrl+Minus/Ctrl+0缩放。
路线 B:Web UI
cd frontend npm install npm start浏览器打开http://localhost:3000,点挑战卡看详情,具体脚本仍需在终端执行。
✅ 交作业:验证部署可用
这一步解决"到底算不算装好了"的问题——部署没有报错不等于环境就绪,用下面三个检查点确认闭环成立。
- 界面层:GUI 首页能看到 6 张挑战卡片和 0/6 的进度;或 Web 版在
localhost:3000正常出仪表盘。 - 脚本层:在挑战页点 Run Setup,终端里没有红色
[-]报错、横幅流程走完;到 Entra 管理中心里能看到脚本新建的用户和应用(以场景 1 为例,会建出Finance Analytics Dashboard应用和一组测试账号)。 - 可玩层:挑战页给出起始低权限账号,用它登录,沿攻击链一路提权到 Global Admin,最后把 flag 提交回 GUI。flag 就藏在管理员用户的
extensionAttribute1里,找不到就去翻这个字段。
每个场景都配有攻击路径图,以场景 5 为例:
验证通过的标志一句话:setup 干净跑完、租户对象就位、能完整走一遍 setup → 提权 → flag → cleanup。
🔧 翻车自救:高频故障按症状排查
这一步把 EntraGoat 排障拆成"症状 → 原因 → 处置"三段,不靠猜,按对号入座的方式处理。
认证卡在 Connect-MgGraph
- 症状:脚本在连接 Graph 阶段报认证错误,或浏览器弹窗登录后依然失败。
- 原因:当前 PowerShell 会话没有有效的登录上下文,或弹窗里误选了别的租户。
- 处置:先手动执行
Connect-MgGraph -Scopes "Directory.ReadWrite.All" -TenantId "你的租户ID",确认登录时选中的是测试租户,再重跑脚本。
SDK 装不上(Install-Module 报错)
- 症状:
Install-Module Microsoft.Graph提示权限不足或无法安装。 - 原因:没加
-Scope CurrentUser时系统要求管理员身份;或网络策略拦了 PowerShell Gallery。 - 处置:以管理员身份重开 PowerShell 再装,或保留
-Scope CurrentUser普通身份安装;仍失败就先解决到 Gallery 的网络连通性。
setup 中途报"对象已存在"
- 症状:脚本跑到一半提示重名对象已存在,直接中断,租户里残留了半个场景。
- 原因:上次 setup 没跑完或没清理,同名用户、应用还留在租户里。
- 处置:先执行
cleanups/目录里对应的 cleanup 脚本清场,再重跑 setup;两个目录按场景编号一一对应。
GUI 在 macOS / Linux 上起不来
- 症状:执行
Start-EntraGoat.ps1报 WPF 相关类型找不到的错误。 - 原因:PowerShell GUI 基于 WPF 构建,只支持 Windows。
- 处置:换 Web UI(
npm start)或纯手动脚本路线,功能完全等价。
提示缺少 Microsoft.Graph.* 模块
- 症状:脚本报
Microsoft.Graph.Users等子模块不存在。 - 原因:只装了主包但子模块没拉全,或整体版本太旧。
- 处置:脚本会询问是否从 PowerShell Gallery 自动补装,选 Y 即可;也可以手动
Update-Module Microsoft.Graph后重跑。
加分项:让环境更稳的进阶习惯
- 手动精细部署:跳过界面直接跑单场景,
cd scenarios后执行.\EntraGoat-Scenario1-Setup.ps1 -TenantId "你的租户ID",适合需要精确控制或排查的场景,脚本清单见 scenarios/。 - 进度重置:完成状态存在
%APPDATA%\EntraGoat\state.json,执行.\Start-EntraGoat.ps1 -Reset可一键清零。 - 配额与节奏:别并行跑多个场景;setup 脚本内有 5~10 秒的对象复制等待,属正常现象,别中途掐掉。
- 清理习惯:每打完一个场景就跑对应 cleanup,租户保持干净,下次 setup 就不会撞重名对象。
🚧 红线:合规三条底线
- 仅用于教育和授权测试,不是生产环境的诊断工具。
- 只在专用测试租户里跑,任何情况下远离生产数据。
- 在授权范围内使用并遵守当地法规,完整条款见
LICENSE。
跑通第一遍之后,重点不是把 6 个 flag 全交掉,而是回头看 setup 脚本里每一处配置错误是如何被利用起来的,那才是这套环境最值钱的部分。挑战详情在 docs/challenges.md,遇到问题回上面"翻车自救"一节对照处理即可。
【免费下载链接】EntraGoatA deliberately vulnerable Microsoft Entra ID environment. Learn identity security through hands-on, realistic attack challenges.项目地址: https://gitcode.com/GitHub_Trending/en/EntraGoat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考