Skip to content

[Rule Tuning] Suspicious Windows Powershell Arguments#6444

Open
Mikaayenson wants to merge 1 commit into
mainfrom
tuning/83bf249e-4348-47ba-9741-1202a09556ad
Open

[Rule Tuning] Suspicious Windows Powershell Arguments#6444
Mikaayenson wants to merge 1 commit into
mainfrom
tuning/83bf249e-4348-47ba-9741-1202a09556ad

Conversation

@Mikaayenson

Copy link
Copy Markdown
Contributor

Resolves elastic/ia-trade-team#1018

Removes the overly broad standalone process.args == "-e" condition which is redundant with the existing command_line pattern "* -e *" and generates false positives on data sources with incomplete command_line telemetry. Adds exclusions for benign monitoring tool patterns where ConvertTo-Csv paired with .Replace and Get-Counter paired with replace trigger the rule's broad .replace command_line match.


Full telemetry triage, analytics links, and KQL verification: see linked ia-trade-team issue.

Copilot AI review requested due to automatic review settings July 13, 2026 18:24
@Mikaayenson Mikaayenson added Rule: Tuning tweaking or tuning an existing rule genai-tradecraft labels Jul 13, 2026
@botelastic botelastic Bot added Domain: Endpoint OS: Windows windows related rules labels Jul 13, 2026
@github-actions

Copy link
Copy Markdown
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

tradebot-elastic commented Jul 13, 2026

Copy link
Copy Markdown

⛔️ Test failed

Results
  • ❌ Suspicious Windows Powershell Arguments (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR tunes the existing Windows EQL detection rule “Suspicious Windows Powershell Arguments” to reduce false positives by removing a noisy -e argument match and adding additional command-line allowlisting for known-benign patterns.

Changes:

  • Updated rule updated_date to 2026/07/13.
  • Removed the standalone process.args == "-e" condition from the suspicious-args logic.
  • Added new process.command_line allowlist patterns for ConvertTo-Csv and Get-Counter.

Comment on lines 179 to 183
"*Use-Icinga -Minimal*",
"*& {$j = sajb {Add-Type -AssemblyName*"
"*& {$j = sajb {Add-Type -AssemblyName*",
"*ConvertTo-Csv*",
"*Get-Counter*"
)
Comment on lines 169 to 172
process.args : "$*$*;set-alias" or

process.args == "-e" or

// ATHPowerShellCommandLineParameter
process.args : ("-EncodedCommandParamVariation", "-UseEncodedArguments", "-CommandParamVariation") or
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport: auto Domain: Endpoint genai-tradecraft 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