79
Threat Hunting with Application Logs and Sigma Thomas Patzke, 14. November 2017

Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Hunting with Application Logs and Sigma

Thomas Patzke, 14. November 2017

Page 2: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Agenda

Introduction to Threat Detection with Log Analysis Log Traces of Application Attacks Motivation for a Log Signature Format Sigma – The Open Source Approach

– Rule Format– Rule Examples– Conversion to SIEM queries

How can developers, pentesters and security researches contribute?

Page 3: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

From Attack to Logfle

Page 4: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

From Attack to Logfle

Attack Attempts

Page 5: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

From Attack to Logfle

Attack Attempts

Application Errors

Page 6: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

From Attack to Logfle

Attack Attempts

Application Errors

Error Logs

Page 7: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

From Attack to Logfle

Attack Attempts

Application Errors

Error Logs

This is something we are able to detect!

Page 8: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Hunting: From Log File to Threat Detection

Page 9: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Hunting: From Log File to Threat Detection

Log Files

Page 10: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Hunting: From Log File to Threat Detection

Log FilesNo standardized structure

Page 11: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Hunting: From Log File to Threat Detection

Log Files

SIEM

No standardized structure

Page 12: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Hunting: From Log File to Threat Detection

Log Files

SIEM

No standardized structureDecomposition of unstructuredlog lines into fields (keys/values)

Page 13: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Hunting: From Log File to Threat Detection

Log Files

SIEM

Searches, Aggregations & Dashboards

No standardized structureDecomposition of unstructuredlog lines into fields (keys/values)

Page 14: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Hunting: From Log File to Threat Detection

Log Files

SIEM

Searches, Aggregations & Dashboards

Where do they come fromand how to distribute

indicators?

No standardized structureDecomposition of unstructuredlog lines into fields (keys/values)

Page 15: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Hunting: From Log File to Threat Detection

Log Files

SIEM

Searches, Aggregations & Dashboards

Manual Analysis

Where do they come fromand how to distribute

indicators?

No standardized structureDecomposition of unstructuredlog lines into fields (keys/values)

Page 16: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Detection with Log Monitoring:Log Sources

Firewall Logs– Successful/Filtered IP/TCP/UDP Communication

Operating System Logs– Authentication– Process Execution– Resource Access

Proxy Logs Web Server Access Logs

Page 17: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Detection with Log Monitoring:Signature Examples

Page 18: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Detection with Log Monitoring:Signature Examples

Authentication & Accounts:– Large number of failed logon attempts– Alternation and usage of specifc accounts (e.g. DSRM)– SID history

Page 19: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Detection with Log Monitoring:Signature Examples

Authentication & Accounts:– Large number of failed logon attempts– Alternation and usage of specifc accounts (e.g. DSRM)– SID history

Process Execution:– Execution from unusual locations– Suspicious process relationships– Known executables with unknown hashes– Known evil hashes

Page 20: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Detection with Log Monitoring:Signature Examples

Authentication & Accounts:– Large number of failed logon attempts– Alternation and usage of specifc accounts (e.g. DSRM)– SID history

Process Execution:– Execution from unusual locations– Suspicious process relationships– Known executables with unknown hashes– Known evil hashes

Windows Events:– Service installations with rare names in monitored environment– New domain trusts

Page 21: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Detection with Log Monitoring:Signature Examples

Authentication & Accounts:– Large number of failed logon attempts– Alternation and usage of specifc accounts (e.g. DSRM)– SID history

Process Execution:– Execution from unusual locations– Suspicious process relationships– Known executables with unknown hashes– Known evil hashes

Windows Events:– Service installations with rare names in monitored environment– New domain trusts

Network: Port Scans, Host Discovery (Ping Sweeps)

Page 22: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Detection with Log Monitoring:Application Events

Page 23: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Detection with Log Monitoring:Application Events

Web Server Access Logs:– 4xx Errors: Enumeration and Reconnaissance activity– 5xx Errors: Exploitation

Page 24: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Threat Detection with Log Monitoring:Application Events

Web Server Access Logs:– 4xx Errors: Enumeration and Reconnaissance activity– 5xx Errors: Exploitation

Application Error Logs– Exceptions– Specifc messages

Page 25: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Some Application Error Examples

Page 26: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Some Application Error Examples

OpenSSH “unexpected internal error” “error in libcrypto” “unexpected bytes remain

after decoding”

Page 27: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Some Application Error Examples

OpenSSH “unexpected internal error” “error in libcrypto” “unexpected bytes remain

after decoding”

vsftpd “weird status” “Input line too long” “syscall validate

failed”

Page 28: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Some Application Error Examples

OpenSSH “unexpected internal error” “error in libcrypto” “unexpected bytes remain

after decoding”

vsftpd “weird status” “Input line too long” “syscall validate

failed”

Page 29: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Some Application Error Examples

OpenSSH “unexpected internal error” “error in libcrypto” “unexpected bytes remain

after decoding”

vsftpd “weird status” “Input line too long” “syscall validate

failed”

Page 30: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Problems?

Page 31: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Problems?

Source: https://github.com/iadgov/Event-Forwarding-Guidance/tree/master/Events

Page 32: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Problems?

Source: https://github.com/iadgov/Event-Forwarding-Guidance/tree/master/Events

Source: https://adsecurity.org/?p=1714

Page 33: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Problems?

Source: https://github.com/iadgov/Event-Forwarding-Guidance/tree/master/Events

Source: https://adsecurity.org/?p=1714

Source: https://findingbad.blogspot.de/2017/01/hunting-what-does-it-look-like.html

Page 34: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Problems!

Page 35: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Problems!

Lack of standardized description format– Great blog posts, log signatures as unstructured text– No generic format like YARA or Snort rules

Page 36: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Problems!

Lack of standardized description format– Great blog posts, log signatures as unstructured text– No generic format like YARA or Snort rules

Heterogeneous environments:– The n+1 SIEMs problem– Efficient distribution of log signatures for different

systems

Page 37: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Problems!

Lack of standardized description format– Great blog posts, log signatures as unstructured text– No generic format like YARA or Snort rules

Heterogeneous environments:– The n+1 SIEMs problem– Efficient distribution of log signatures for different

systems

Different SIEM products cover different signatures

Page 38: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Problems!

Lack of standardized description format– Great blog posts, log signatures as unstructured text– No generic format like YARA or Snort rules

Heterogeneous environments:– The n+1 SIEMs problem– Efficient distribution of log signatures for different systems

Different SIEM products cover different signatures Vendor lock-in

Page 39: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Generic signature format to describe interesting log events

Open repository for Sigma signatures Converter that builds queries from Sigma signatures

Page 40: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

It’s open source!

Page 41: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Rule Format

Page 42: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Rule Format

Sigma rules are written in YAML

Page 43: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Rule Format

Sigma rules are written in YAML Scope defnition: which log sources are relevant?

Page 44: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Rule Format

Sigma rules are written in YAML Scope defnition: which log sources are relevant? Search identifers: Event IDs, values, strings

– Lists of values– Key-value pairs that associate a log feld with a value

Page 45: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Rule Format

Sigma rules are written in YAML Scope defnition: which log sources are relevant? Search identifers: Event IDs, values, strings

– Lists of values– Key-value pairs that associate a log feld with a value

Condition:– Logical connection of search identifers– Aggregation/correlation of matched events

Page 46: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Rule Format

Sigma rules are written in YAML Scope defnition: which log sources are relevant? Search identifers: Event IDs, values, strings

– Lists of values– Key-value pairs that associate a log feld with a value

Condition:– Logical connection of search identifers– Aggregation/correlation of matched events

Metadata: title, description, author, state, (severity) level, reference, hints for identifcation of false positives

Page 47: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Example: HTTP Error Codes

Page 48: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Example: HTTP Error Codes

Page 49: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Example: Django Exceptions

Page 50: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Example: Django Exceptions

Page 51: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Example: Spring Framework Exceptions

Page 52: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Example:Python PEP249 Exceptions

Page 53: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Example:OpenSSH Error Messages

Page 54: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Rule Example:Mimikatz Detection

Page 55: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Rule Example:Mimikatz Detection

Page 56: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Sigma Converter

Page 57: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Sigma Converter

Conversion of a Sigma rule into three different query languages:

Splunk

Elasticsearch

LogPoint

Page 58: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Sigma Converter

Conversion of a Sigma rule into three different query languages:

Splunk

Elasticsearch

LogPoint

Page 59: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Sigma Converter

Conversion of a Sigma rule into three different query languages:

Splunk

Elasticsearch

LogPoint

Conversion to frontend/tool confgurations:

Kibana searches

Elastic X-Pack Watcher alerts

Page 60: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Sigma Converter

Conversion of a Sigma rule into three different query languages:

Splunk

Elasticsearch

LogPoint

Conversion to frontend/tool confgurations:

Kibana searches

Elastic X-Pack Watcher alerts

Page 61: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Demo Time!

Page 62: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Demo Time!

Page 63: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Demo Time!

Page 64: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Demo Time!

Page 65: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Demo Time!

Page 66: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Demo Time!

Page 67: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Demo Time!

Page 68: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Challenges in Rule Conversion

Page 69: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Challenges in Rule Conversion

Usage of different feld names– Solution: feld name mappings from Sigma rule feld

names to SIEM/environment specifc names

Page 70: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Challenges in Rule Conversion

Usage of different feld names– Solution: feld name mappings from Sigma rule feld

names to SIEM/environment specifc names

Inconsistent feld names, multiple felds for one purpose– Solution: 1:n feld name mappings

Page 71: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Challenges in Rule Conversion

Usage of different feld names– Solution: feld name mappings from Sigma rule feld

names to SIEM/environment specifc names

Inconsistent feld names, multiple felds for one purpose– Solution: 1:n feld name mappings

Field names depend on event type, e.g. LogPoint has four names for SubjectAccountName or UserName.– Solution: Conditional feld name mappings

Page 72: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Challenges in Rule Conversion

Usage of different feld names– Solution: feld name mappings from Sigma rule feld names to

SIEM/environment specifc names

Inconsistent feld names, multiple felds for one purpose– Solution: 1:n feld name mappings

Field names depend on event type, e.g. LogPoint has four names for SubjectAccountName or UserName.– Solution: Conditional feld name mappings

Log sources match to subsets of indexed log data: you don’t want to search web server logs for Windows security events– Solution: match category/product/service tuples to index patterns and

conditions

Page 73: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Challenges in Rule Conversion

Usage of different feld names– Solution: feld name mappings from Sigma rule feld names to SIEM/environment specifc

names

Inconsistent feld names, multiple felds for one purpose– Solution: 1:n feld name mappings

Field names depend on event type, e.g. LogPoint has four names for SubjectAccountName or UserName.– Solution: Conditional feld name mappings

Log sources match to subsets of indexed log data: you don’t want to search web server logs for Windows security events– Solution: match category/product/service tuples to index patterns and conditions

Rules refer to subsets of values which are environment-specifc, e.g. client systems– Solution: place holders

Page 74: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Current State & Future

Rules– Many rules for Windows/OS and network events– Few application rules, room for improvement!

Sigma Converter– Some backends, but more required– Further improvements

Further tool ideas:– Sigma Rule Builder Webapp– Automatic rule building from log samples

Page 75: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

How can you Contribute?

Page 76: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

How can you Contribute?

Developers– Log verbosely!

● Access check violations● Failing security checks (wrong CSRF token, ...)● If requests are wrong (too many, too few parameters, wrong

value types, ...)● Unexpected states (skipped workfow steps, …)

– Provide Sigma rules with your project

Page 77: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

How can you Contribute?

Developers– Log verbosely!

● Access check violations● Failing security checks (wrong CSRF token, ...)● If requests are wrong (too many, too few parameters, wrong value

types, ...)● Unexpected states (skipped workfow steps, …)

– Provide Sigma rules with your project

Pentesters & Security Researchers– Check logs for attack traces and build Sigma rules

Page 78: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

How can you Contribute?

Developers– Log verbosely!

● Access check violations● Failing security checks (wrong CSRF token, ...)● If requests are wrong (too many, too few parameters, wrong value types, ...)● Unexpected states (skipped workfow steps, …)

– Provide Sigma rules with your project

Pentesters & Security Researchers– Check logs for attack traces and build Sigma rules

Code/Tool contributions are always welcome!

Page 79: Threat Hunting with Application Logs and Sigma · Threat Detection with Log Monitoring: Signature Examples Authentication & Accounts: – Large number of failed logon attempts –

Questions?

Rules + Code: https://github.com/Neo23x0/sigma Documentation: https://github.com/Neo23x0/sigma/wiki Thomas Patzke

@blubbfction [email protected]

Florian Roth @cyb3rops

https://www.bsk-consulting.de/2017/07/06/the-best-possible-monitoring-with-sigma-rules/