Hi, thanks so much for the detailed response. I will study your recommendations in order to improve the rule engine. My concerns are about the CPU/memory usage. This feature requires a deep research and it has implications at a very technical level.
I will let you know when we improve something related with the rule engine. Thanks. Regards. On Tuesday, March 7, 2017 at 12:35:12 AM UTC-8, InfoSec wrote: > > Hello Jesus, > > Following is the design recipe for an *advanced* OSSEC correlation engine. > > The engine is to have the following capabilities: > i) Look forward and look back: Wait a certain time for next events, > -or- look back a certain time for previous events. > ii) Conditions based on the content of decoded fields. > iii) More than one condition can be specified simultaneously. > iv) Boolean logic (at least the basic AND, OR, NOT) can be used in > conditions. Add regex to provide a further boost in capabilities. > v) Stickiness: multiple occurrences of events with a field content that > matches (or does not match) that of the previous event in the sequence. > Ex: Look for multiple occurrences of same events with same > IP/different port, or different IP/same port. > vi) Generate a new custom event with a predefined alert level when a > correlation level is matched. > vii) Alert by e-mail (&/or SMS) when a correlation level is matched. > > *Example*: > Correlation Trigger: > - Rule Level 1: X occurrences of event A matching one or more conditions > within a specified timeout period. > Can be a single occurrence, at which time the Level 1 timeout becomes > irrelevant, level 2 timer kicks in. > - Rules Level 2: Within XX seconds of matching Level 1 -or- in the XX > seconds preceding matching of Level 1, look for: > - Branch A - XX occurrences of: > - Event B with 1 or more conditions relating to Level 1; -and- > - Event C with 1 or more conditions relating to Level 1; -or- > - ... > - Rules Level 3: Within XX seconds of matching Level 2 Branch A > -or- in the XX seconds preceding matching Level 2 Branch A, look for: > - Branch C - XX occurrences of: > - Event D with 1 or more conditions relating to higher-level > events in this tree; -and- > - Event E with 1 or more conditions relating to higher-level > events in this tree; -or- > - ... > *OR* > - Branch D - XX occurrences of: > - Event F with 1 or more conditions relating to higher-level > events in this tree; -and- > - Event G with 1 or more conditions relating to higher-level > events in this tree; -or- > - ... > *OR* > - Branch B - XX occurrences of: > - Event H with 1 or more conditions relating to Level 1; -and- > - Event I with 1 or more conditions relating to level 1; -or- > - ... > - Rules Level 3: Within XX seconds of matching Level 2 Branch B > -or- in the XX seconds preceding matching of Level 2 Branch B, look for: > - Branch E - XX occurrences of: > - Event J with 1 or more conditions relating to higher-level > events in this tree; -and- > - Event K with 1 or more conditions relating to higher-level > events in this tree; -or- > - ... > *OR* > - Branch F - XX occurrences of: > - Event L with 1 or more conditions relating to higher-level > events in this tree; -and- > - Event M with 1 or more conditions relating to higher-level > events in this tree; -or- > - ... > > Conditions for Branches at the same correlation level must be *mutually > exclusive*. > > Example: if a condition for Branch A is 'audit success', for Branch B it > would be 'audit failure'. An event can be an audit success, or an audit > failure, *it cannot be both*. So at level 2 and below, the correlation > engine logic must branch to *only one Branch at a given level*. There can > be NO overlap between Branches at the same level. It is the responsibility > of the individual designing the correlation logic to ensure the sanity of > the logic behind it. Within a Branch, it is OK if more than one rule > matches. > > Level 3 comes below Level 2 Branch A, and another Level 3 may come below > Level 2 Branch B. Since Branch A and Branch B are mutually exclusive, > Branch C and Branch D at level 3 could be the same under branch A and > Branch B. Following the same principles, level 4 comes below level 3, > etc... As many levels as necessary can be defined. > > Such an engine would allow alerting to: > - Suspicious low and slow activity that attempts to remain below the > security monitoring radar -- provided one knows what to look for. > - Scenarios with exponential growth in network connections (such as a > worm infection spreading). > - Scenarios where a rapid recurrence of specific events occurs on hosts > (such as a ransomware infection). > - Network footprinting: scans for a specific destination port on > multiple destination IPs. > - Network footprinting: scans for a wide range of destination ports on a > single destination IP. > - Dictionary attacks: repeated authentication failures from same source > targeting the same account name for all occurrences. > - Dictionary attacks: repeated authentication failures from same source > targeting a different account name for each occurrence. > > - When a correlation level is matched, if within the specified timeout > period (forward or backward) all the branches for the > level below do not match, remove from correlation. > - A match at any level may need to trigger an email alert and/or create a > new correlation engine generated event. > - Correlation engine generated events may be used to trigger other > correlations. > - Correlation engine generated events may be used in other correlations. > > Almost *any* suspicious activity use case could be modeled in an engine > that has the capabilities detailed above. The logic can be simple (single > level) or convoluted (as many levels and branches as one wishes to put in > it). > -- --- You received this message because you are subscribed to the Google Groups "ossec-list" group. To unsubscribe from this group and stop receiving emails from it, send an email to ossec-list+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.