Detection rules › Splunk
O365 Email Reported By User Found Malicious
The following analytic detects when an email submitted to Microsoft using the built-in report button in Outlook is found to be malicious. This capability is an enhanced protection feature that can be used within o365 tenants by users to report potentially malicious emails. This correlation looks for any submission that returns a Phish or Malware verdict upon submission.
Known false positives
- No false positives have been identified at this time.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Initial Access |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Microsoft 365 | AlertEntityGenerated |
Rules detecting the same action
These rules filter on the same operation.
- O365 Email Suspicious Behavior Alert (Splunk)
- O365 ZAP Activity Detection (Splunk)
Rule body
name: O365 Email Reported By User Found Malicious
id: 7698b945-238e-4bb9-b172-81f5ca1685a1
version: 12
creation_date: '2024-04-07'
modification_date: '2026-05-13'
author: Steven Dick
status: production
type: TTP
description: The following analytic detects when an email submitted to Microsoft using the built-in report button in Outlook is found to be malicious. This capability is an enhanced protection feature that can be used within o365 tenants by users to report potentially malicious emails. This correlation looks for any submission that returns a Phish or Malware verdict upon submission.
data_source:
- Office 365 Universal Audit Log
search: |-
`o365_management_activity` Workload=SecurityComplianceCenter Operation=AlertEntityGenerated Name="Email reported by user as*"
| fromjson Data
| rename _raw AS temp etps AS _raw
| extract pairdelim=";" kvdelim=":"
| rename _raw AS etps temp AS _raw
| search RescanVerdict IN (Phish,Malware)
| rex field=tsd "\<(?<src_user>.+)\>"
| eval src_user = case(isnull(src_user),tsd,true(),src_user)
| rename Name as signature, AlertId as signature_id, AlertEntityId as user, tsd as sender, ms as subject
| fillnull
| stats count min(_time) as firstTime max(_time) as lastTime
BY dest user src
vendor_account vendor_product signature
signature_id src_user sender
subject
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `o365_email_reported_by_user_found_malicious_filter`
how_to_implement: You must install the Splunk Microsoft Office 365 Add-on and ingest Office 365 management activity events. You must deploy/allow the usage of the Microsoft Office Report A Message function.
known_false_positives: No false positives have been identified at this time.
references:
- https://learn.microsoft.com/en-us/microsoft-365/security/office-365-security/submissions-outlook-report-messages?view=o365-worldwide
finding:
title: The user $user$ reported an email classified from $src_user$
entity:
field: src_user
type: user
score: 50
threat_objects:
- field: subject
type: email_subject
analytic_story:
- Spearphishing Attachments
- Suspicious Emails
asset_type: O365 Tenant
mitre_attack_id:
- T1566.001
- T1566.002
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: cloud
security_domain: threat
Stages and Predicates
Stage 1: search
`o365_management_activity` Workload=SecurityComplianceCenter Operation=AlertEntityGenerated Name="Email reported by user as*"
Stage 2: search
| fromjson Data
Stage 3: rename
| rename _raw AS temp etps AS _raw
Stage 4: extract
| extract pairdelim=";" kvdelim=":"
Stage 5: rename
| rename _raw AS etps temp AS _raw
Stage 6: search
| search RescanVerdict IN (Phish,Malware)
Stage 7: rex
| rex field=tsd "\<(?<src_user>.+)\>"
Stage 8: eval
| eval src_user = case(isnull(src_user),tsd,true(),src_user)
src_user =if
isnull(src_user)tsdelse
src_userStage 9: rename
| rename Name as signature, AlertId as signature_id, AlertEntityId as user, tsd as sender, ms as subject
Stage 10: fillnull
| fillnull
Stage 11: stats
| stats count min(_time) as firstTime max(_time) as lastTime
BY dest user src
vendor_account vendor_product signature
signature_id src_user sender
subject
Stage 12: search
| `security_content_ctime(firstTime)`
Stage 13: search
| `security_content_ctime(lastTime)`
Stage 14: search
| `o365_email_reported_by_user_found_malicious_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Name | eq |
| field:"Name" kind:eq |
Operation | eq |
| field:"Operation" kind:eq value:"AlertEntityGenerated" |
RescanVerdict | in |
| field:"RescanVerdict" kind:in |
Workload | eq |
| field:"Workload" kind:eq value:"SecurityComplianceCenter" |
sourcetype | eq |
| field:"sourcetype" kind:eq value:"o365:management:activity" |
Search terms
These SPL tokens match against raw event text.
| Stage | Term |
|---|---|
| 2 | fromjson |
| 2 | Data |