Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Mandiant-Azure-AD-Investigator — 一个只读的PowerShell模块,用于检测Azure AD中的UNC2452及其他威胁行为者痕迹,审计联合域、服务主体、应用程序和邮箱权限以发现入侵指标。 | Kitploit
工具/GitHubGitHub/mandiant/mandiant-azure-ad-investigator
数字取证云安全威胁情报身份与访问管理 (IAM)错误配置事件响应日志分析Archived
GitHubmandiant/mandiant-azure-ad-investigator

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Mandiant-Azure-AD-Investigator

一个只读的PowerShell模块,用于检测Azure AD中的UNC2452及其他威胁行为者痕迹,审计联合域、服务主体、应用程序和邮箱权限以发现入侵指标。

查看仓库
6509163年前Kitploit 审核通过

Mandiant Azure AD Investigator

聚焦于 UNC2452 TTP

概述

本仓库包含一个 PowerShell 模块,用于检测可能指示 UNC2452 及其他威胁行为者活动的痕迹。某些痕迹是“高置信度”的入侵指标,而其他痕迹则属于所谓的“双重用途”痕迹。双重用途痕迹可能与威胁行为者活动有关,也可能与合法功能有关。需要对这些痕迹进行分析和验证。有关 UNC2452 所用技术的详细说明,请参阅我们的博客。

此工具为只读工具。它不会对 Microsoft 365 环境进行任何更改。

总之,该模块将:

  • 尽最大努力识别需要进一步验证和分析的入侵指标

它不会:

  • 100% 保证识别入侵行为,或
  • 判断某个痕迹是合法的管理员活动还是威胁行为者活动。

借助社区反馈,该工具在检测 IOC 方面可能会更加全面。如有问题、想法或反馈,请提交 issue、提交 PR 或联系作者。

功能

联合域 (Invoke-MandiantAuditAzureADDomains)

该模块使用 MS Online PowerShell 来查找和审计 Azure AD 中的联合域。所有联合域将输出到文件 federated domains.csv。

  • 签名证书有效期异常 - 针对签名证书有效期超过 1 年的联合域发出警报。AD FS 管理的证书有效期仅为一年。有效期超过一年可能表明威胁行为者篡改了域联合设置,也可能表明使用了合法的自定义令牌签名证书。请让管理员验证是否属于这种情况。
  • 签名证书不匹配 - 针对签名证书的颁发者或主题不匹配的联合域发出警报。在大多数情况下,令牌签名证书始终来自相同的颁发者且具有相同的主题。如果存在不匹配,可能表明威胁行为者篡改了域联合设置。请让管理员验证主题和颁发者名称是否在预期范围内,如果不是,则考虑执行取证调查以确定更改方式并识别其他入侵证据。
  • Azure AD 后门 (any.sts) - 针对配置了 any.sts 作为颁发者 URI 的联合域发出警报。这表明使用了 Azure AD Backdoor 工具。考虑执行取证调查以确定更改方式并识别其他入侵证据。
  • 联合域 - 列出所有联合域及其令牌颁发者 URI。请验证该域应处于联合状态,并且颁发者 URI 在预期范围内。
  • 未验证域 - 列出 Azure AD 中所有未验证的域。未验证域不应长时间保留在 Azure AD 中。考虑将其删除。

示例```

!! Evidence of AAD backdoor found. Consider performing a detailed forensic investigation Domain name: foobar.com Domain federation name: Federation issuer URI: http://any.sts/16B45E3B

root@kitploit:~
:bangbang: 该脚本已识别到一个域名已与一个颁发者URI联合,该URI是[Azure AD后门](https://github.com/Gerenios/AADInternals/blob/master/FederatedIdentityTools.ps1)的指标。后门默认将颁发者URI设置为hxxp://any.sts。建议进行取证调查,以确定更改是如何发生的,并识别任何其他入侵证据。```
!! A token signing certificate has a validity period of more than 365 days. 
This may be evidence of a signing certificate not generated by AD FS.
Domain name: foobar.com
Federation issuer uri: http://sts.foobar.com
Signing cert not valid before: 1/1/2020 00:00:00
Signing cert not valid after: 12/31/2025 23:59:59

⚠️ 脚本识别出一个联合域,其令牌签名证书的有效期超过标准的 365 天。请咨询管理员,确认该令牌签名证书是否由人工管理,且其所述有效期是否符合预期。如果非预期情况,请考虑执行取证调查。

Service Principals (Invoke-MandiantAuditAzureADServicePrincipals)

此模块使用 Azure AD PowerShell 查找并审计 Azure AD 中的服务主体。

  • 已添加凭据的第一方服务主体 - 第一方(微软发布)服务主体在极少数情况下不应添加额外凭据。处于或曾经处于混合模式的环境可能已将凭据添加到 Exchange Online、Skype for Business 和 Azure AD 密码保护代理服务主体。请验证服务主体凭据是否属于合法用例。如果凭据不合法,请考虑执行取证调查。
  • 具有高权限且已添加凭据的服务主体 - 识别已分配高风险 API 权限并添加了凭据的服务主体。虽然服务主体及其已添加的权限可能是合法的,但添加的凭据可能并非如此。请验证服务主体凭据是否属于合法用例。请确认服务主体确实需要所列权限。

示例```

!! Identified first-party (Microsoft published) Service Principals with added credentials. Only in rare cases should a first-party Service Principal have an added credential. Verify that the added credential has a legitimate use case and consider further investigation if not


Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx App ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Display Name : Office 365 Exchange Online Key Credentials :

CustomKeyIdentifier : EndDate : 12/9/2017 2:10:29 AM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/9/2015 1:40:30 AM Type : AsymmetricX509Cert Usage : Verify Value :

root@kitploit:~
:warning: 此脚本已识别出一个第一方(微软)服务主体添加了凭据。第一方服务主体通常不应添加凭据,除非在极少数情况下。曾处于或目前处于混合模式的环境可能已为 Exchange Online、Skype for Business 及 AAD 密码保护代理服务主体添加了凭据。这也可能是您环境中 UNC2452 活动的痕迹。请咨询您的管理员并搜索审核日志以验证该凭据是否合法。您还可以使用 Azure AD 登录边栏中的“服务主体登录”选项卡,搜索使用此服务主体对您租户进行的身份验证。```
!! Identified Service Principals with high-risk API permissions and added credentials.
Verify that the added credential has a legitimate use case and consider further investigation if not
Object ID            : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
App ID               : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Display Name         : TestingApp
Key Credentials      :
    CustomKeyIdentifier :
    EndDate             : 1/7/2025 12:00:00 AM
    KeyId               : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    StartDate           : 1/7/2021 12:00:00 AM
    Type                : Symmetric
    Usage               : Verify
    Value               :
Password Credentials :
Risky Permissions    : Domain.ReadWrite.All

⚠️ 脚本已识别出一个具有高风险API权限且已添加凭据的服务主体。这可能是预期的,因为某些第三方或自定义构建的应用程序需要添加凭据才能运行。这也可能是您环境中UNC2452活动的痕迹。请与管理员协商并搜索审计日志以验证该凭据是否合法。您也可以使用Azure AD登录边栏选项卡中的“服务主体登录”选项卡,搜索使用此服务主体对您的租户进行的身份验证。

Applications (Invoke-MandiantAuditAzureADApplications)

此模块使用Azure AD PowerShell查找和审计Azure AD中的应用程序。

  • 具有高权限且已添加凭据的应用程序 - 对具有高风险API权限且已添加凭据的应用程序发出警报。虽然这些应用程序和添加的权限可能是合法的,但添加的凭据可能不合法。确认应用程序凭据是合法用例的一部分。确认这些应用程序需要所列出的权限。

Example```

!! High-privileged Application with credentials found. Validate that the application needs these permissions. Validate that the credentials added to the application are associated with a legitimate use case.

ObjectID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx AppID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx DisplayName: Acme Test App KeyCredentials: PasswordCredentials:

CustomKeyIdentifier : EndDate : 12/22/2021 4:01:52 PM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/22/2020 4:01:52 PM Value :

CustomKeyIdentifier : EndDate : 12/21/2021 6:32:54 PM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/21/2020 6:33:16 PM Value :

Risky Permissions: Mail.Read (Read mail in all mailboxes) Directory.Read.All (Read all data in the organization directory)

root@kitploit:~
:warning: 该脚本已识别出一个具有高风险 API 权限并添加了凭据的应用程序。这可能在意料之内,因为某些第三方或自定义构建的应用程序需要添加凭据才能正常运行。这也可能是环境中 UNC2452 活动的迹象。请咨询您的管理员并搜索审核日志以验证该凭据是否合法。

### 云解决方案提供商计划 (Invoke-MandiantGetCSPInformation)

此模块检查租户是否由 CSP 或合作伙伴管理,以及是否启用了委派管理。委派管理允许 CSP 以与全局管理员相同的权限访问客户租户。尽管 CSP 计划对合作伙伴的租户实施了强大的安全控制,但攻陷 CSP 的威胁行为者仍可能能够访问客户环境。组织应验证其合作伙伴是否需要委派管理权限,如果不需要则将其移除。如果合作伙伴必须保留委派管理权限,请考虑实施条件访问策略以限制其访问。

组织可以通过导航到 [管理中心](https://admin.microsoft.com),在左侧菜单栏中选择 `设置` -> `合作伙伴关系` 来检查和管理的伙伴关系。

### 邮箱文件夹权限 (Get-MandiantMailboxFolderPermissions)

此模块审核租户中所有邮箱是否存在可疑的文件夹权限。具体来说,该模块将检查每个邮箱中的“顶层信息存储”和“收件箱”文件夹,并检查分配给“默认”和“匿名”用户的权限。任何非“无”的值都将导致该邮箱被标记为需要分析。通常情况下,“默认”和“匿名”用户不应拥有对用户收件箱的权限,因为这将允许任何用户读取其内容。某些组织可能会发现共享邮箱拥有此权限,但这并非推荐的做法。

### 应用程序模拟 (Get-MandiantApplicationImpersonationHolders)

此模块输出持有 ApplicationImpersonation 角色的用户和组列表。该命令输出中的任何用户或组成员都可以使用模拟“充当”并访问租户中任何其他用户的邮箱。组织应审核此命令的输出,以确保仅包含预期的用户和组,并在可能的情况下进一步限制范围。

### Purview 审核(原高级审核)(Invoke-MandiantCheckAuditing)

此模块将枚举租户中所有已获得 Purview 审核邮件访问权限许可的许可用户。它会生成一个 CSV 报告,记录该功能是否已在符合条件的邮箱上启用。组织应过滤那些符合邮件访问条件但未启用该功能的邮箱,并验证这是否是故意的。

### 统一审核日志 (Get-MandiantUnc2452AuditLogs)

此模块是一个辅助脚本,用于搜索统一审核日志。搜索统一审核日志存在许多容易忽略的技术细节。此模块通过实施最佳实践来处理这些细节并处理一些常见错误,从而简化搜索过程。

默认情况下,该模块将搜索可能记录 UNC2452 技术的日志条目。这些日志记录也可能捕获合法的管理员活动,需要进行验证。

* **更新应用程序** - 记录更新应用注册的操作。
* **设置域身份验证** - 记录域身份验证设置的更改,包括创建联合领域对象。这些事件应在环境中很少发生,可能表明威胁行为者正在配置 Azure AD 后门。
* **设置联合设置** - 记录域联合领域对象的修改。这些事件应在环境中很少发生,可能表明威胁行为者正准备执行 Golden SAML 攻击。
* **更新应用程序证书和机密** - 记录向应用注册添加机密或证书的操作。
* **PowerShell 邮箱登录** - 记录客户端应用程序为 PowerShell 的邮箱登录操作。
* **更新服务主体** - 记录对现有服务主体进行的更新。
* **添加服务主体凭据** - 记录向服务主体添加机密或证书的操作。
* **添加应用角色分配** - 记录添加应用角色(应用程序权限)的操作。
* **用户的应用程序角色分配** - 记录向用户分配应用角色的操作。
* **PowerShell 身份验证** - 记录用户使用 PowerShell 客户端向 Azure AD 进行身份验证的操作。
* **新的管理角色分配** - 记录创建新的管理角色分配的操作。这对于识别新的 ApplicationImpersonation 授权非常有用。

## 用法

### 所需模块

此 PowerShell 模块需要安装三个 Microsoft 365 PowerShell 模块。
* AzureAD
* MSOnline
* ExchangeOnlineManagement
* Microsoft.Graph

安装模块:
1. 以本地管理员身份打开 PowerShell 窗口(右键单击,然后选择“以管理员身份运行”)
2. 运行命令 `Install-Module <MODULE NAME HERE>` 并按照提示操作

### 所需的用户权限
此 PowerShell 模块必须使用分配了特定权限的 Microsoft 365 帐户运行。
* Azure AD 门户中的 `全局管理员` 或 `全局读取者` 角色
* Exchange 控制面板中的 `仅查看审核日志` 权限
* `User.Read.All` 和 `Directory.Read.All` 范围。`全局读取者` 角色持有者应能够自动使用这些范围。

授予帐户 Exchange 控制面板中的 `仅查看审核日志` 权限:
1. 导航到 https://outlook.office365.com/ecp 并以全局管理员或 Exchange 管理员身份登录(注意:如果您在替代云中,具体 URL 可能不同)
2. 在仪表板中点击 `管理员角色`,或者如果您使用新 UI,则展开左侧的 `角色` 选项卡并点击 `管理员角色`
3. 通过点击 `+` 号或点击 `添加新角色组` 来创建新的管理员角色
4. 为您的角色指定一个名称和默认写入范围
5. 向该角色添加 `仅查看审核日志` 权限
6. 将用户添加到该角色

**注意** 此角色生效最多可能需要一个小时

### 运行工具
1. 将此工具下载为 ZIP 并解压缩,或将存储库克隆到您的系统
2. 打开 PowerShell 窗口
3. 将目录更改为该模块的位置 `cd C:\path\to\the\module`
4. 导入此模块 `Import-Module .\MandiantAzureADInvestigator.psd1` 您应该会收到以下输出```

      Mandiant Azure AD Investigator
    Focusing on UNC2452 Investigations

PS C:\Users\admin\Desktop\mandiant>
  1. 通过运行 Connect-MandiantAzureEnvironment -UserPrincipalName <your username here> 连接到 Azure AD。您应该会收到登录提示,并且 PowerShell 窗口会输出指示连接已建立的信息。注意:如果遇到问题,您可能需要通过运行 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 来更改执行策略。这可能需要管理员权限。```

The module allows access to all existing remote PowerShell (V1) cmdlets in addition to the 9 new, faster, and more reliable cmdlets.

|--------------------------------------------------------------------------| | Old Cmdlets | New/Reliable/Faster Cmdlets | |--------------------------------------------------------------------------| | Get-CASMailbox | Get-EXOCASMailbox | | Get-Mailbox | Get-EXOMailbox | | Get-MailboxFolderPermission | Get-EXOMailboxFolderPermission | | Get-MailboxFolderStatistics | Get-EXOMailboxFolderStatistics | | Get-MailboxPermission | Get-EXOMailboxPermission | | Get-MailboxStatistics | Get-EXOMailboxStatistics | | Get-MobileDeviceStatistics | Get-EXOMobileDeviceStatistics | | Get-Recipient | Get-EXORecipient | | Get-RecipientPermission | Get-EXORecipientPermission | |--------------------------------------------------------------------------|

To get additional information, run: Get-Help Connect-ExchangeOnline or check https://aka.ms/exops-docs

Send your product improvement suggestions and feedback to [email protected]. For issues related to the module, contact Microsoft support. Don't use the feedback alias for problems or support issues.

Account Environment TenantId TenantDomain


[email protected] AzureCloud xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test.onm...

root@kitploit:~
5. 运行所有检查 `Invoke-MandiantAllChecks -OutputPath <path\to\output\files>`。您也可以使用特定 cmdlet 运行单个检查。
6. 在屏幕上查看输出以及写入的 CSV 文件。

## 延伸阅读

有关 Mandiant 关于 UNC2452 的更多信息,请参阅:
* [高度规避的攻击者利用 SolarWinds 供应链通过 SUNBURST 后门入侵多个全球受害者](https://www.mandiant.com/resources/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor)
* [针对 Microsoft 365 的补救和强化策略以防御 UNC2452](https://www.mandiant.com/resources/remediation-and-hardening-strategies-for-microsoft-365-to-defend-against-unc2452)

对 UNC2452 的应对措施是安全行业的一次重大努力,这些博客大量引用了其他贡献,这些贡献对本工具的用户将很有价值。我们建议阅读这些文章中的链接材料,以最好地了解您环境中的活动。一如既往,Mandiant 团队可以通过[在此联系我们](https://www.mandiant.com/report-incident)来回答后续问题或进一步协助调查。
下载工具