T1556.006 Sumo Logic CSE · Sumo

Detect Multi-Factor Authentication in Sumo Logic CSE

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

Tactic
Credential Access Defense Evasion Persistence
Technique
T1556 Modify Authentication Process
Sub-technique
T1556.006 Multi-Factor Authentication
Canonical reference
https://attack.mitre.org/techniques/T1556/006/

Sumo Detection Query

Sumo Logic CSE (Sumo)
sql
(_sourceCategory="azure/auditlogs" OR _sourceCategory="o365/audit" OR _sourceCategory=*azure*audit*)
| json field=_raw "operationName" as OperationName nodrop
| json field=_raw "Operation" as O365Operation nodrop
| eval operation = if(!isNull(OperationName) && OperationName != "", OperationName, O365Operation)
| where operation matches /(?i)(Disable.*StrongAuth|.*StrongAuth.*Disable|User.*(registered|deleted).*security.*info|Admin.*(deleted|disabled).*(security.*info|MFA)|Update.*per-user.*MFA|Add.*conditional.*access.*policy|Update.*conditional.*access.*policy|Delete.*conditional.*access.*policy)/
| json field=_raw "properties.initiatedBy.user.userPrincipalName" as AzureActor nodrop
| json field=_raw "properties.initiatedBy.app.displayName" as ServiceActor nodrop
| json field=_raw "UserId" as O365Actor nodrop
| eval Actor = if(!isNull(AzureActor) && AzureActor != "", AzureActor, if(!isNull(O365Actor) && O365Actor != "", O365Actor, ServiceActor))
| json field=_raw "properties.targetResources[0].userPrincipalName" as AzureTarget nodrop
| json field=_raw "ObjectId" as O365Target nodrop
| eval Target = if(!isNull(AzureTarget) && AzureTarget != "", AzureTarget, O365Target)
| json field=_raw "properties.result" as AzureResult nodrop
| json field=_raw "ResultStatus" as O365Result nodrop
| eval Result = if(!isNull(AzureResult), AzureResult, O365Result)
| eval Risk = if(operation matches /(?i)(Disable.*MFA|Admin.*disable.*MFA|Admin.*deleted.*security.*info)/, "HIGH",
               if(operation matches /(?i)(User.*deleted.*security.*info|Remove.*authenticat)/, "HIGH",
                 if(operation matches /(?i)(conditional.*access.*policy|Update.*conditional)/, "MEDIUM",
                   "LOW")))
| fields _messageTime, Actor, Target, operation, Result, Risk
| sort by _messageTime desc
high severity high confidence

Detects MFA configuration changes and Conditional Access policy modifications from Azure AD and M365 audit logs in Sumo Logic. Handles both Azure Monitor-formatted audit logs and Office 365 Management Activity API log shapes, normalising actor and target fields across both sources.

Data Sources

Azure Active Directory Audit Logs via Azure MonitorMicrosoft Office 365 Management Activity API

Required Tables

azure/auditlogso365/audit

False Positives & Tuning

  • Self-service MFA registration campaigns where large user populations enrol new security info methods simultaneously, generating high event volume with legitimate registrations
  • Conditional Access policy bulk updates applied programmatically during approved change windows by identity engineering teams using the Microsoft Graph API
  • Azure AD B2C or external identity provider federation configuration changes that generate 'Update user' events containing StrongAuthentication payloads during initial federation setup
Download portable Sigma rule (.yml)

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.

  1. 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.

  2. 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'.

  3. 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.

Unlock Pro Content

Get the full detection package for T1556.006 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections