MFASweep 是一个 PowerShell 脚本,它使用提供的凭据尝试登录多种 Microsoft 服务,并尝试检测是否启用了 MFA。根据条件访问策略和其他多重身份验证设置的不同配置方式,某些协议可能会保留为单因素身份验证。该脚本还包含对 ADFS 配置的额外检查,如果检测到本地 ADFS 服务器,则可以尝试登录。
目前 MFASweep 能够登录到以下服务:
警告:此脚本会使用提供的账户尝试登录 11 次(如果包括 ADFS 则为 12 次)。如果输入了错误的密码,可能会导致账户被锁定。
更多信息请参阅博客文章:Exploiting MFA Inconsistencies on Microsoft Services


以下命令将使用提供的凭据尝试认证到 Microsoft Graph API、Azure Resource Manager API、Microsoft 365 Exchange Web Services、Microsoft 365 Web Portal(使用 7 种不同的用户代理)以及 Microsoft 365 Active Sync。如果任何认证方法成功,令牌和/或 cookie 将被写入 AccessTokens.json。(目前不记录 EWS、ActiveSync 和 ADFS 的 cookie 或令牌。)
Invoke-MFASweep -Username [email protected] -Password Winter2026 -WriteTokens
以下命令使用默认认证方法并同时检查 ADFS。
Invoke-MFASweep -Username [email protected] -Password Winter2026 -Recon -IncludeADFS
Invoke-MFASweepWebRequest 包装器,以便在 Windows PowerShell 5.1 和 PowerShell 7+ 上都能干净运行。AADSTS53003 响应,并将条件访问阻止与一般认证失败分开报告。Invoke-M365WebPortalAuth -UAtype NintendoSwitch 使用 Nintendo Switch 用户代理字符串。每个独立模块也可以单独运行。
Microsoft Graph API
Invoke-GraphAPIAuth -Username [email protected] -Password Winter2026
Azure Resource Manager API
Invoke-AzureManagementAPIAuth -Username [email protected] -Password Winter2026
Microsoft 365 Exchange Web Services
Invoke-EWSAuth -Username [email protected] -Password Winter2026
Microsoft 365 Web Portal(Windows 用户代理)
Invoke-M365WebPortalAuth -Username [email protected] -Password Winter2026 -UAtype Windows
Microsoft 365 Web Portal(iPhone 用户代理)
Invoke-M365WebPortalAuth -Username [email protected] -Password Winter2026 -UAtype iPhone
Microsoft 365 Web Portal(未知平台 / Nintendo Switch 用户代理)
Invoke-M365WebPortalAuth -Username [email protected] -Password Winter2026 -UAtype NintendoSwitch
Microsoft 365 Active Sync
Invoke-O365ActiveSyncAuth -Username [email protected] -Password Winter2026
ADFS
Invoke-ADFSAuth -Username [email protected] -Password Winter2026
未知平台(条件访问策略绕过)
此模块测试未针对未知设备平台强制实施 MFA 的误配条件访问策略。它使用 Nintendo Switch 用户代理字符串,以便 Entra ID 将设备平台和浏览器报告为“未知”。
Invoke-UnknownPlatformAuth -Username [email protected] -Password Winter2026
Invoke-BruteClientIDs 函数会在 ROPC 认证期间遍历各种资源类型和客户端 ID,以查找不同客户端 ID 和资源组合的单因素访问。如果任何认证方法成功,令牌和/或 cookie 将被写入 AccessTokens.json。(目前不记录 EWS、ActiveSync 和 ADFS 的 cookie 或令牌。)
Invoke-BruteClientIDs -Username [email protected] -Password Winter2026 -VerboseOut
默认情况下,Invoke-BruteClientIDs 模块使用最常用的前 10 个资源和前 50 个客户端 ID 列表。您可以使用 -FullResourceList 和 -FullClientIdList 标志来使用内置的更大列表(514 个客户端 ID 和 54 个资源)。
Invoke-BruteClientIDs -Username [email protected] -Password Winter2026 -FullResourceList -FullClientIdList -VerboseOut