Suspicious Key Vault Enumeration or Reads
Description
Counts Key Vault secret, key, and certificate enumeration and read activities for each account. Enumeration includes listing objects, versions, and deleted objects. Use the counts and number of distinct vaults to identify unusual activity, then investigate the individual events and the account's expected responsibilities.
Query · kql
// Adjust thresholds based on your own environment
let KeyVaultThreshold = 3;
let SecretReadActivitiesThreshold = 1;
let EnumerationActivitiesThreshold = 1;
let TimeFrame = 3h;
let EnumerationActivities = dynamic([
"SecretList",
"SecretListVersions",
"SecretListDeleted",
"KeyList",
"KeyListVersions",
"KeyListDeleted",
"CertificateList",
"CertificateListVersions",
"CertificateListDeleted"
]);
let ReadActivities = dynamic([
"SecretGet",
"KeyGet",
"CertificateGet"
]);
CloudKeyVaultEvents
| where ActivityName in~ (EnumerationActivities) or ActivityName in~ (ReadActivities)
| summarize Total = count(), UniqueKeyVaults = dcount(AzureResourceId), TotalEnumerationActivities = countif(ActivityName in~ (EnumerationActivities)), TotalReadActivities = countif(ActivityName in~ (ReadActivities)) by AccountObjectId, AccountType, bin(TimeGenerated, TimeFrame)
| where UniqueKeyVaults >= KeyVaultThreshold and TotalEnumerationActivities >= EnumerationActivitiesThreshold and TotalReadActivities >= SecretReadActivitiesThreshold