wazuh自定义规则-检测内网扫描行为

Posted 煜铭2011

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wazuh自定义规则-检测内网扫描行为相关的知识,希望对你有一定的参考价值。

0x00 介绍

1.背景介绍

传统的入侵检测,主要分为网络入侵检测系统和主机入侵检测系统,分别作用于网络层面和主机(服务器、办公电脑等终端)。

随着技术发展,出现了结合传统入侵检测系统和新技术(如数据分析、威胁情报、自动化操作、主动响应等)的新产品,这类新产品可能的名称是XDR、EDR、EPP等。

2.用途介绍

Wazuh 是 以OSSEC作为引擎的基于主机的入侵检测系统,用于主机端点和云工作负载的统一XDR和SIEM保护。提供配置评估、扩展检测和响应、文件完整性监控、漏洞检测、威胁情报、日志数据分析、恶意软件检测、审计与合规、态势管理、工作负载保护、容器安全等安全解决方案,此外可以与许多外部服务和工具集成。如VirusTotal,YARA,Amazon Macie,Slack和FortiGate。

0x01 部署架构

1.系统架构

Wazuh 平台提供 XDR 和 SIEM 功能来保护您的云、容器和服务器工作负载。其中包括日志数据分析、入侵和恶意软件检测、文件完整性监控、配置评估、漏洞检测以及对法规遵从性的支持。

 2.架构组件

更多详情请参考:Components - Getting started with Wazuh · Wazuh documentation

3.部署架构

0x02 安装部署

0x03 系统管理

5.告警规则管理

1.修改默认规则

有时候,根据实践场景,我们需要屏蔽某类告警或者提高默认规则的告警级别,如果我们想将 SSH 规则的级别值5710从 5 更改为 10,我们将执行以下操作:

打开规则文件/var/ossec/ruleset/rules/0095-sshd_rules.xml。

从规则文件中查找并复制以下代码:

<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>

将代码粘贴到/var/ossec/etc/rules/local_rules.xml中,修改级别值,并添加overwrite="yes"以表明此规则正在覆盖已定义的规则:

<rule id="5710" level="10" overwrite="yes">

  <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>

警告 为了保持加载规则之间的一致性,目前无法覆盖if_sid、if_group、if_level、if_matched_sid和if_matched_group标签。这些标签在覆盖规则中时将被忽略,保留原始值。

参考文档:

Custom rules and decoders - Ruleset · Wazuh documentation

2.local_rules.xml配置

<group name="audit,">

    <!-- SELinux rules -->

  <rule id="80730" level="0" overwrite="yes">

    <if_sid>80700</if_sid>

    <field name="audit.type">AVC</field>

    <description>Auditd: SELinux permission check.</description>

    <group>audit_selinux,gdpr_IV_30.1.g,gdpr_IV_35.7.d,hipaa_164.312.b,nist_800_53_AU.6,pci_dss_10.6.1,tsc_CC7.2,tsc_CC7.3,</group>

  </rule>

</group>

<group name="ossec,">

  <rule id="533" level="3" overwrite="yes">

    <if_sid>530</if_sid>

    <match>ossec: output: 'netstat listening ports</match>

    <check_diff />

    <description>Listened ports status (netstat) changed (new port opened or closed).</description>

    <group>pci_dss_10.2.7,pci_dss_10.6.1,gpg13_10.1,gdpr_IV_35.7.d,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AU.6,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>

  </rule>

 <rule id="510" level="3" overwrite="yes">

    <if_sid>509</if_sid>

    <description>Host-based anomaly detection event (rootcheck).</description>

    <group>rootcheck,pci_dss_10.6.1,gdpr_IV_35.7.d,</group>

   <!-- <if_fts />  -->

  </rule>

  

  </group>

3.新增自定义规则

有时候,我们需要根据实践情况,添加自己的规则,规则级别一般建议设置为12,我们新增端口扫描规则,匹配常规的端口扫描软件和扫描参数,新规规则:scanner.xml

 <!-- detection for scanner -->

<group name="ossec,">  

    <rule id="100061" level="12">

        <if_sid>100050</if_sid>

        <match>nmap |fscan |fscan_amd64 |hydra |kscan |crack </match>

        <description>someone is doing scan for other machines.</description>

        <group>process_monitor,attacks</group>

    </rule>

    

    <rule id="100062" level="12">

        <if_sid>100061</if_sid>

        <regex type="pcre2">\\d1,3\\.\\d1,3\\.\\d1,3\\.\\d1,3/\\d1,2</regex>

        <description>attacker is doing multiscans for other machines.</description>

        <group>process_monitor,attacks</group>

    </rule>

    

    <rule id="100071" level="12">

        <if_sid>100050</if_sid>

        <regex type="pcre2">\\d1,3\\.\\d1,3\\.\\d1,3\\.\\d1,3/\\d1,2</regex>

        <description>some process contain some suspicious parameter.</description>

        <group>process_monitor,attacks</group>

    </rule>

</group>

说明:

规则:100050是在reverse_shell.xml定义的,用途是匹配输出的命令行:

规则:100061 是100050的子规则,先匹配100050,再匹配100061。规则目标是:匹配命令行参数包含nmap |fscan |fscan_amd64 |hydra |kscan |crack等扫描命令

规则:100062 是100061的子规则,先匹配100050,再匹配100061,再匹配100062

此时:如果100061的存在多条子规则,多条规则匹配类似,则以最后一条为准。规则目标是:这些命令包含子网段的。

规则:100071 是100050的子规则。规则目标是:匹配命令行参数包含网段的参数等为可疑的参数

4.自定义规则测试

在规则的旁边存在Ruleset Test,每一行输入一条日志进行测试

ossec: output: 'ps -eo user,pid,cmd': root     24914 nmap -v 10.10.0.0/16

 **Messages:

WARNING: (7003): '55ca16dc' token expires

INFO: (7202): Session initialized with token '1ae91014'

**Phase 1: Completed pre-decoding.

full event: 'ossec: output: 'ps -eo user,pid,cmd': root     24914 n -v 10.10.0.0/16'

**Phase 2: Completed decoding.

name: 'ossec'

**Phase 3: Completed filtering (rules).

id: '100071'

level: '10'

description: 'some process contain some suspicious parameter.'

groups: '["ossec","process_monitor","attacks"]'

firedtimes: '1'

mail: 'false'

**Alert to be generated.

 

 5.更改日志告警级别

由默认的3 更改为6

如果磁盘空间不足或者没有必要记录太多不必要的信息,可以使用5,6,7等级别。

参考文档:

告警配置说明:

Defining an alert level threshold - Wazuh server administration

告警级别说明:alerts - Local configuration (ossec.conf) · Wazuh documentation

以上是关于wazuh自定义规则-检测内网扫描行为的主要内容,如果未能解决你的问题,请参考以下文章

hids wazuh 系列3-自定义内网扫描规则

hids wazuh 系列3-内网扫描规则

hids wazuh 系列5-常规代理检测规则

hids wazuh 系列5-常规代理检测规则

hids wazuh 系列2- 规则管理

hids wazuh 系列4-反弹shell规则