sysinternalsEBPF介绍
Linux版Sysmon使用“sysinternalsEBPF”库来处理安全事件监控过程。 eBPF 技术的优点在于允许程序在操作系统内核层的沙盒中运行。eBPF库将支持以下信息的收集:
"sysinternalsEBPF"库采用MIT许可证授权进行开源。该源代码可在GitHubhttps://github.com/Sysinternals/SysinternalsEBPF 上找到 。该仓库里包括eBPF最新的安装和构建说明。
sysinternalsEBPF示意图:
eBPF 库利用了内核内存偏移库,已知内核的偏移量在eBPF安装后存储在 /opt/sysinternalsEBPF/offsets.json 的 JSON 文件中。如果内核不在列表中,sysinternalsEBPF会自动发现该内核的偏移量并将其添加到 /opt/sysinternalsEBPF/sysinternalsEBPF_offsets.conf文件中。有些情况下,自动发现可能会失败,比如内核更新时。此时服务将无法加载,并提供如何更新偏移量的指令。下图是自动发现失败时显示的错误:
GitHub仓库里提供了关于如何构建和配置当前内核偏移的说明 :https://github.com/Sysinternals/SysinternalsEBPF/tree/main/getOffsets
安装与配置
由于每个Linux发行版(甚至每个版本)在安装sysinternalsEBPF和sysmonforlinux包的步骤上略有不同,Linux下Sysmon的安装方式有所不同。每个Linux发行版的Sysmon软件包安装步骤都在 github 上维护:
https://github.com/Sysinternals/SysmonForLinux/blob/main/INSTALL.md。Sysmon for Linux解决方案可以从源码编译并安装,但不推荐用于生产环境,因为这会增加依赖版本追踪的复杂性,并且引入其他包,如果攻击者获得系统访问权限,可能会被滥用。
在包安装的过程中会创建一个sysmon elf二进制文件,格式为/usr/bin/sysmon,这个二进制文件将用于安装和配置服务。
使用Sysmon工具时,Sysmon遇到任何问题都会显示工具的基本帮助信息和问题对应的错误信息。使用"-?"参数来查看Sysmon工具的帮助信息:
- 安装、配置和卸载参数集
- 常见的命令行参数。
- 关于该工具的工作原理的一般说明以及获取更多帮助信息的详细信息。
Sysmon的参数和XML配置文件的结构在Sysmon Schema中定义。该模式可以通过 -s “PrintSchema” 参数来导出到屏幕上;如果没有提供模式版本,会打印默认模式(最新版本的模式)。
Sysmon可运行4中主模式,但帮助信息中只展示了3种:
- 安装——在主机上安装驱动程序、清单和服务。
- 配置——解析给定的配置文件或命令行参数,生成存储在配置文件中的配置。
- 卸载——从主机上移除驱动程序和服务。
使用 "-i" 参数来安装Sysmon,安装流程如下:
- 解压并将自身复制为 /opt/sysmon
- 创建系统服务
- 如果没有配置文件传递到 "-i" 参数,则启用默认配置(ProcessCreation 和 ProcessTermination)。
卸载Sysmon时,如果安装时对Sysmon进行了重命名,则必须运行与安装时主服务同名的二进制文件。使用”-u “参数来卸载Sysmon:卸载命令会执行一系列步骤,卸载服务并从 /opt/sysmon 移除工具文件。可以使用”-u force“参数来强制卸载Sysmon:
/opt/sysmon/sysmon -u force