AdityaBhatt3010/Malware-Execution-Detection-using-Wazuh-and-Auditd
GitHub: AdityaBhatt3010/Malware-Execution-Detection-using-Wazuh-and-Auditd
该项目展示了如何通过集成 Wazuh 和 Auditd 实现对 Linux 端点上特权命令执行活动的集中化监控与威胁狩猎。
Stars: 1 | Forks: 0
# 使用 Wazuh 和 Auditd 进行恶意软件执行检测
## 概述
安全运营中心 (SOC) 的关键目标之一是监控进程执行,特别是当特权用户执行可能表明权限提升、持久化机制、恶意软件活动或未经授权的管理操作的命令时。
在这个概念验证 (PoC) 中,我们在 Wazuh Agent 上配置 Auditd,以监控由 root 用户执行的命令。随后,这些事件将被转发到 Wazuh,您可以在其中通过 Threat Hunting 模块对它们进行调查。
## 目标
本次实验的目标是:
* 在 Wazuh Agent 上安装并配置 Auditd。
* 将 Auditd 日志转发到 Wazuh。
* 创建 audit 规则以监控特权用户的命令执行。
* 在 endpoint 上生成活动。
* 在 Wazuh Dashboard 中可视化生成的警报和事件。
# 第一步:安装 Auditd
Auditd 是 Linux Audit Daemon,负责记录与安全相关的系统事件,例如:
* 进程执行
* 文件访问
* 用户活动
* 权限提升尝试
* 系统调用
更新系统并安装 Auditd:
```
sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get install auditd
```
默认情况下,Auditd 将日志存储在:
```
/var/log/audit/audit.log
```
验证日志文件是否存在并包含事件:
```
cd /var/log/audit/
cat /var/log/audit/audit.log
```
以下截图展示了正在被访问的 Auditd 日志文件。

对于日常分析,通常不需要查看整个日志文件。相反,仅显示最近的事件更为实用。
```
tail -n50 audit.log
```
此命令显示 Auditd 生成的最后 50 条记录。

# 第二步:配置 Wazuh 以摄取 Auditd 日志
尽管 Auditd 现在正在本地收集事件,但 Wazuh 不会自动处理这些日志。我们必须明确告诉 Wazuh Agent Auditd 日志文件的位置。
打开 Wazuh Agent 配置文件:
```
nano /var/ossec/etc/ossec.conf
```
在 `` 闭合标签之前,添加以下配置:
```
audit
/var/log/audit/audit.log
```
### 此配置的作用是什么?
* `log_format` 告诉 Wazuh 数据源是 Auditd。
* `location` 指定 Auditd 日志文件。
* Wazuh Agent 将持续监控此文件并将事件转发给 Wazuh Manager。

保存配置后,重启 Wazuh Agent:
```
systemctl restart wazuh-agent.service
```
# 第三步:为特权命令执行创建 Audit 规则
对于此 PoC,我们要监控由 root 用户执行的命令。
打开 Auditd 规则文件:
```
nano /etc/audit/audit.rules
```
添加以下规则:
```
-a exit,always -F euid=0 -F arch=64 -S execve -k audit-wazuh-c
-a exit,always -F euid=0 -F arch=32 -S execve -k audit-wazuh-c
```
### 理解规则
```
-a exit,always
```
在受监控的系统调用完成时记录事件。
```
-F euid=0
```
针对以有效 UID 为 0 (root) 运行的进程。
```
-F arch=64
```
监控 64 位系统调用。
```
-F arch=32
```
监控 32 位系统调用。
```
-S execve
```
`execve` 系统调用负责启动程序和命令。监控此系统调用使我们能够跟踪系统上的命令执行情况。
```
-k audit-wazuh-c
```
分配一个自定义 key 以帮助识别和搜索匹配的事件。

重新加载 Auditd 规则:
```
auditctl -R /etc/audit/audit.rules
```
这将应用新的监控配置,而无需重启。

# 第四步:生成活动
为了验证监控是否正常运行,请以 root 身份执行一条命令。
对于此 PoC,我们使用:
```
netstat
```
### 为什么使用 Netstat?
`netstat` 命令显示活动的网络连接、监听端口和路由信息。
从安全角度来看,攻击者在侦查和后渗透活动期间通常会枚举网络连接。因此,观察诸如 `netstat` 之类的命令执行事件可以为 endpoint 活动提供有价值的可见性。
```
netstat
```

# 第五步:在 Wazuh 中调查事件
导航到:
```
Wazuh Dashboard
└── Target Agent
└── Threat Hunting
└── Events
```
您现在应该能看到从 agent 转发过来的 Auditd 事件。
这些事件包含有用的信息,例如:
* 执行的命令
* 用户上下文
* 进程详情
* 时间戳
* Audit key
* 主机信息
这使得安全分析师能够直接从 Wazuh 界面调查潜在的可疑命令执行活动。

# 检测流程
```
Command Executed
│
▼
Auditd
│
▼
audit.log
│
▼
Wazuh Agent
│
▼
Wazuh Manager
│
▼
Threat Hunting
│
▼
Analyst Investigation
```
# 总结
在此 PoC 中,我们成功地将 Auditd 与 Wazuh 集成,以监控特权用户执行的命令。
通过创建自定义 Auditd 规则并将生成的日志转发到 Wazuh,我们获得了对进程执行事件的可见性,这些事件可能表明权限提升尝试、攻击者侦查、恶意软件执行或未经授权的管理操作。
虽然本演示使用了一个简单的命令 (`netstat`) 来生成事件,但相同的方法可以扩展到监控敏感二进制文件、检测可疑行为,并增强真实 SOC 环境中的 endpoint 可见性。
这项基础技术广泛适用于:
* 安全运营中心 (SOC)
* Threat Hunting
* Detection Engineering
* Incident Response
* Endpoint Monitoring
* Linux 安全监控
标签:Auditd, CSV导出, PB级数据处理, Wazuh, 安全运维, 应用安全, 权限提升检测