↳ GitHub sourceAnalytics ruleHigh
Whisper Security - SPF Record Unauthorized Include Detection
Description
Detects new SPF include directives on monitored domains that were not seen in the previous scan window. Unauthorized SPF modifications may allow adversaries to send phishing emails that pass SPF checks.
- Rule type
- Scheduled
- Version
- 1.0.0
- Declared status
- Available
- Query frequency
- 1h
- Query period
- 1d
- Trigger
- gt 0
Declared MITRE coverage
Declared sources
Metadata from the source file. No dependencies inferred from KQL.
Connectors
Data types
KQL query
Original query, unchanged.
// MITRE ATT&CK: T1566.001 - Phishing: Spearphishing Attachment
// Tactic: Initial Access
// Detects unauthorized SPF include directives not seen in previous scans
// Configure authorized_spf_includes with your organization's known SPF providers
let authorized_spf_includes = dynamic(["_spf.google.com", "spf.protection.outlook.com", "amazonses.com", "sendgrid.net", "mailgun.org"]);
let previousIncludes = WhisperInfraContext_CL
| where TimeGenerated between (ago(1d) .. ago(1h))
| where isnotempty(spfIncludes)
| mv-expand SpfInclude = split(spfIncludes, ",")
| extend SpfInclude = tostring(SpfInclude)
| summarize PreviousIncludes = make_set(SpfInclude) by indicator;
let currentIncludes = WhisperInfraContext_CL
| where TimeGenerated > ago(1h)
| where isnotempty(spfIncludes)
| mv-expand SpfInclude = split(spfIncludes, ",")
| extend SpfInclude = tostring(SpfInclude)
| project indicator, SpfInclude, TimeGenerated;
currentIncludes
| join kind=leftanti (previousIncludes | mv-expand PrevInclude = PreviousIncludes | extend SpfInclude = tostring(PrevInclude) | project indicator, SpfInclude) on indicator, SpfInclude
| where SpfInclude !in (authorized_spf_includes)
| project TimeGenerated, DnsDomain = indicator, UnauthorizedInclude = SpfInclude
Declared entities
Related content
Links established from declared identifiers and solution manifests.
Source provenance
GitHubDisplayed values come from files in Azure/Azure-Sentinel. They describe the published template, not your workspace configuration.
- Commit
9800e51↗- Source identifier
9c275139-b554-58f1-b390-8520b10e54ad
GSTEP / CATALOG TRACKING
Added to catalog : 16 Sept 2026 · 05:49 UTC
Last change observed : 16 Sept 2026 · 05:49 UTC