Skip to content

Conversation

w0rk3r
Copy link
Contributor

@w0rk3r w0rk3r commented Aug 27, 2025

Issue

Related (but not limited) to https://github.com/elastic/ia-trade-team/issues/498

Summary

This PR is part of a series that adds compatibility for additional data sources, including CrowdStrike, SentinelOne, Microsoft Defender for Endpoint, Endgame, and Sysmon.

To review this PR, you can use the EDR Field Compatibility Matrix, which details field compatibility for each event.category across EDR data sources.

Some changes go beyond metadata and include logic updates to optimize, simplify, or account for differences between data sources (For example, CrowdStrike uses NT Object paths for Windows paths instead of drive letters.). Please review these cases with extra attention, and don’t hesitate to ask questions.

@w0rk3r w0rk3r self-assigned this Aug 27, 2025
@w0rk3r w0rk3r added Rule: Tuning tweaking or tuning an existing rule OS: Windows windows related rules Domain: Endpoint backport: auto labels Aug 27, 2025
Copy link
Contributor

Rule: Tuning - Guidelines

These guidelines serve as a reminder set of considerations when tuning an existing rule.

Documentation and Context

  • Detailed description of the suggested changes.
  • Provide example JSON data or screenshots.
  • Provide evidence of reducing benign events mistakenly identified as threats (False Positives).
  • Provide evidence of enhancing detection of true threats that were previously missed (False Negatives).
  • Provide evidence of optimizing resource consumption and execution time of detection rules (Performance).
  • Provide evidence of specific environment factors influencing customized rule tuning (Contextual Tuning).
  • Provide evidence of improvements made by modifying sensitivity by changing alert triggering thresholds (Threshold Adjustments).
  • Provide evidence of refining rules to better detect deviations from typical behavior (Behavioral Tuning).
  • Provide evidence of improvements of adjusting rules based on time-based patterns (Temporal Tuning).
  • Provide reasoning of adjusting priority or severity levels of alerts (Severity Tuning).
  • Provide evidence of improving quality integrity of our data used by detection rules (Data Quality).
  • Ensure the tuning includes necessary updates to the release documentation and versioning.

Rule Metadata Checks

  • updated_date matches the date of tuning PR 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. Review to ensure the original intent of the rule is maintained.

Testing and Validation

  • Validate that the tuned rule's performance is satisfactory and does not negatively impact the stack.
  • Ensure that the tuned rule has a low false positive rate.

@tradebot-elastic
Copy link

tradebot-elastic commented Aug 27, 2025

⛔️ Test failed

Results
  • ✅ Renamed Utility Executed with Short Program Name (eql)
  • ❌ Script Execution via Microsoft HTML Application (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Potential Secure File Deletion via SDelete Utility (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ SolarWinds Process Disabling Services via Registry (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ SIP Provider Modification (eql)
    • stack_validation_failed: no_alerts - 0 alerts

@@ -1,8 +1,8 @@
[metadata]
creation_date = "2020/09/09"
integration = ["windows", "system", "sentinel_one_cloud_funnel", "m365_defender"]
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
integration = ["windows", "system", "sentinel_one_cloud_funnel", "m365_defender"]
integration = ["endpoint", "windows", "system", "sentinel_one_cloud_funnel", "m365_defender"]

Copy link
Contributor

Choose a reason for hiding this comment

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

FYI CS can also be added by making the exclusion by parent.executable optional this rule is related to one of the top TTPs https://github.com/elastic/detection-rules/pull/5001/files#diff-8c40e59c5638910d4a38ec146c0076b58f27eddc05eca33cae6bed157b3baf84R3 (should be addressed by this PR)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

As the changes doesn't conflict between our PRs, I'll keep this one as is and we can add Defend and CS at yours

Comment on lines -93 to -97
registry.path : (
"HKLM\\SYSTEM\\*ControlSet*\\Services\\*\\Start",
"\\REGISTRY\\MACHINE\\SYSTEM\\*ControlSet*\\Services\\*\\Start",
"MACHINE\\SYSTEM\\*ControlSet*\\Services\\*\\Start"
) and
Copy link
Contributor

Choose a reason for hiding this comment

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

@w0rk3r CS regmod paths is \\REGISTRY\\MACHINE\\SYSTEM\\* why remove this in favor of a generic wildcard?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

To simplify the query, unless this could cause any FPs. Performance should be similar or better as doing multiple wildcards 3 times should be expensive

[metadata]
creation_date = "2020/11/15"
integration = ["endpoint", "windows", "m365_defender"]
integration = ["endpoint", "windows", "m365_defender", "crowdstrike"]
Copy link
Contributor

Choose a reason for hiding this comment

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

@w0rk3r I would suggest to also add sentinel1 and 4688 compat here by removing this sub-condition from the query length(process.pe.original_file_name) > 5 (any short program like a.exe is suspicious)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Maybe this is better as a separated rule? Sounds like a diff logic

@tradebot-elastic
Copy link

tradebot-elastic commented Aug 28, 2025

⛔️ Test failed

Results
  • ✅ Renamed Utility Executed with Short Program Name (eql)
  • ❌ Script Execution via Microsoft HTML Application (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Potential Secure File Deletion via SDelete Utility (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ SolarWinds Process Disabling Services via Registry (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ SIP Provider Modification (eql)
    • stack_validation_failed: no_alerts - 0 alerts

@w0rk3r w0rk3r merged commit 48dfb75 into main Aug 28, 2025
16 of 17 checks passed
@w0rk3r w0rk3r deleted the 3rd_party_edr_7 branch August 28, 2025 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport: auto Domain: Endpoint OS: Windows windows related rules Rule: Tuning tweaking or tuning an existing rule

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants