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自定义规则-检测内网扫描行为的主要内容,如果未能解决你的问题,请参考以下文章