Detection rules › Kusto
EatonForeseer - Unauthorized Logins
Detects Unauthorized Logins into Eaton Foreseer
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Initial Access |
Telemetry coverage
Rule body
id: 5a7fccb8-3ed0-44f2-8477-540af3ef4d92
name: EatonForeseer - Unauthorized Logins
description: |
'Detects Unauthorized Logins into Eaton Foreseer'
severity: High
status: Available
requiredDataConnectors:
- connectorId: WindowsSecurityEvents
dataTypes:
- SecurityEvent
queryFrequency: 15m
queryPeriod: 15m
triggerOperator: gt
triggerThreshold: 0
tactics:
- InitialAccess
relevantTechniques:
- T1078
query: |
SecurityEvent
// Look for all events relating to user logins
| where EventID in (4624,4625,4648,4675,4634,4647)
| where AccountType == "User"
// Filter for data present
| where isnotempty(TargetUserName)
// Look for all events that relate to the Eaton Foreseer application
| where ProcessName has "Foreseer"
// Ignore known user accounts (please edit based on your allowed users)
| where TargetUserName !in ("janedoe", "johndoe")
// De-duplicate multiple entries for the same user accessing a particular device
| summarize TimeGenerated=arg_min(TimeGenerated, *) by TargetUserName, Computer
| project
TimeGenerated,
IPCustomEntity = IpAddress,
HostCustomEntity = Computer,
UserEntity = TargetUserName,
Process,
ProcessName
entityMappings:
- entityType: IP
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
- entityType: Account
fieldMappings:
- identifier: Name
columnName: UserEntity
- entityType: Host
fieldMappings:
- identifier: HostName
columnName: HostCustomEntity
- entityType: Process
fieldMappings:
- identifier: CommandLine
columnName: Process
version: 1.0.0
kind: Scheduled
Stages and Predicates
Stage 1: source
SecurityEvent
Stage 2: where
| where EventID in (4624,4625,4648,4675,4634,4647)
Stage 3: where
| where AccountType == "User"
Stage 4: where
| where isnotempty(TargetUserName)
Stage 5: where
| where ProcessName has "Foreseer"
Stage 6: where
| where TargetUserName !in ("janedoe", "johndoe")
Stage 7: summarize
| summarize TimeGenerated=arg_min(TimeGenerated, *) by TargetUserName, Computer
Stage 8: project
| project
TimeGenerated,
IPCustomEntity = IpAddress,
HostCustomEntity = Computer,
UserEntity = TargetUserName,
Process,
ProcessName
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
TargetUserName | in | janedoe, johndoe | excludes:TargetUserName field:"TargetUserName" value:"janedoe" field:"TargetUserName" value:"johndoe" |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
AccountType | eq |
| field:"AccountType" kind:eq value:"User" |
EventID | in |
| field:"EventID" kind:in |
ProcessName | match |
| field:"process_name" kind:match value:"Foreseer" |
TargetUserName | is_not_null | field:"TargetUserName" kind:is_not_null |
Output fields
These fields are emitted when the rule matches.
| Field | Source |
|---|---|
HostCustomEntity | project |
IPCustomEntity | project |
Process | project |
ProcessName | project |
TimeGenerated | project |
UserEntity | project |