Wazuh关联分析规则高级玩法

0x00 前言

对Wazuh安装部署和数据解码有了一定了解后,接下来就是要掌握Wazuh规则的玩法,之前就提到过 Wazuh是ossec的分支,那为啥非要用分支不用原生呢?其实问题就在于Wazuh对ossec的规则引擎进行改良和扩展,使得规则不限制于 少量且写死的字段,譬如源地址、目的地址等字段,可以进行无限制的字段扩展!

本篇不会去讲规则具体字段的使用,这个主要原因是Wazuh官方的文档写的实在是太详细了。

0x01 规则类型

1. 根规则与派生规则(Parent/Child)

根规则,就是基础规则,只负责区分规则类别。

派生规则,可以引用根规则去做更细节的过滤和匹配,从而派生出更具体的描述安全事件的规则。

案例

 ❶ <rule id="5700" level="0" noalert="1"> 
    <decoded_as>sshd</decoded_as>
    <description>SSHD messages grouped.</description>
  </rule>

 ❷ <rule id="5710" level="5"> 
    <if_sid>5700</if_sid> ❸
    <match>illegal user|invalid user</match>
    <description>sshd: Attempt to login using a non-existent user</description>
    <mitre>
      <id>T1110</id>
    </mitre>
    <group>invalid_login,authentication_failed,pci_dss_10.2.4,pci_dss_10.2.5,pci_dss_10.6.1,gpg13_7.1,gdpr_IV_35.7.d,gdpr_IV_32.2,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AC.7,nist_800_53_AU.6,tsc_CC6.1,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
  </rule>

    规则说明
    
    ❶ 规则ID5700是根规则,它代表的是与SSHD这个进程相关的事件
    ❷ 规则ID5710是5700的派生规则,引用根规则后,进一步进行匹配派生出更具有可描述性的事件
    ❸ 派生规则引用根规则的方法,使用if_sid字段,与关联规则使用的if_matched_sid有所区别,区别在下面会进行阐述,可以重点关注下

理解

规则ID:5710

规则说明:派生规则ID(5710)引用规则ID(5700)为根规则,进行条件匹配 illegal user|invalid user后 形成了 sshd: Attempt to login using a non-existent user 事件

2. 原子规则和关联规则(Atomic/Composite)

原子规则,用于描述发生的个别事件,各个事件之间没有相关性,比如说发生了一次登录失败或发生了一次登录成功 但我们无从得知,发生了多少次登录失败,或者说多少次登录失败后发生了登录成功。

关联规则,将一段时间内的多个事件相关联,譬如可以知道在某个时间段,同一个源地址IP发生了多少次登录失败,从而识别为暴力破解事件。

案例

❶ <rule id="100302" level="3">
        <if_sid>86620</if_sid>
        <field name="event_name">^login_audit$</field>
        <field name="app_type">^web$</field>
        <field name="http.results">^failed$</field>
        <description>Suricata Rules - $(event_name). $(srcip) -> $(http.email) -> $(http.hostname) -> $(http.url) = $(http.results).</description>
        <options>no_full_log</options>
        <group>login_audit,authentication_failures,</group>
</rule>

❷ <rule id="100401" level="7" frequency="20" timeframe="120" ignore="300"> ❸ 
        <if_matched_sid>100302</if_matched_sid> ❹  <!-- login_audit failed web -->
        <same_source_ip /> ❺
        <description>Wazuh Rules - Multiple login failures events from same IP ($IP_FREQ hit/$IP_TIME sec). $(srcip) -> $(http.email) -> $(http.hostname) -> $(http.url) = $(http.results).</description> 
        <options>no_full_log</options>
        <group>brute_force_web,</group>
</rule>

    规则说明
    
    ❶ 规则ID100302是原子规则,在这个例子里它表示登录失败的事件规则
    ❷ 规则ID100401是100302的关联规则
    ❸ 关联规则ID100401,定义了在120s的时间范围内发生次数达到20次,则触发该规则
    ❹ 使用if_matched_sid字段来引用原子规则100302,与if_sid的区别在于,前者需要在时间范围内发生,后者则没有时间的概念
    ❺ same_source_ip代表同一个源地址IP进行的访问

理解

规则ID:100401

规则说明:在120s为统计周期内,同一个源IP地址发生超过20次登录失败,触发告警规则

0x02 关联规则的玩法

having count(*)

某个事件数目出现次数

                                 ❶            ❷
<rule id="102399" level="10" frequency="30" timeframe="900">
          <if_matched_group>nids_phase1</if_matched_group>
          <options>no_full_log</options>
          <group>suricata_alert_phase2,nids_phase2</group>
          <description>Phase 2: Alarm - Phase 1 Alarm of occurred 60 times within 900 seconds. $(srcip) -> $(dstip) -> $(alert.signature) -> $(alert.signature_id).</description>
    </rule>

    字段说明
    ❶ frequency定义事件发生的次数>=30次
    ❷ timeframe定义事件检测事件时间窗在900s内

follow by

某事件A之后发生了事件B

<rule id="100410" level="12" timeframe="900">
        <if_matched_sid>100409</if_matched_sid> ❶   <!-- login_audit failed app -->
        <if_sid>100303</if_sid> ❷  <!-- login_audit success app -->
        <same_field>http.device_id</same_field>
        <description>Wazuh Rules - Multiple authentication failures from same device_id, followed by a success ($BRUTE_TIME sec). </description>
</rule>

    字段说明
    ❶ A事件(login_audit failed app)
    ❷ B事件(login_audit success app)

having count(DISTINCT)

连续多次事件中某个属性出现不同的次数

 <rule id="100413" level="7" timeframe="900" ignore= "120">
        <if_matched_sid>100411</if_matched_sid>
        <same_field>http.device_id</same_field>
        <not_same_field>http.email</not_same_field> ❶
        <description>Wazuh Rules - Multiple authentication failures from same device_id ($DEVICE_FREQ hit/$DEVICE_TIME sec). </description>
</rule>



    规则说明
    
    ❶ 规则匹配事件的http.email字段值出现不同的类型
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值