MITRE ATT&CK
mitre-attack-tactics-observed.kql
Events mapped against MITRE ATT&CK Tactics that have been observed in the environment, with percentage of total.
// Author: Ian D. Hanley (DevSecOpsDad) | linkedin.com/in/ianhanley | devsecopsdad.com | devsecopsdadattack.com
// This query identifies events mapped against the MITRE ATT&CK Matrix that have been observed in the environment
let totalCount = toscalar(
SecurityAlert
| where TimeGenerated > ago(90d)
| where isnotempty(Tactics)
| mv-expand tactic = split(Tactics, ", ")
| summarize Total = count()
);
SecurityAlert
| where TimeGenerated > ago(90d)
| where isnotempty(Tactics)
| mv-expand tactic = split(Tactics, ", ")
| summarize Count = count() by tostring(tactic)
| extend Percentage = strcat(round(Count * 100.0 / totalCount, 2), '%')
| extend TacticEmoji = case(
tactic == "InitialAccess",
"🚪",
tactic == "Execution",
"💥",
tactic == "Persistence",
"📌",
tactic == "PrivilegeEscalation",
"🚀",
tactic == "DefenseEvasion",
"🕵️",
tactic == "CredentialAccess",
"🔑",
tactic == "Discovery",
"🔍",
tactic == "LateralMovement",
"🔄",
tactic == "Collection",
"📂",
tactic == "Exfiltration",
"📤",
tactic == "Impact",
"⚡",
tactic == "CommandAndControl",
"📡",
"❓" // Default emoji for unknown tactics
)
| project Tactic = strcat(TacticEmoji, " ", tactic), Count, Percentage
| sort by Count desc
| top 10 by Count