使用WAZUH检测LD_PRELAOD劫持、SQL注入、主动响应防御

本文主要是介绍使用WAZUH检测LD_PRELAOD劫持、SQL注入、主动响应防御,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、检查后门

使用工具检测后门

1.chkrootkit

2.rkhunter

手动检查文件

检查ld.so.preload文件

2、检测LD_PRELOAD

ubuntu配置

wazuh配置

3、检测SQL注入

ubuntu配置

攻击模拟

4、主动响应


wauzh的安装以及设置代理可以参考本篇:WAZUH的安装、设置代理-CSDN博客

前面我们也介绍过使用LD_PRELOAD劫持动态链接库 ,然后本篇就介绍一下如何使用wazu来检测LP_PRELOAD劫持和SQL注入

1、检查后门

使用工具检测后门

1.chkrootkit

可以直接在命令行中进行安装

apt-get install chkrootkit

然后直接执行chkrootkit就会自动进行后门检测

2.rkhunter

该工具也同样可以使用apt命令直接安装

apt install rkhunter

安装完成后,执行rkhuter -c就会进行后门检测

手动检查文件

虽然工具会提高查找效率,但是我们进行后门检测时,不能仅仅依赖工具,还需要检查一些文件中是否有恶意的文件

检查ld.so.preload文件

/etc/ld.so.preload文件是Linux系统中的一个配置文件,它用于指定在程序加载时要预先加载的共享库,这些共享库会在程序启动时被加载到内存中,以便提供额外的功能或修改程序的行为。

我们如果发现这个文件里面有东西,那么大概率都是攻击者的恶意文件

2、检测LD_PRELOAD

那么下面就演示一下使用wazuh来检测LD_PRELOAD劫持的过程

ubuntu配置

(1)首先我们需要在代理设备上安装监控软件

这里的代理设备以Ubuntu为例,安装监控软件

apt-get install -y auditd

(2)加入对ld_preload劫持的监控规则

echo "-w /etc/ld.so.preload -p wa -k possible_preload_hijack" >> /etc/audit/rules.d/audit.rules

这条规则的意思就是:监控这个/etc/ld.so.preload文件的写入或者增加,就会发出告警 possible_preload_hijack

增加完成后我们可以看一下该文件

可以看到这条规则已经加入到文件里面了

(3)加入规则后需要重新加载以下规则文件

auditctl -R /etc/audit/rules.d/audit.rules

(4)可以查看一下规则是否成功加载 

auditctl -l

(5)然后需要修改一下配置文件

vim /var/ossec/etc/ossec.conf

将一下内容增加到locafile文件的最后

  <localfile><log_format>syslog</log_format><location>/var/log/auidt/audit.log</location></localfile>

这里的意思就是监控环境变量

最后重启客户端的wazuh-agent代理服务即可

systemctl restart wazuh-agent

(6)我们现在可以在服务端监控客户端的ld.so.preload文件中试着写一个文件看看规则是否会生效

然后试着执行任意命令:

可以看到,由于在执行命令前会加载该文件中的so文件,但是由于我们随意写了一个文件,就报错说没有该文件,但是确实是加载了

然后我们查看一下日志文件:

tail /var/log/audit/audit.log

可以看到日志文件也记录了该日志

wazuh配置

(1)编辑触发规则

进入到目录:/var/ossec/etc/rules
增加规则:vim local_rules.xml
规则内容:
将一下内容增加到该文件下面<rule id="100125" level="10"><if_sid>80700</if_sid><field name="audit.key">possible_preload_hijack</field><description>[Config file "ld.so.preload" has been added, modified, or deleted]: Possible dynamic linker hijacking</description><mitre><id>T1574.006</id></mitre></rule>

注:这里不在/var/ossec/ruleset/rules目录中写而是在ossec/rules/ruleset/etc/rules/用户自定义目录写,是因为当wazu升级后如果写在前面的目录由于系统会自动更细,自己写的规则会被删除,但是自定义的规则就不会被删除

(2)重启服务

systemctl restart wazuh-manager.service

(3)然后在客户端模拟恶意用户试着给ls.so.preload文件中增加一个.so文件

(4)然后在wazuh中查看一下安全事件

可以看到了因为客户端的ld.so.preload文件被修改因此wazu上产生了该事件的警告

3、检测SQL注入

不知道SQL注入的小伙伴可以简单的这样理解sql注入即可:SQL 注入是一种攻击,攻击者将恶意代码插入到传输到数据库服务器的字符串中进行解析和执行。成功的 SQL 注入攻击会导致对数据库中包含的机密信息进行未经授权的访问。

本实验中,我模拟sql注入的行为,对ubuntu主机的服务进行sql注入行为然后在wazuh中进行检测

ubuntu配置

执行以下步骤安装 Apache 并配置 Wazuh 代理以监视 Apache 日志。

  1. 更新本地软件包并安装 Apache Web 服务器:

    sudo apt update
    apt install apache2
  2. 如果防火墙已启用,请将其修改为允许外部访问 Web 端口,如果防火墙已禁用,请跳过此步骤。

    ufw app list
    ufw allow 'Apache'
    ufw status
  3. 检查 Apache 服务的状态以验证 Web 服务器是否正在运行:

    systemctl status apache2

  4. 使用curl命令或http://<UBUNTU_IP>在浏览器中打开查看Apache登陆页面并验证安装:

     
  5. 将以下行添加到 Wazuh 代理/var/ossec/etc/ossec.conf文件中,这允许 Wazuh 代理监控 Apache 服务器的访问日志:

      <localfile><log_format>apache</log_format><location>/var/log/apache2/access.log</location></localfile>
    

      6 . 重新启动 Wazuh 代理以应用配置更改:

systemctl restart wazuh-agent

攻击模拟

(1)我们模拟攻击者的SQL注入行为

curl -XGET "http://<UBUNTU_IP>/users/?id=SELECT+*+FROM+users";

当然也可以在浏览器中使用GET传参的方式注入

(2)然后查看以下apache2的日志 

cat /var/log/apache2/access.log

可以看到有记录我们访问的日志

(3)那么再看来看看wazuh那么有没有产生安全事件

可以看到这里产生了安全日志

有的小伙伴会说,为什么这里在wazuh上没有像上面检测ld_preload那样编辑一个sql注入的触发规则呢?原因是wazuh已经将sql注入相关的规则内置在规则里面了,不需要我们手动编写,直接使用即可

4、主动响应

现在我们已经可以检测一些攻击者的攻击事件了,那么检测后如何进行主动响应来进行防御呢?

下面我们就以SQL注入为例来演示一下使用wazuh来进行主动响应

主动响应我们主要是在服务端配置,本例中使用wazuh主机上进行配置

(1)进入/var/ossec/etc目录中

(2)编辑配置文件: vim ossec.conf

找到active respone部分,将以下内容增加进去:

<command><name>host-deny</name><executable>host-deny</executable><timeout_allowed>yes</timeout_allowed>
</command>

这里的意思是增加了一个命令,名为host-deny

但是只有命令是不行的,还需要有调用命令的调用

(3)增加调用

<active-response><command>host-deny</command><location>local</location><rules_id>31103,31171</rules_id>
</active-response>

(4)添加完成后重启

systemctl restart wazuh-manager

(5)现在我们模拟恶意用户使用SQL注入攻击ubuntu主机

可以看到,现在我们再次访问时就已经无法访问了

 那么我们来看看ubuntu主机中的host.deny文件

(6)使用firewall命令也可以实现同样的效果

只需要将调用修改为调用firewall命令即可

<active-response><command>firewall-drop</command><location>local</location><rules_id>31103,31171</rules_id>
</active-response>

 (7)然后使用同样的方法来访问,就会发现出现同样的效果

 (8)在iptables中查看

当然,wazuh还可以检测防御的还有很多,这里就不再介绍,详细的可以见参考链接

参考链接:

Detecting common Linux persistence techniques with Wazuh

How to configure active response - Active response

这篇关于使用WAZUH检测LD_PRELAOD劫持、SQL注入、主动响应防御的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559959

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(