Query Details

Identity Risky Signin Followedby Admin MFA Change

Query

//Detects when a user has a medium or high risk sign in followed by that user successfully registering MFA on another user within 4 hours
//This may detect an adversary registering MFA on behalf of your users using a compromised admin account

//Data connector required for this query - Azure Active Directory - Signin Logs
//Data connector required for this query - Azure Active Directory - Audit Logs

SigninLogs
| where RiskLevelDuringSignIn in~ ("medium", "high")
| project
    ['Risky Signin Time']=TimeGenerated,
    UserPrincipalName,
    SigninIP=IPAddress,
    RiskLevelDuringSignIn,
    RiskEventTypes,
    SigninResult=ResultType
| join kind=inner (
    AuditLogs
    | where OperationName == "Admin registered security info" and Result == "success"
    | extend Actor = tostring(parse_json(tostring(InitiatedBy.user)).userPrincipalName)
    | extend Target = tostring(TargetResources[0].userPrincipalName)
    | project
        ['MFA Change Time']=TimeGenerated,
        OperationName,
        ResultReason,
        Actor,
        Target,
        TargetResources
    )
    on $left.UserPrincipalName == $right.Actor
| where ['MFA Change Time'] between (['Risky Signin Time'] .. timespan(4h))
| project
    ['Risky Signin Time'],
    ['MFA Change Time'],
    Actor,
    Target,
    SigninIP,
    SigninResult,
    OperationName,
    ResultReason,
    TargetResources

Explanation

This query detects when a user has a medium or high risk sign-in event, followed by that user successfully registering multi-factor authentication (MFA) on another user within 4 hours. It is used to identify potential adversaries who may be registering MFA on behalf of your users using a compromised admin account. The query requires data connectors for Azure Active Directory - Signin Logs and Azure Active Directory - Audit Logs. It retrieves information such as the risky sign-in time, user principal name, sign-in IP address, risk level during sign-in, risk event types, sign-in result, MFA change time, operation name, result reason, actor, target, and target resources.

Details

Matt Zorich profile picture

Matt Zorich

Released: August 30, 2023

Tables

SigninLogsAuditLogs

Keywords

SigninLogs,RiskLevelDuringSignIn,TimeGenerated,UserPrincipalName,SigninIP,RiskEventTypes,SigninResult,AuditLogs,OperationName,Result,Actor,Target,TargetResources,MFAChangeTime

Operators

wherein~projectjoinkind=innerwhereextendprojectonwherebetweenproject

Actions