Detect Multi-Factor Authentication in Microsoft Sentinel
Adversaries may disable or modify multi-factor authentication (MFA) mechanisms to enable persistent access to compromised accounts. Methods include: excluding users from Azure AD Conditional Access Policies, registering adversary-controlled MFA methods (Scattered Spider), modifying Windows hosts file to redirect MFA server calls to localhost causing fail-open behavior (CISA AA22-074A), using AADInternals Set-AADIntUserMFA to disable MFA, and modifying SLOWPULSE to bypass RADIUS/ACE 2FA. Detection focuses on MFA configuration changes in identity provider audit logs.
MITRE ATT&CK
- Technique
- T1556 Modify Authentication Process
- Sub-technique
- T1556.006 Multi-Factor Authentication
- Canonical reference
- https://attack.mitre.org/techniques/T1556/006/
KQL Detection Query
let MFADisableEvents = AuditLogs
| where TimeGenerated > ago(24h)
| where OperationName in~ (
"Disable StrongAuthentication",
"Update user",
"User registered security info",
"User deleted security info",
"Admin deleted security info",
"Admin disabled MFA",
"Update per-user MFA"
)
| where ResultDescription has_any ("StrongAuthenticationRequirement", "MFA", "authenticator", "phone")
or OperationName has_any ("StrongAuthentication", "MFA")
| extend Actor = tostring(InitiatedBy.user.userPrincipalName)
| extend TargetUser = tostring(TargetResources[0].userPrincipalName)
| project TimeGenerated, OperationName, ResultDescription, Actor, TargetUser, Result;
let ConditionalAccessModification = AuditLogs
| where TimeGenerated > ago(24h)
| where LoggedByService =~ "Conditional Access"
| where OperationName in~ ("Add conditional access policy", "Update conditional access policy", "Delete conditional access policy")
| extend Actor = tostring(InitiatedBy.user.userPrincipalName)
| extend PolicyName = tostring(TargetResources[0].displayName)
| project TimeGenerated, OperationName, PolicyName, Actor, Result;
union MFADisableEvents, ConditionalAccessModification
| sort by TimeGenerated desc Detects MFA disabling and Conditional Access Policy modifications via Microsoft Entra ID (Azure AD) Audit Logs. Monitors for operations that disable MFA for users, delete registered MFA methods, and create/modify/delete Conditional Access Policies that may weaken authentication requirements.
Data Sources
Required Tables
False Positives & Tuning
- IT helpdesk disabling MFA for a user who lost their authenticator device — should be documented in a change ticket
- MFA method registration by legitimate users adding a new phone or authenticator app
- Conditional Access Policy updates by authorized administrators during planned policy reviews
- Automated user lifecycle management systems that temporarily suspend MFA during account provisioning
Other platforms for T1556.006
Testing Methodology
Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Disable MFA for a User via Microsoft Graph API
Expected signal: Azure AD Audit Log: OperationName 'User deleted security info' or 'Update user' with StrongAuthenticationRequirement modification. Graph API call logged in Azure AD diagnostic logs. PowerShell ScriptBlock Log Event ID 4104.
- Test 2Add Trusted Location to Conditional Access Policy
Expected signal: Azure AD Audit Log: OperationName 'Add named location' with the new IP range visible in audit details. Azure AD Audit Log: If location is then added as exclusion to a CA policy, OperationName 'Update conditional access policy'.
- Test 3Modify Windows Hosts File to Redirect MFA Server (CISA AA22-074A Pattern)
Expected signal: Sysmon Event ID 11 (File Create/Modify): TargetFilename=C:\Windows\System32\drivers\etc\hosts, initiated by powershell.exe. Windows Defender may alert on hosts file modification. Security Event ID 4663 if file auditing is enabled.
References (6)
- https://attack.mitre.org/techniques/T1556/006/
- https://www.cisa.gov/uscert/ncas/alerts/aa22-074a
- https://www.mandiant.com/media/17826
- https://docs.microsoft.com/en-us/azure/active-directory/governance/conditional-access-exclusion
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1556.006/T1556.006.md
- https://www.microsoft.com/en-us/security/blog/2022/10/25/microsoft-incident-response-tips-for-managing-a-phishing-crisis/
Unlock Pro Content
Get the full detection package for T1556.006 including response playbook, investigation guide, and atomic red team tests.