Skip to content

[New Rule] Threat Intelligence Signal - Microsoft Defender for Office 365 #4994

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

terrancedejesus
Copy link
Contributor

@terrancedejesus terrancedejesus commented Aug 19, 2025

Pull Request

Issue link(s):

Summary - What I changed

Adds a rule to promotion threat intel signals reported by Microsoft Defender for Office 365 via M365 audit logs. These were captured during Direct Send emulations for SPF failures. Signals should include, but not be limited to, phishing emails. Please see meta linked to related issue for more details on emulation and findings. No investigation fields were added as signals may change depending on behavior identified. Investigation guide will be GenAI populated as this is not specific behavior.

Note there are no specific "message" fields to override the rule name with or severity/risk fields either therefore these were not included. Since results may vary, I plan to monitor this rule over the next several weeks and adjust as necessary based on results.

How To Test

  • Query from rule can be used in TRADE serverless stack +30 days.

Checklist

  • Added a label for the type of pr: bug, enhancement, schema, maintenance, Rule: New, Rule: Deprecation, Rule: Tuning, Hunt: New, or Hunt: Tuning so guidelines can be generated
  • Added the meta:rapid-merge label if planning to merge within 24 hours
  • Secret and sensitive material has been managed correctly
  • Automated testing was updated or added to match the most common scenarios
  • Documentation and comments were added for features that require explanation

Contributor checklist

Copy link
Contributor

Rule: New - Guidelines

These guidelines serve as a reminder set of considerations when proposing a new rule.

Documentation and Context

  • Detailed description of the rule.
  • List any new fields required in ECS/data sources.
  • Link related issues or PRs.
  • Include references.

Rule Metadata Checks

  • creation_date matches the date of creation PR initially merged.
  • min_stack_version should support the widest stack versions.
  • name and description should be descriptive and not include typos.
  • query should be inclusive, not overly exclusive, considering performance for diverse environments. Non ecs fields should be added to non-ecs-schema.json if not available in an integration.
  • min_stack_comments and min_stack_version should be included if the rule is only compatible starting from a specific stack version.
  • index pattern should be neither too specific nor too vague, ensuring it accurately matches the relevant data stream (e.g., use logs-endpoint.process-* for process data).
  • integration should align with the index. If the integration is newly introduced, ensure the manifest, schemas, and new_rule.yaml template are updated.
  • setup should include the necessary steps to configure the integration.
  • note should include any additional information (e.g. Triage and analysis investigation guides, timeline templates).
  • tags should be relevant to the threat and align/added to the EXPECTED_RULE_TAGS in the definitions.py file.
  • threat, techniques, and subtechniques should map to ATT&CK always if possible.

New BBR Rules

  • building_block_type should be included if the rule is a building block and the rule should be located in the rules_building_block folder.
  • bypass_bbr_timing should be included if adding custom lookback timing to the rule.

Testing and Validation

  • Provide evidence of testing and detecting the expected threat.
  • Check for existence of coverage to prevent duplication.

@terrancedejesus terrancedejesus marked this pull request as ready for review August 19, 2025 14:29
@terrancedejesus terrancedejesus marked this pull request as draft August 19, 2025 14:35
Comment on lines +48 to +53
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1566"
name = "Phishing"
reference = "https://attack.mitre.org/techniques/T1566/"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this true for all generated signals?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

type = "query"

query = '''
event.dataset: "o365.audit" and event.code: "ThreatIntelligence"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to adjust this event in the integrations to gave event.kind set to alert, so we automatically push an alert for it using the default promotion rule?

Copy link
Contributor Author

@terrancedejesus terrancedejesus Aug 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great question. Honestly I do not see why not other than keeping them separate for our visibility. Checking telemetry, I see we have several promotions for compliance related alerts. Based on docs from MSFT, this seems to be a good fit for adjusting event.kind to alert. The only other consideration is max signals for external alerts and potentially missing these if the threshold is hit because of compliance related alerts that are noisy. I'd rather keep separate as a rule.

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.

[New Rule] Threat Intelligence Signal - Microsoft Defender for Office 365
3 participants