Skip to content

O365 message trace detections: support o365:graph:messagetrace (Office 365 add-on 6.x) - #4286

Open
sbaker-gre wants to merge 2 commits into
splunk:developfrom
sbaker-gre:fix/o365-messagetrace-graph-sourcetype
Open

sbaker-gre wants to merge 2 commits into
splunk:developfrom
sbaker-gre:fix/o365-messagetrace-graph-sourcetype

Conversation

@sbaker-gre

Copy link
Copy Markdown

Fixes #4285.

Splunk Add-on for Microsoft Office 365 6.x emits message trace as o365:graph:messagetrace
with camelCase fields. The four message trace detections and their macro only handled the
retired Reporting web service sourcetypes and PascalCase raw fields, so they return nothing
on a current add-on.

Changes

  • macros/o365_messagetrace.yml: add o365:graph:messagetrace.
  • Four detections switched from raw fields to the CIM fields the add-on aliases for both
    sourcetypes: Statusstatus_code, RecipientAddressrecipient,
    SenderAddresssrc_user, MessageIdmessage_id. Drilldowns updated to match.
  • Organization (absent on the Graph sourcetype) replaced with a sender-domain vs
    recipient-domain comparison in the two exfiltration-style detections.
  • Second unit test per detection using the Graph fixture from T1114 o365_suspect_email_actions: add Graph message trace fixture attack_data#1224.
    Legacy test retained to prove backward compatibility with o365:reporting:messagetrace.
  • Versions bumped.

Detections

  • O365 Email Password and Payroll Compromise Behavior
  • O365 Email Receive and Hard Delete Takeover Behavior
  • O365 Email Send and Hard Delete Exfiltration Behavior
  • O365 Email Send Attachments Excessive Volume

Verification

  • contentctl-ng build passes.
  • On live o365:graph:messagetrace data (add-on 6.0.2), all five CIM fields are populated
    on 2,000 of 2,000 sampled events. Graph status values are lowercase (delivered);
    the status_code=Delivered filter is in the base search where value matching is
    case-insensitive, so it matches both.
  • The Graph unit tests depend on the attack_data PR merging first.

🤖 Generated with Claude Code

sbaker-gre and others added 2 commits September 23, 2026 14:32
Splunk Add-on for Microsoft Office 365 6.x collects message trace through
Microsoft Graph and emits sourcetype o365:graph:messagetrace with camelCase
fields (senderAddress, recipientAddress, messageId, status) instead of the
PascalCase fields of the retired Reporting web service sourcetypes.

- Add o365:graph:messagetrace to the o365_messagetrace macro.
- Switch the four dependent detections from raw field names to the CIM
  fields the add-on aliases for both sourcetypes: status_code, recipient,
  src_user, message_id. Behaviour is unchanged on the legacy sourcetypes.
- Replace the Organization field, which the Graph sourcetype does not
  carry, with a sender-domain vs recipient-domain comparison.
- Update drilldowns to use recipient.

Affected: O365 Email Password and Payroll Compromise Behavior, O365 Email
Receive and Hard Delete Takeover Behavior, O365 Email Send and Hard Delete
Exfiltration Behavior, O365 Email Send Attachments Excessive Volume.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Second test per detection replays the same four suspect messages in the
o365:graph:messagetrace shape (companion attack_data change adds
o365_graph_messagetrace_suspect_events.log). The legacy test is kept to
prove backward compatibility with o365:reporting:messagetrace.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@sbaker-gre
sbaker-gre force-pushed the fix/o365-messagetrace-graph-sourcetype branch from c9e65bd to 1f742a2 Compare September 23, 2026 19:32
@nasbench nasbench added this to the v6.8.0 milestone Sep 23, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

O365 message trace detections do not work with Splunk Add-on for Microsoft Office 365 6.x (o365:graph:messagetrace)

2 participants