freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

端点安全杂谈(十三)Wazuh白活(中)
2023-01-07 15:04:37
所属地 山东省

写在前面

wazuh分析内容感谢张浩、谢涛,我只能白活,他们才懂技术。看了看内容,还是分成上中下三次,这次来说wazuh的功能和规则。

功能分析

日志收集

Wazuh agent执行日志收集根据代理配置中设置的要收集的日志文件,监控此文件内容的变化,当发生变更时,会将变更的日志信息发送到服务器上,服务器通过解码器对日志内容进行解码,再匹配规则进行告警处理,其主要处理流程如下图:

1673072391_63b90f07678d5b033d3f6.png!small?1673072379502

在agent的配置文件/var/ossec/etc/ossec.conf文件中指定了要收集的日志文件:

1673072428_63b90f2c716e102f9f3eb.png!small?1673072416881

代理从指定的文件中收集的日志信息内容会发送到服务器,在服务器上对日志内容进行解析,如下图中为服务器解析后可输出原有日志文件信息:

1673072689_63b910319eaeb0370d3ce.png!small?1673072678690

原有日志信息中记录了事件的发生时间、操作的用户、事件的结果、原有日志文件,服务器将结果解析后匹配规则后形成告警信息,显示出匹配的规则组,安全警告级别等内容。

代码实现方面由模块logcollector模块进行,其实现会根据日志文件的类型单独进行处理,如下图:

1673072806_63b910a6820f386e11dae.png!small?1673072794802

在判断后日志文件类型后,再进行日志的读取和发送。日志内容最终经过ossec-agentd 发送给manager的ossec-remoted进程,最终送到ossec-analysisd进程去分析。

日志文件收集支持指定文件、正则表达式匹配、按日志监控、从Windows事件日志文件、环境变量等配置方式。

文件完整性监控

Wazuh文件完整性监控主要监控Linux配置文件和Windows的注册表内容,在代理安装时,会收集端点上的文件信息,形成加密校验存储,通过设定配置项,由服务器中的syscheck组件定期对文件进行扫描,将扫描后的文件数据与存储的数据进行比较,确定是否被修改。文件完整性的校验非实时进行,只是定期扫描执行发现。其主要工作流程如下图:

1673072876_63b910ec6f26e63ada864.png!small?1673072865110

在配置项中可设定扫描时间间隔、要监控的目录文件、不监控的目录等设置,如下图:

1673072895_63b910ff300448a00bb52.png!small?1673072883645

恶意软件检测

Wazuh代理实现恶意软件检测主要是检测操作系统中的命令执行与预期的行为不匹配模式的动作,恶意软件通过修改/模仿系统的原有命令执行特定的动作,在端点上进行信息收集的恶意行为达到隐藏效果。由模块rootcheck进行,因为系统文件被改变,也可以通过syscheck模块按照文件完整性监控进行检查,主要工作流程如下图:

1673073410_63b91302534a58b306760.png!small?1673073398703

通过文件完整性的监控,当判定到系统中特定命令的文件完整性发生变化时,对此命令的变化发出告警,由管理员来判断程序是否存在恶意行为。

部分恶意程序通过隐藏自己的进程ID,无法在系统列表中查看到进行,Wazuh通过替换系统ps命令(木马版本),查看系统中隐藏的进程。

1673073620_63b913d4a161e03f24a2f.png!small?1673073609197

恶意软件会隐藏使用的端口信息,使用netstat等常用命令检查时无法查询到端口占用信息,代理会通过使用socket()的对系统上的udp和tcp端口进行尝试连接,由此来判断是否存在隐藏的端口(这也是一些厂商的做法)。

1673073640_63b913e82091921ed005e.png!small?1673073629096

Wazuh会对端点系统上的文件的文件进行检查,查看是否存在异常的文件权限、被隐藏的文件或者目录等内容,由此判断是否为恶意程序。

1673073709_63b9142d6edcc2685aba5.png!small?1673073698594

Wazuh还会通过检查dev、sys等程序检查恶意程序,从多方面来进行,主要的检查方法由以下:

1673073771_63b9146b22eea9b38d486.png!small?1673073759469

安全策略标准检测

系统安全策略检测是验证系统是否符合安全配置和已规定的应用程序的一组预定义规则的过程,使用互联网安全中心(CIS)发布的安全策略,对系统中安全策略的配置给出评分。执行功能的模块有rootcheck、openscap、CIS-CAT。

rootcheck的检测主要检查配置文件是否存在,文件或Windows注册表中是或否包含特殊字符串等,部分策略如下表:

策略

描述

cis_debian_linux_rcl.txt

基于CIS Benchmark for Debian Linux v1.0

cis_rhel5_linux_rcl.txt

基于CIS Benchmark for Red Hat Enterprise Linux 5 v2.1.0

cis_rhel6_linux_rcl.txt

基于CIS Benchmark for Red Hat Enterprise Linux 6 v1.3.0

cis_rhel7_linux_rcl.txt

基于CIS Benchmark for Red Hat Enterprise Linux 7 v1.1.0

cis_rhel_linux_rcl.txt

基于CIS Benchmark for Red Hat Enterprise Linux v1.0.5

cis_sles11_linux_rcl.txt

基于CIS Benchmark for SUSE Linux Enterprise Server 11 v1.1.0

cis_sles12_linux_rcl.txt

基于CIS Benchmark for SUSE Linux Enterprise Server 12 v1.0.0

system_audit_rcl.txt

Web漏洞和漏洞利用

win_audit_rcl.txt

检查注册表值

system_audit_ssh.txt

SSH检查

win_applications_rcl.txt

检查是否安装了恶意应用程序

策略和合规性数据库在由服务器管理,由服务器将它们下发到代理中。

Openscap提供执行配置的功能,主要用于验证安全合规性、对漏洞进行评估,以标准化的方式表述和操纵安全数据的规范,评估的主要过程包括:

scap扫描:读取scap策略并检查系统是否符合它的应用程序。

安全策略:系统如何设置及检查的内容。

配置文件:提供符合特定安全基准的准则和值集。

评估:扫描程序在代理上根据特定策略和配置文件执行的过程。

其主要实现方法由以下几种:

1673074004_63b915540a6e1723d6220.png!small?1673073992149

主要的处理流程如下图:

1673074016_63b915607a14be2d04f43.png!small?1673074004887

支持的评估安全标准有:PCI-DSS、GDPR、HIPAA、NIST 800-53、TSC

系统调用监控

此模块主要针对于Linux系统进行,结合audit审计规则执行。根据预先配置的规则,audit可以记录系统中发生时间的详细信息,wazuh会与审计的信息形成报告进行告警。

audit支持的以下三种规则:

控制规则:允许修改审计系统的行为及某些配置。

文件系统规则:允许审核对特定文件或目录的访问。

系统调用规则:允许记录指定程序所进行的系统调用。

使用audit在端点系统中添加相应的规则后,在wazuh 的配置中添加相应的监控内容,wazuh即可接收相应的审计日志内容,配置项有一下:

1673074164_63b915f433fc5df56fc46.png!small?1673074152437

此部分规则执行命令执行的审计、文件的修改、读取、删除监控规则,需要在端点上单独添加审计规则,使用较麻烦,无法进行统一部署。

远程命令执行监控

在操作系统中,有些事件的处理结果不会显示在日志中,而是在命令执行的输出结果中显示,为解决这个问题,wazuh实现了监控远程特定命令输出的功能,将输出内容作为日志内容处理,主要处理流程如下图:

1673074280_63b916681e1dc2cabcec9.png!small?1673074268637

实现此功能需要在代理中开启可接收远程命令,在/var/ossec/etc/local_internal_options.conf中添加配置项:logcollector.remote_commands=1,在服务器的配置文件/vat/ossec/etc/ossec.conf中添加相应的执行命令:

1673074328_63b916986dab4b39a7c8d.png!small?1673074316612

配置完成后,代理会根据配置项在相应的时间间隔执行命令,收集命令的输出结果,作为日志内容进行分析处理,并在满足警报条件时出发警报。

主动响应

主动响应执行策略以解决收到的主动威胁,例如在满足某些规则后阻止威胁源访问端点机。主动响应执行脚本以应答基于警报级别或规则组触发的特定警报,但如果应答的执行力度不够会增加系统的危险性。其主要处理流程如下图:

1673074381_63b916cd080f3a4879d45.png!small?1673074369257

主动响应是配置在特定警报,警报级别或规则组已被触发执行脚本,分为有状态响应和无状态响应,有状态响应为在指定的时间段后撤消操作,而无状态响应为一次性操作。每个主动响应将执行其关联命令的位置,包括:在触发警报的代理上,在管理器上,在另一个指定代理上或在还包括管理器的所有代理上。

Wazuh提供了一下主动响应脚本内容:

脚本名称

描述

Linux

disable-account.sh

通过设置禁用帐户 passwd-l

firewall-drop.sh

将IP添加到iptables拒绝列表中

firewalld-drop.sh

将IP添加到firewalld下拉列表中

host-deny.sh

将IP添加到/etc/hosts.deny文件中

ip-customblock.sh

自定义OSSEC,可轻松修改以进行自定义响应

ipfw_mac.sh

Mac OS创建的防火墙被删除的响应脚本

ipfw.sh

ipfw创建的防火墙被断开的响应脚本

npf.sh

npf创建的防火墙被删除的响应脚本

ossec-slack.sh

在Slack上发布修改

ossec-tweeter.sh

在Twitter上发布修改

pf.sh

pf创建的防火墙被删除的响应脚本

restart-ossec.sh

更改ossec.conf时自动重启Wazuh

route-null.sh

将IP添加到空路由

Windows

netsh.cmd

使用netsh阻止ip

restart-ossec.cmd

重新启动ossec代理

route-null.cmd

将IP添加到空路由









wazuh规则

Wazuh告警、规则

WAZUH系统使用自定义的规则来检测攻击、入侵、软件滥用、配置问题、应用错误、恶意软件、rootkit、系统异常或安全策略违规等。基于OSSEC提供的一套“开箱即用”的规则,WAZUH对其进行了更新和扩展,以提高自身的威胁检测能力。

目前,WAZUH支持超过4000条规则,这些规则涉及:

Syslog

Docker

CISCO

SonicWall

Sendmail

Postfix

Spamd

Imapd

MailScanner

Microsoft Exchange

Courier

PIX

NetScreen technologies

Mcfee

NextCloud

PaloAlto v9.0

VirusTotal

Suricata

MongoDB

Jenkins

Pluggable Authentication Modules (PAM)

Telnet

SSH

Solaris Basic Security module

Asterisk

Microsoft Windows DHCP

Arpwatch

Symantec

Trend Micro OSCE (Office Scan)

Horde IMP

Roundcube

Wordpress

Compaq Insight Manager (cimserver)

Dovecot

Vm-pop3d

FTP, Proftpd, PureFTP, Vsftpd, Microsoft FTP

OwlH Zeek

Junos

Panda Advanced Protection Service (PAPS)

CheckPoint Smart-1 Firewalls

MacOS SSH

Google Cloud Pub/Sub



WAZUH规则说明和威胁检查示例

具有PCI DSS合规性映射的Netscaler的日志分析规则:

1673074641_63b917d161367564a3efb.png!small?1673074629767

SSH服务器的跟检查规则,映射到CIS安全基准和PCI DSS合规性:

1673074650_63b917da23ac1cb74af24.png!small?1673074638471

目录布局

规则集文件夹结构如下图所示:

1673074667_63b917eb8ecb52bcc6c70.png!small?1673074655847

在ruleset/文件夹中,可找到所有常用规则和解码器。此文件夹内的所有文件将在WAZUH更新过程中被覆盖或修改,因此不要再此文件夹中编辑文件或添加自定义文件。

如果需要执行一些自定义规则或更改既有规则,应使用etc/文件夹。可以在此处添加自己定义的解码器/规则文件或使用系统默认的local_decoder.xml和local_rules.xml文件。

JSON解码器

WAZUH现在为JSON日志集成了一个集成解码器,可以从任何格式来源的数据中提取数据。

该解码器能够提取以下数据类型:

数字

整数或十进制数。

字符串

一个字符序列。

布尔值

true或false值。

空值

空值。

数组

具有零个或多个值的列表。这些值可以不同,但必须属于上述数据类型。不支持对象数组

对象

对象是字符串的键/值对集合。

提取的字段存储为动态字段,并且可以被规则引用。

以下示例显示了WAZUH如何解码JSON日志,并将Suricata数据源相关事件生成警报。

Suricata事件日志:

1673074714_63b9181af35ad32abfc46.png!small?1673074703714

JSON解码器从日志数据中提取每个字段,以便与规则进行比较,这样就不需要特定的Suricata解码器。这些规则将用于根据特定生成JSON事件的数据源的某些字段的存在来识别JSON事件的数据源。

以下示例显示了文件中包含的规则(0470-suricata_rules.xml)如何工作。最初,有一个父规则检查是否存在“时间戳”和“事件类型”字段以确定日志类型(Suricata),然后子规则使用提取的字段的值显示警报。

1673074740_63b918340b0540c8d1634.png!small?1673074729317

自定义规则和解码器

在WAZUH规则集中可以修改默认的规则和解码器,也可以添加新规则和解码器以增加WAZUH的检测能力。

添加新的解码器和规则

可以对local_decoder.xml和local_rules.xml文件进行适当的修改来添加新的解码器和规则。而对于既存解码器和规则的大规模更改/添加,建议创建新的解码器和规则文件。自定义规则的<id>范围在100000到120000之间。

下面将使用一个简单的示例来描述这些过程。这是来自名为example的程序日志:

1673074766_63b9184e47d9d346be882.png!small?1673074754361

首先,对所关注的信息进行解码,因此第一步会将新的解码器添加到/var/ossec/etc/decoders/local_decoder.xml:

1673074774_63b918567aa55d8192829.png!small?1673074763019

然后,将以下内容添加到/var/ossec/etc/rules/local_rules.xml:

1673074784_63b91860086861d5b0627.png!small?1673074772085

可以使用以下方法检查它是否有效/var/ossec/bin/wazuh-logtest:

1673074790_63b918663190f11e37434.png!small?1673074778338

更改系统现有既存规则

对文件夹内任何规则文件的更改(/var/ossec/ruleset/rules)将在版本更新过程中丢失。使用以下过程来保留自定义的更改。

如果想将SSH规则(ID:5710)中定义的警报级别值从5更改为10,需执行以下操作:

  1. 打开规则文件/var/ossec/ruleset/rules/0095-sshd_rules.xml。
  2. 从规则文件中查找并复制以下代码:

1673074811_63b9187b138014369b98a.png!small?1673074799481

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

此外,还可以修改标准解码器。

文件夹中任何解码器文件的更改(/var/ossec/ruleset/decoders)都将在版本更新过程中丢失。使用以下过程来保留自定义的更改。

不幸的是,没有上述规则描述的方式覆盖解码器的工具。但是,可以在任何解码器文件中执行更改,如下所示:

  1. 将解码器文件/var/ossec/ruleset/decoders/0310-ssh_decoders.xml从默认文件夹复制到用户文件夹/var/ossec/etc/decoders以保留更改。
  2. 从OSSEC加载列表中排除原始解码器文件——ruleset/decoders/0310-ssh_decoders.xml。为此,需要使用conf文件中的<decoder_exclude>标签。因此,指定的解码器不会从默认解码器文件夹中加载,而是会加载保存在用户文件夹中的解码器文件。

1673074849_63b918a17f2ccaf6e2c92.png!small?1673074837704

  1. 执行文件中的更改/var/ossec/etc/decoders/0310-ssh_decoders.xml。

告警级别

级别

描述

告警示例

Level 0

忽略,不会采取任何行动

用来避免误报,这里没有安全问题

Level 2

系统低优先级的通知

没有安全相关性的状态消息

Level 3

成功或授权的事件

成功登录,防火墙允许的事件

Level 5

用户生成的错误

密码错误,拒绝操作

Level 6

低威胁的攻击

对系统没有威胁的蠕虫或病毒(例如Linux机器上的Windows蠕虫)

Level 9

来自无效源的错误信息

试图以未知用户或无效的来源登录

Level 10

用户产生重复性的错误

多个错误密码,多次登录失败

Level 11

完整性检查的警告

检测到二进制文件被修改或通过rootcheck检测到rootkit存在信息。它们可能表明袭击成功。

Level 12

重要事件

来自系统或内核的错误或告警

Level 13

异常错误(重要)

常见的攻击模式,如缓冲区溢出尝试

Level 14

重要安全事件

多个检测规则形成关联结果

Level 15

严重的攻击成功

很少产生误报,发现这个级别的告警需要立即处理

使用MITRE ATT&CK安全知识框架提高威胁检测能力

WAZUH的此项功能允许用户自定义警报信息以包含与MITRE ATT&CK安全知识框架中相关的特定攻击信息。MITRE ATT&CK安全知识框架中存储了所有的网络攻击技术以及检测方法和防御措施。当用户希望了解更多的攻击详细信息时,ATT&CK安全知识框架中的知识会给出明确的说明。

配置示例

MITRE ATT&CK为每种攻击技术分配了一个ID。这些攻击技术按照所属攻击战术(防御规避、权限提升等)的不同进行分组,其中一些技术可能属于多个战术。

ATT&CK中的攻击技术T1110与暴力破解相关。该技术非常符合下述规则(ID:100002),该规则检测到暴力破解攻击并生成警报。下面是如何将ATT&CK安全知识框架中的攻击技术扩展到该规则的示例。

将以下代码添加到 /var/ossec/etc/rules/local_rules.xml

重新启动WAZUH,规则配置自动生效。

MITRE 信息出现在规则信息中。警报显示 MITRE ATT&CK安全知识框架中攻击技术的ID 及其相关的攻击战术和技术描述。

使用Kibana查看

我们可以检查警报是否在 Kibana 上正确显示。打开它并添加一个过滤器。

截止2022年4月24日,WAZUH系统默认规则集中,包含了4093项各类规则,涉及140个TTP攻击技术。

# 终端安全 # wazuh # 安全杂谈 # 端点安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录