Skip to content

Conversation

@Samirbous
Copy link
Contributor

@Samirbous Samirbous commented Dec 11, 2025

#1 Multiple Logon Failure from the same Source Address: converted to ES|QL and raised the threshold to 100 failed auths, alert quality should be better since it aggregates all failed auths info into one alert vs multiple EQL matches. (expected reduction more than 50%)

#2 Privileged Account Brute Force - coverted to ESQL and set the threshold to 50 in a minute. this should drop noise volume by more than 50%.

#3 Linux Restricted Shell Breakout via Linux Binary(s) - most of the FPs were coming from the *PAGER* pattern (removed).

#4 Command Execution via ForFiles - -d and /d are the noisiest pattern (excluded) should still trigger on malicious use forfiles /p c:\windows\system32 /m notepad.exe /c "cmd /c c:\windows\system32\calc.exe"

#5 Remote File Copy to a Hidden Share: unrelated matches like _movec matching on *move* or ABCOPY matching on *copy* plus limited rule to cmd/ps and removed xcopy/robocopy used lot in legit copy batch operations.

#6 Suspicious Service was Installed in the System - main noisy patterns are windows\temp and psexecsvc and remcomsvc (both are inconclusive for triage and better look for exec /childs from psexec/remcom)

#7 LSASS Process Access via Windows API : converted to ESQL to match on rare instances and removing random patterns from paths should help reduce significantly FPs.

#8 Suspicious Execution via Scheduled Task: few noisy patterns (.bat and .cmd script in cmd.exe args non conclusive for alert triage, excluded also few PS script by path).

#9 Hosts File Modified : main noise comes from Linux with event.action set to rename (which is not indicative of file overwrite) and a set of programfiles for Windows.

#10 Process Termination followed by Deletion - rule scope is an edge case detected by Elastic Defend, expensive correlation (by file.path/process.executable) and starts with a generic process event, marked the rule for deprecation.

#1 Multiple Logon Failure from the same Source Address: converted to ES|QL and raised the threshold to 100 failed auths, alert quality should be better since it aggregates all failed auths info into one alert vs multiple EQL matches. (expected reduction more than 50%)

#2 Privileged Account Brute Force - coverted to ESQL and set the threshold to 50 in a minute. this should drop noise volume by more than 50%.
@Samirbous Samirbous self-assigned this Dec 11, 2025
@Samirbous Samirbous added Rule: Tuning tweaking or tuning an existing rule eql-to-esql noise-reduction labels Dec 11, 2025
@botelastic botelastic bot added Domain: Endpoint OS: Windows windows related rules labels Dec 11, 2025
@github-actions
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 Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@botelastic botelastic bot added the OS: Linux label Dec 11, 2025
@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Linux Restricted Shell Breakout via Linux Binary(s) (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@Samirbous Samirbous changed the title [Tuning] Windows BruteForce Rules Tuning [Tuning] Top Noisy Rules Dec 11, 2025
@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Linux Restricted Shell Breakout via Linux Binary(s) (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Command Execution via ForFiles (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Linux Restricted Shell Breakout via Linux Binary(s) (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Command Execution via ForFiles (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Linux Restricted Shell Breakout via Linux Binary(s) (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Remote File Copy to a Hidden Share (eql)
    • stack_validation_failed: no_alerts - 0 alerts

@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Command Execution via ForFiles (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Linux Restricted Shell Breakout via Linux Binary(s) (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Remote File Copy to a Hidden Share (eql)
    • stack_validation_failed: no_alerts - 0 alerts

@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Command Execution via ForFiles (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Linux Restricted Shell Breakout via Linux Binary(s) (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Suspicious Service was Installed in the System (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Remote File Copy to a Hidden Share (eql)
    • stack_validation_failed: no_alerts - 0 alerts

@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Command Execution via ForFiles (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Linux Restricted Shell Breakout via Linux Binary(s) (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Suspicious Service was Installed in the System (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Remote File Copy to a Hidden Share (eql)
    • stack_validation_failed: no_alerts - 0 alerts
  • ❌ LSASS Process Access via Windows API (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Command Execution via ForFiles (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Linux Restricted Shell Breakout via Linux Binary(s) (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ✅ Suspicious Execution via Scheduled Task (eql)
  • ❌ Suspicious Service was Installed in the System (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Remote File Copy to a Hidden Share (eql)
    • stack_validation_failed: no_alerts - 0 alerts
  • ❌ LSASS Process Access via Windows API (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Command Execution via ForFiles (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Linux Restricted Shell Breakout via Linux Binary(s) (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ✅ Suspicious Execution via Scheduled Task (eql)
  • ✅ Hosts File Modified (eql)
  • ❌ Suspicious Service was Installed in the System (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Remote File Copy to a Hidden Share (eql)
    • stack_validation_failed: no_alerts - 0 alerts
  • ❌ LSASS Process Access via Windows API (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@tradebot-elastic
Copy link

tradebot-elastic commented Dec 11, 2025

⛔️ Test failed

Results
  • ❌ Deprecated - Process Termination followed by Deletion (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Command Execution via ForFiles (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Multiple Logon Failure from the same Source Address (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Linux Restricted Shell Breakout via Linux Binary(s) (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ✅ Suspicious Execution via Scheduled Task (eql)
  • ✅ Hosts File Modified (eql)
  • ❌ Suspicious Service was Installed in the System (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Privileged Account Brute Force (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Remote File Copy to a Hidden Share (eql)
    • stack_validation_failed: no_alerts - 0 alerts
  • ❌ LSASS Process Access via Windows API (esql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

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.

4 participants