Back
Idda243bf4-382b-46b9-9b4d-ce6ffe9e7beb
RulenameAbnormal Security - Account Takeover case opened
DescriptionCreates an incident when Abnormal Security opens an Account Takeover (ATO) case,

indicating a mailbox or user account is suspected to be compromised. The ATO case

severity, status, and observed indicators are surfaced for triage.
SeverityHigh
TacticsInitialAccess
CredentialAccess
TechniquesT1078
T1110
Required data connectorsAbnormalSecurityPush
KindScheduled
Query frequency1h
Query period1h
Trigger threshold0
Trigger operatorgt
Source Urihttps://github.com/Azure/Azure-Sentinel/blob/master/Solutions/AbnormalSecurity/Analytic%20Rules/AbnormalSecurity_AccountTakeover.yaml
Version1.0.0
Arm templateda243bf4-382b-46b9-9b4d-ce6ffe9e7beb.json
Deploy To Azure
ABNORMAL_SECURITY_ATO_CASE_CL
| where isnotempty(abx_body_abx_body_ato_case_id_s)
// Collapse to one row per ATO case (earliest event in the window) so repeated
// events for the same case do not raise duplicate alerts.
| summarize arg_min(TimeGenerated, *) by CaseId = abx_body_abx_body_ato_case_id_s
| extend
    CompromisedAccount = abx_body_abx_body_compromised_account_s,
    CaseSeverity = abx_body_abx_body_severity_s,
    CaseStatus = abx_body_abx_body_status_s,
    Indicators = abx_body_abx_body_indicators_s,
    FirstDetected = abx_body_abx_body_first_detected_t
| project TimeGenerated, CompromisedAccount, CaseId, CaseSeverity, CaseStatus, Indicators, FirstDetected
incidentConfiguration:
  groupingConfiguration:
    matchingMethod: AllEntities
    enabled: true
    lookbackDuration: PT5H
    reopenClosedIncident: false
  createIncident: true
triggerOperator: gt
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/AbnormalSecurity/Analytic%20Rules/AbnormalSecurity_AccountTakeover.yaml
triggerThreshold: 0
id: da243bf4-382b-46b9-9b4d-ce6ffe9e7beb
suppressionEnabled: false
kind: Scheduled
relevantTechniques:
- T1078
- T1110
version: 1.0.0
tactics:
- InitialAccess
- CredentialAccess
queryPeriod: 1h
queryFrequency: 1h
alertDetailsOverride:
  alertDescriptionFormat: Abnormal Security opened ATO case {{CaseId}} (severity {{CaseSeverity}}) for the compromised account {{CompromisedAccount}}.
  alertDisplayNameFormat: 'Abnormal Security: Account Takeover case for {{CompromisedAccount}}'
severity: High
name: Abnormal Security - Account Takeover case opened
customDetails:
  CaseSeverity: CaseSeverity
  AtoCaseId: CaseId
  CaseStatus: CaseStatus
requiredDataConnectors:
- connectorId: AbnormalSecurityPush
  dataTypes:
  - ABNORMAL_SECURITY_ATO_CASE_CL
entityMappings:
- entityType: Account
  fieldMappings:
  - identifier: FullName
    columnName: CompromisedAccount
description: |
  'Creates an incident when Abnormal Security opens an Account Takeover (ATO) case,
  indicating a mailbox or user account is suspected to be compromised. The ATO case
  severity, status, and observed indicators are surfaced for triage.'
eventGroupingSettings:
  aggregationKind: AlertPerResult
status: Available
query: |
  ABNORMAL_SECURITY_ATO_CASE_CL
  | where isnotempty(abx_body_abx_body_ato_case_id_s)
  // Collapse to one row per ATO case (earliest event in the window) so repeated
  // events for the same case do not raise duplicate alerts.
  | summarize arg_min(TimeGenerated, *) by CaseId = abx_body_abx_body_ato_case_id_s
  | extend
      CompromisedAccount = abx_body_abx_body_compromised_account_s,
      CaseSeverity = abx_body_abx_body_severity_s,
      CaseStatus = abx_body_abx_body_status_s,
      Indicators = abx_body_abx_body_indicators_s,
      FirstDetected = abx_body_abx_body_first_detected_t
  | project TimeGenerated, CompromisedAccount, CaseId, CaseSeverity, CaseStatus, Indicators, FirstDetected
suppressionDuration: PT5H
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspace": {
      "type": "String"
    }
  },
  "resources": [
    {
      "apiVersion": "2024-01-01-preview",
      "id": "[concat(resourceId('Microsoft.OperationalInsights/workspaces/providers', parameters('workspace'), 'Microsoft.SecurityInsights'),'/alertRules/da243bf4-382b-46b9-9b4d-ce6ffe9e7beb')]",
      "kind": "Scheduled",
      "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/da243bf4-382b-46b9-9b4d-ce6ffe9e7beb')]",
      "properties": {
        "alertDetailsOverride": {
          "alertDescriptionFormat": "Abnormal Security opened ATO case {{CaseId}} (severity {{CaseSeverity}}) for the compromised account {{CompromisedAccount}}.",
          "alertDisplayNameFormat": "Abnormal Security: Account Takeover case for {{CompromisedAccount}}"
        },
        "alertRuleTemplateName": "da243bf4-382b-46b9-9b4d-ce6ffe9e7beb",
        "customDetails": {
          "AtoCaseId": "CaseId",
          "CaseSeverity": "CaseSeverity",
          "CaseStatus": "CaseStatus"
        },
        "description": "'Creates an incident when Abnormal Security opens an Account Takeover (ATO) case,\nindicating a mailbox or user account is suspected to be compromised. The ATO case\nseverity, status, and observed indicators are surfaced for triage.'\n",
        "displayName": "Abnormal Security - Account Takeover case opened",
        "enabled": true,
        "entityMappings": [
          {
            "entityType": "Account",
            "fieldMappings": [
              {
                "columnName": "CompromisedAccount",
                "identifier": "FullName"
              }
            ]
          }
        ],
        "eventGroupingSettings": {
          "aggregationKind": "AlertPerResult"
        },
        "incidentConfiguration": {
          "createIncident": true,
          "groupingConfiguration": {
            "enabled": true,
            "lookbackDuration": "PT5H",
            "matchingMethod": "AllEntities",
            "reopenClosedIncident": false
          }
        },
        "OriginalUri": "https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/AbnormalSecurity/Analytic%20Rules/AbnormalSecurity_AccountTakeover.yaml",
        "query": "ABNORMAL_SECURITY_ATO_CASE_CL\n| where isnotempty(abx_body_abx_body_ato_case_id_s)\n// Collapse to one row per ATO case (earliest event in the window) so repeated\n// events for the same case do not raise duplicate alerts.\n| summarize arg_min(TimeGenerated, *) by CaseId = abx_body_abx_body_ato_case_id_s\n| extend\n    CompromisedAccount = abx_body_abx_body_compromised_account_s,\n    CaseSeverity = abx_body_abx_body_severity_s,\n    CaseStatus = abx_body_abx_body_status_s,\n    Indicators = abx_body_abx_body_indicators_s,\n    FirstDetected = abx_body_abx_body_first_detected_t\n| project TimeGenerated, CompromisedAccount, CaseId, CaseSeverity, CaseStatus, Indicators, FirstDetected\n",
        "queryFrequency": "PT1H",
        "queryPeriod": "PT1H",
        "severity": "High",
        "status": "Available",
        "subTechniques": [],
        "suppressionDuration": "PT5H",
        "suppressionEnabled": false,
        "tactics": [
          "CredentialAccess",
          "InitialAccess"
        ],
        "techniques": [
          "T1078",
          "T1110"
        ],
        "templateVersion": "1.0.0",
        "triggerOperator": "GreaterThan",
        "triggerThreshold": 0
      },
      "type": "Microsoft.OperationalInsights/workspaces/providers/alertRules"
    }
  ]
}