Detection rules › Kusto
Cisco Duo - Unexpected authentication factor
'Detects when unexpected authentication factor used.'
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Initial Access |
Rule body
id: 16c91a2c-17ad-4985-a9ad-4a4f1cb11830
name: Cisco Duo - Unexpected authentication factor
description: |
'Detects when unexpected authentication factor used.'
severity: Medium
status: Available
requiredDataConnectors:
- connectorId: CiscoDuoAuthConnectorDefinition
dataTypes:
- DuoAuthentication_CL
queryFrequency: 1h
queryPeriod: 1h
triggerOperator: gt
triggerThreshold: 0
tactics:
- InitialAccess
relevantTechniques:
- T1078
query: |
let allowed_auth_f = dynamic(['duo_push', 'duo_mobile_passcode']);
DuoAuthentication_CL
| where Result =~ 'success'
| where Factor !in~ (allowed_auth_f)
| extend IPCustomEntity = AccessDeviceIp, AccountCustomEntity = UserName
entityMappings:
- entityType: IP
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
- entityType: Account
fieldMappings:
- identifier: Name
columnName: AccountCustomEntity
version: 1.0.1
kind: Scheduled
Stages and Predicates
Parameters
let allowed_auth_f = dynamic(['duo_push', 'duo_mobile_passcode']);
Stage 1: source
DuoAuthentication_CL
Stage 2: where
| where Result =~ 'success'
Stage 3: where
| where Factor !in~ (allowed_auth_f)
Stage 4: extend
| extend IPCustomEntity = AccessDeviceIp, AccountCustomEntity = UserName
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
Factor | in | duo_mobile_passcode, duo_push | excludes:Factor field:"Factor" value:"duo_mobile_passcode" field:"Factor" value:"duo_push" |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Result | eq |
| field:"Result" kind:eq value:"success" |
Output fields
These fields are emitted when the rule matches.
| Field | Source |
|---|---|
AccountCustomEntity | extend |
IPCustomEntity | extend |