Mitre Attack Tactics Observed


Events mapped against MITRE ATT&CK Tactics that have been observed in the environment, with percentage of total.

KQL Library  /  MITRE ATT&CK

 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.

 Download .kql
// 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