【问题标题】:Wazuh child decoder not parsing field correctlyWazuh 子解码器未正确解析字段
【发布时间】:2021-11-04 04:06:49
【问题描述】:

我正在尝试使用 wazuh 4.x 中的子解码器解析如下所示的日志,由于某种原因它没有解析所需的字段

日志条目

ossec: output: 'domainjoin-cli query|grep -i Domain': Domain = mydomain.local

子解码器

<decoder name="ossec-domain">
  <parent>ossec</parent>
  <type>ossec</type>
  <prematch>^ossec: output:</prematch>
  <regex type="pcre2">^'domainjoin-cli[ \t]query|grep[ \t]-i[ \t]Domain':[ \t]Domain[ \t]=[ \t](\S+)</regex>
  <order>domain</order>
</decoder>

输出

ossec: output: 'domainjoin-cli query|grep -i Domain': Domain = mydomain.local

**Phase 1: Completed pre-decoding.
        full event: 'ossec: output: 'domainjoin-cli query|grep -i Domain': Domain = mydomain.local'

**Phase 2: Completed decoding.
        name: 'ossec'
        parent: 'ossec'

**Phase 3: Completed filtering (rules).
        id: '100008'
        level: '3'
        description: 'Server is in  domain '
        groups: '['ossec']'
        firedtimes: '1'
        hipaa: '['164.312.b']'
        mail: 'False'
        pci_dss: '['10.6.1']'
**Alert to be generated.

【问题讨论】:

    标签: ossec wazuh


    【解决方案1】:

    考虑到父解码器:

    <decoder name="ossec">
      <prematch>^ossec: </prematch>
      <type>ossec</type>
    </decoder>
    

    首先,您应该删除prematch 标记,因为父级已经有一个预匹配正则表达式。如果您想离开预匹配,您还可以使用offset 字段来指示字符串输出在ossec: 之后。

    <decoder name="ossec-domain">
      <parent>ossec</parent>
      <type>ossec</type>
      <prematch offset="after_parent>^output:</prematch>
      <regex type="pcre2">^'domainjoin-cli[ \t]query|grep[ \t]-i[ \t]Domain':[ \t]Domain[ \t]=[ \t](\S+)</regex>
      <order>domain</order>
    </decoder>
    

    之后,请注意正则表达式是错误的,因为您使用的是^^ 表示日志的开头,在这种情况下,该字符后面的字符串不是日志的开头。您必须从正则表达式中删除该字符。

    此外,您必须考虑到 | 表示 OR 运算符,这意味着一个正则表达式(左)或另一个(右)应该与日志匹配。在您的用例中,这应该指示字符,因此您需要对其进行转义而不将其用作 OR 运算符。

    考虑到这些迹象,您应该使用以下解码器:

    <decoder name="ossec-domain">
      <parent>ossec</parent>
      <type>ossec</type>
      <prematch offset="after_parent">^output:</prematch>
      <regex type="pcre2">'domainjoin-cli[ \t]query\|grep[ \t]-i[ \t]Domain':[ \t]Domain[ \t]=[ \t](\S+)</regex>
      <order>domain</order>
    </decoder>
    

    日志测试输出:

    ossec: output: 'domainjoin-cli query|grep -i Domain': Domain = mydomain.local
    
    **Phase 1: Completed pre-decoding.
        full event: 'ossec: output: 'domainjoin-cli query|grep -i Domain': Domain = mydomain.local'
    
    **Phase 2: Completed decoding.
        name: 'ossec'
        parent: 'ossec'
        domain: 'mydomain.local'
    

    希望对您有所帮助,如果您有更多问题,请告诉我您正在使用的 Wazuh 版本,我很乐意为您提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 2013-02-27
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      相关资源
      最近更新 更多