揪出 Azure AD 后门:Mandiant Azure AD Investigator 检测 AAD Backdoor 与 Golden SAML 完全指南

📅 2026/8/23 12:17:10
揪出 Azure AD 后门:Mandiant Azure AD Investigator 检测 AAD Backdoor 与 Golden SAML 完全指南
揪出 Azure AD 后门Mandiant Azure AD Investigator 检测 AAD Backdoor 与 Golden SAML 完全指南【免费下载链接】Mandiant-Azure-AD-Investigator项目地址: https://gitcode.com/gh_mirrors/ma/Mandiant-Azure-AD-InvestigatorMandiant Azure AD Investigator 是一款由 Mandiant 开源的只读 PowerShell 检测工具专为在 Azure AD / Microsoft 365 环境中揪出 AAD BackdoorAzure AD 后门、Golden SAML黄金 SAML 令牌等攻击者痕迹而生。它不会修改租户中的任何配置只负责把可疑线索整理成 CSV 报告交给安全团队人工复核。对于刚接触 Microsoft 365 安全的同学来说这是一份照着装、照着跑的实操指南。一、认识 Mandiant Azure AD Investigator它是做什么的Mandiant Azure AD Investigator 诞生于对 UNC2452APT29攻击团伙的响应。Mandiant 在 SolarWinds 供应链攻击事件中观察到该攻击者通过修改 Azure AD 的联合域名Federated Domain配置植入后门并伪造 SAML 令牌提权窃取邮件。为了帮助客户排查同类入侵Mandiant 开源了这个 PowerShell 模块。它的定位很明确特点说明️ 只读模式不会对 Microsoft 365 环境做任何变更可放心在生产租户运行 聚焦 TTPs围绕 UNC2452 的战术、技术与程序TTPs设计检测项 报告导向结果写入 CSV / JSON 文件方便后续分析与取证⚠️ 双类指标既识别高保真入侵指标IOC也标记双用途痕迹既可能是攻击也可能是合法管理操作项目核心文件一览均为纯文本结构非常清晰新手也可以读懂MandiantAzureADInvestigator.psm1核心模块包含全部检测函数逻辑MandiantAzureADInvestigator.json配置文件定义高风险 API 权限清单与默认日志查询语句MandiantAzureADInvestigator.psd1PowerShell 模块清单声明所需依赖Initialization.ps1模块加载时的初始化脚本README.md官方说明文档 新手提示先阅读README.md能快速建立整体认知再对照MandiantAzureADInvestigator.json里的权限定义理解为什么这个权限危险。二、检测原理详解AAD Backdoor 与 Golden SAML 是怎么被揪出来的在动手之前先理解工具在找什么后面看报告才不迷路。1️⃣ AAD Backdoor盯住 any.sts 这个后门签名AAD Backdoor 是一种攻击手法攻击者篡改联合域名的认证设置把Issuer URI 指向any.sts。这样攻击者就能用自签的万能证书为任意用户签发令牌长期潜伏在租户中。Mandiant Azure AD Investigator 的Invoke-MandiantAuditAzureADDomains函数会遍历所有联合域名一旦 Issuer URI 匹配any.sts前缀立即在终端打印红色警报!! Evidence of AAD backdoor found. Consider performing a detailed forensic investigation Domain name: foobar.com Federation issuer URI: http://any.sts/16B45E3B⚠️ 看到这类输出基本可以判定存在后门配置应立刻启动取证调查。2️⃣ Golden SAML 痕迹从签名证书找破绽Golden SAML 攻击中攻击者会篡改联合域名的令牌签名证书以便伪造 SAML 断言提权。工具的思路是检查证书的两个指纹检测点判断逻辑为什么可疑证书有效期 365 天AD FS 自管理证书有效期只有 1 年超长有效期说明证书不是 AD FS 生成的可能是攻击者植入签名证书与下一证书不一致两个证书的 Issuer颁发者或 Subject主题不同正常轮转的两张证书应来自同一颁发者不一致提示被篡改3️⃣ 旁证服务主体与应用中的异常凭据除了域名侧攻击者还喜欢往**服务主体Service Principal和应用程序注册Application**里塞入证书/密钥来实现持久化访问。工具会检查两类高风险情况一方微软官方发布服务主体被添加了凭据 —— 正常情况下几乎不会发生服务主体/应用同时拥有高危 API 权限如Mail.Read、Directory.Read.All和人工添加的凭据MandiantAzureADInvestigator.json里维护了完整的高危权限清单按数据窃取和权限控制分类这就是这些判断的依据。三、Mandiant Azure AD Investigator 安装教程最快 4 步跑起来第 1 步获取工具打开 PowerShell克隆仓库到本地git clone https://gitcode.com/gh_mirrors/ma/Mandiant-Azure-AD-Investigator第 2 步安装 4 个前置 PowerShell 模块工具依赖微软官方的 4 个模块。以本地管理员身份打开 PowerShell右键选择以管理员身份运行依次执行Install-Module AzureAD Install-Module MSOnline Install-Module ExchangeOnlineManagement Install-Module Microsoft.Graph第 3 步准备一个权限合适的账号Mandiant Azure AD Investigator 需要以下权限才能完整运行注意这是读权限工具本身只读✅ Azure AD 门户中的Global Administrator全局管理员或Global Reader全局读取者角色✅ Exchange 控制面板中的View-Only Audit Logs仅查看审计日志角色✅ Microsoft Graph 的User.Read.All与Directory.Read.All作用域Global Reader 通常自动具备其中 Exchange 的View-Only Audit Logs角色需要到 Exchange 管理面板的管理角色中手动创建并分配给用户分配后最长可能需要 1 小时才生效建议提前安排。第 4 步导入模块、连接环境、一键执行全部检测# 进入工具目录 cd C:\path\to\Mandiant-Azure-AD-Investigator # 导入模块 Import-Module .\MandiantAzureADInvestigator.psd1 # 连接 Azure AD / Exchange / Graph 环境会弹出登录提示 Connect-MandiantAzureEnvironment -UserPrincipalName yourusertenant.com # 运行全部检测结果输出到指定目录 Invoke-MandiantAllChecks -OutputPath C:\InvestigationOutput 如果提示禁止运行脚本执行一次Set-ExecutionPolicy -ExecutionPolicy RemoteSigned可能需要管理员权限即可。四、Mandiant Azure AD Investigator 的 8 大核心检测功能全部检测由Invoke-MandiantAllChecks一键串联也可以单独运行某一项。核心函数都定义在MandiantAzureADInvestigator.psm1中#检测功能对应函数查什么1联合域名审计Invoke-MandiantAuditAzureADDomainsAAD Backdoorany.sts、证书异常、未验证域名2服务主体审计Invoke-MandiantAuditAzureADServicePrincipals一方服务主体异常凭据、高危权限 添加凭据3应用程序审计Invoke-MandiantAuditAzureADApplications应用注册的高危 API 权限与添加的凭据4CSP 合作伙伴关系Invoke-MandiantGetCSPInformation是否开启委托管理员合作伙伴是否以全局管理员权限访问租户5邮箱文件夹权限Get-MandiantMailboxFolderPermissionsDefault / Anonymous 用户是否被授予收件箱访问权限6应用模拟角色Get-MandiantApplicationImpersonationHolders谁持有 ApplicationImpersonation 角色可冒充任何用户7Purview 审计检查Invoke-MandiantCheckAuditing有高级审计许可证的用户是否被禁用邮件审计攻击者常先关审计再窃密8统一审计日志检索Get-MandiantUnc2452AuditLogs自动执行 12 组日志查询覆盖 UNC2452 的关键动作第 8 项尤其值得展开Get-MandiantUnc2452AuditLogs会调用内置的Get-MandiantBulkUAL批量检索器自动翻页收集最多 5 万条日志并覆盖以下关键事件查询语句同样预置在MandiantAzureADInvestigator.json中Set domain authentication域名认证设置变更创建联合域名对象——攻击者配置 AAD Backdoor 的典型信号Set federation settings on domain联合设置修改——Golden SAML 攻击的准备动作Update application/Update service principal应用与服务主体的更新Add service principal credentials为服务主体添加密钥或证书PowerShell Mailbox Logins通过 PowerShell 登录邮箱的行为New management role assignments新管理角色分配可能是新增的应用模拟授权五、如何看懂检测结果CSV 报告输出说明检测结束后所有线索都会写入-OutputPath指定的目录。主要输出文件输出文件内容排查建议Federated Domains.csv全部联合域名及其 Issuer URI逐一确认域名是否应该联合URI 是否符合预期first-party service principals.csv携带额外凭据的一方服务主体与管理员确认是否有合法用例否则重点调查service principals.csv高危权限 添加凭据的服务主体结合审计日志验证凭据来源applications.csv高危权限 添加凭据的应用确认应用是否真的需要这些权限advanced_audit_disabled.csv具备高级审计许可但已禁用的用户核对禁用是否出于业务需要folder_permissions.csv收件箱被 Default/Anonymous 授权的邮箱原则上应为空非空即需分析application_impersonation_holders.csv持有应用模拟角色的用户/组为空文件代表无人持有该角色属理想状态UAL_*_auditlog.json统一审计日志检索结果每组查询一个文件结合操作时间、来源 IP、操作人交叉研判重要认知Mandiant Azure AD Investigator 提供的是线索而非结论。README 中明确说明工具无法 100% 判定是否被入侵也分不清某条痕迹是攻击者还是合法管理员所为。对双用途痕迹建议到 Azure AD 门户的登录页面搜索相关服务主体的认证记录并对照审计日志确认操作人。六、常见问题与注意事项 ⚠️Q1导入模块时报禁止运行脚本执行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned后重试。Q2某项检测没有输出是工具坏了不一定。比如application_impersonation_holders.csv为空文件说明租户中没有用户持有该角色反而是好事没有命中不代表没有风险只代表当前检查面没有发现异常。Q3大型租户跑不完邮箱文件夹权限扫描会遍历租户内所有邮箱官方提示大租户可能需要 1 小时以上请耐心等待。Q4日志检索提示超过 50,000 条结果批量检索器单次最多收集 5 万条此时需要缩小-StartDate/-EndDate时间窗口后分段重新检索。Q5结果里全是黄色警告要不要报警按置信度分层处理any.sts类后门指标属于高保真线索优先取证证书有效期、凭据类问题先与管理员核实是否存在合法自定义配置再决定是否深挖。七、总结把 Mandiant Azure AD Investigator 纳入你的安全巡检清单维度评价上手难度⭐⭐ 低装 4 个模块 3 行命令即可跑完安全性⭐⭐⭐ 只读不改租户可重复运行检测深度⭐⭐⭐⭐ 覆盖 AAD Backdoor、Golden SAML、持久化凭据、审计规避等关键面局限只发现线索不做判定双用途痕迹依赖人工复核一句话概括先用 Mandiant Azure AD Investigator 做广撒网式排查再用审计日志做定点深挖就是应对 AAD Backdoor 与 Golden SAML 这类高隐蔽攻击的务实姿势。【免费下载链接】Mandiant-Azure-AD-Investigator项目地址: https://gitcode.com/gh_mirrors/ma/Mandiant-Azure-AD-Investigator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考