[New Rule][BBR] Potential PowerShell Obfuscation via High Special Character Proportion
Issues
Part of https://github.com/elastic/ia-trade-team/issues/533
Summary
Identifies PowerShell scripts with an abnormally high proportion of non-alphanumeric characters, often resulting from encoding, string mangling, or dynamic code generation.
High volume of matches in the telemetry, limited FPs with the use of special chars to formatting, which I excluded in the regex.
Pushing this as BBR as our telemetry doesn't contain enough benign data for us to truly see how much noise this rule will generate and adjust the threshold accordingly.
Additional information
From my testing, the | KEEP condition doesn’t need to specify any fields other than the metadata ones (_id and _index), as the engine appears to populate the alert using them. However, I’m keeping it as-is because it significantly improves performance in Discovery and makes the results more understandable if someone uses the query for hunting.
Sample Match
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_datematches the date of creation PR initially merged. - [ ]
min_stack_versionshould support the widest stack versions. - [ ]
nameanddescriptionshould be descriptive and not include typos. - [ ]
queryshould be inclusive, not overly exclusive, considering performance for diverse environments. Non ecs fields should be added tonon-ecs-schema.jsonif not available in an integration. - [ ]
min_stack_commentsandmin_stack_versionshould be included if the rule is only compatible starting from a specific stack version. - [ ]
indexpattern 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). - [ ]
integrationshould align with theindex. If the integration is newly introduced, ensure the manifest, schemas, andnew_rule.yamltemplate are updated. - [ ]
setupshould include the necessary steps to configure the integration. - [ ]
noteshould include any additional information (e.g. Triage and analysis investigation guides, timeline templates). - [ ]
tagsshould be relevant to the threat and align/added to theEXPECTED_RULE_TAGSin the definitions.py file. - [ ]
threat,techniques, andsubtechniquesshould map to ATT&CK always if possible.
New BBR Rules
- [ ]
building_block_typeshould be included if the rule is a building block and the rule should be located in therules_building_blockfolder. - [ ]
bypass_bbr_timingshould 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.