Spam Detections by Detection technology
Description
This query visualises total emails with Spam detections over time by various Spam Detection technologies/controls.
Query · kql
//This query visualises total emails with Spam detections over time summarizing the data daily by various Spam Detection technologies/controls in Microsoft Defender for Office 365. let minTime = startofday(ago(30d)); // last 30 days by default, replace 30d with the desired period let maxTime = startofday(now()); let baseQuery = EmailEvents | where DetectionMethods has "Spam" | where Timestamp >= minTime; let ml=baseQuery | where Timestamp >= minTime | project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) | where Spam has 'Advanced filter' | make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d | extend Details = "Advanced filter"; let gf=baseQuery | where Timestamp >= minTime | project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) | where Spam has 'General filter' | make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d | extend Details = "General filter"; let bl=baseQuery | where Timestamp >= minTime | project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) | where Spam has 'BulkFilter' | make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d | extend Details = "BulkFilter"; let mx=baseQuery | where Timestamp >= minTime | project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) | where Spam has 'Mixed analysis detection' | make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d | extend Details = "Mixed analysis detection"; let frp=baseQuery | where Timestamp >= minTime | project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) | where Spam has 'Fingerprint matching' | make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d | extend Details = "Fingerprint matching"; let umr=baseQuery | where Timestamp >= minTime | project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) | where Spam has 'URL malicious reputation' | make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d | extend Details = "URL malicious reputation"; let dr=baseQuery | where Timestamp >= minTime | project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) | where Spam has 'Domain reputation' | make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d | extend Details = "Domain reputation"; let ipr=baseQuery | where Timestamp >= minTime | project Timestamp,RecipientEmailAddress,NetworkMessageId, DT=parse_json(DetectionMethods) | evaluate bag_unpack(DT) | where Spam has 'IP reputation' | make-series Count= count() default = 0 on Timestamp from minTime to maxTime step 1d | extend Details = "IP reputation"; union ml,gf,bl,mx,frp,umr,dr,ipr | project Count, Details, Timestamp | render timechart