关于VED-eBPF
VED-eBPF是一款功能强大的内核漏洞利用和Rootkit检测工具,该工具基于eBPF技术实现其功能,可以实现Linux操作系统运行时内核安全监控和漏洞利用检测。
eBPF是一个内核内虚拟机,它允许我们直接在内核中执行代码,而无需修改内核源代码。eBPF程序可以绑定到跟踪点、kprobes和其他内核事件上,以帮助广大研究人员更有效地分析代码执行并收集数据。
功能介绍
VED-eBPF使用了eBPF来跟踪安全敏感的内核行为,并检测潜在安全漏洞或Rootkit所引发的异常。当前版本的VED-eBPF提供了下列两种检测功能:
1、wCFI(控制流完整性)跟踪内核调用栈,以检测控制流劫持攻击。它可以生成一个有效调用站点的位图,并验证每个返回地址是否与已知调用站点匹配;
2、PSD(权限提升检测)跟踪对内核中凭据结构的更改行为,以检测未经授权的权限升级情况;
工具运行机制
VED-eBPF会将eBPF程序绑定到内核函数上,以跟踪执行流并提取安全事件信息。eBPF程序随后会通过perf缓冲区将这些事件信息提交到用户空间以进行后续分析。
wCFI
wCFI通过绑定到命令行指定的函数来跟踪调用栈,每一次调用,都会转储堆栈信息,并分配一个栈ID,然后用返回地址与与计算的位图进行对比验证,如果返回的地址无效,表明发生了栈崩溃,最终生成一个wcfi_stack_event事件,其中包含:
* 栈跟踪数据
* 栈ID
* 无效的返回地址
PSD
PSD可以通过绑定类似commit_creds和prepare_kernel_cred之类的函数来跟踪针对凭证结构的修改行为。每一次调用,它都会提取下列信息:
* 当前进程的凭证
* 凭证哈希和用户命名空间
* 调用栈数据
工具要求
1、Linux内核 v5.17+
2、启用eBPF支持
3、BCC工具
工具下载
由于该工具基于C++开发,因此我们首先需要在本地设备上安装并配置好最新版本的Visual Studio。
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/hardenedvault/ved-ebpf.git
打开Visual Studio,将项目导入之后,完成项目代码的构建和编译即可。
许可证协议
本项目的开发与发布遵循AGPL-3.0开源许可证协议。
项目地址
VED-eBPF:【GitHub】
参考资料
+PROTECTING LINUX AT KERNEL LEVEL WHY AND HOW
GitHub - iovisor/bcc: BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more