这样有数据到来时,就会运行注册在 kprobe 和 tracepoint 的回调。 运行机制见下图: 利用Hook 程序将 BPF 的 syscall 转换成 ioctl 形式,将系统调用参数传递给 eBPF 驱动,包含以下功能: #define IOCTL_BPF_MAP_CREATE _IOW(';', 0, union bpf_attr *) #define IOCTL_BPF_MAP_LOOKUP_ELEM _IOWR(';', 1,...
当攻击者试图Hook系统调用(syscall)函数时,这就是函数钩子的一个很好示例。这些高级内核函数用于执行来自用户空间的任务,Hook住它们主要目的是隐藏恶意行为。例如,攻击者将getdents系统调用Hook起来,以隐藏用于列出文件命令(如ps、top和ls)的恶意文件和进程。 通常,通过读取系统调用表并获取系统调用函数的地址来Hook他们。
这样有数据到来时,就会运行注册在 kprobe 和 tracepoint 的回调。 运行机制见下图: 利用Hook 程序将 BPF 的 syscall 转换成 ioctl 形式,将系统调用参数传递给 eBPF 驱动,包含以下功能: eBPF 驱动收到 Ioctl 请求,会根据 cmd 来进行相应的操作,如: A. IOCTL_BPF_MAP_CREATE:创建map。 B. IOCTL_BPF_PROG_LOA...
这样有数据到来时,就会运行注册在 kprobe 和 tracepoint 的回调。 运行机制见下图: 利用Hook 程序将 BPF 的 syscall 转换成 ioctl 形式,将系统调用参数传递给 eBPF 驱动,包含以下功能: #define IOCTL_BPF_MAP_CREATE _IOW(';', 0, union bpf_attr *) #define IOCTL_BPF_MAP_LOOKUP_ELEM _IOWR(';', 1,...
利用Hook 程序将 BPF 的 syscall 转换成 ioctl 形式,将系统调用参数传递给 eBPF 驱动,包含以下功能: #define IOCTL_BPF_MAP_CREATE _IOW(';', 0, union bpf_attr *) #define IOCTL_BPF_MAP_LOOKUP_ELEM _IOWR(';', 1, union bpf_attr *)
利用Hook 程序将 BPF 的 syscall 转换成 ioctl 形式,将系统调用参数传递给 eBPF 驱动,包含以下功能: #define IOCTL_BPF_MAP_CREATE _IOW(';', 0, union bpf_attr *) #define IOCTL_BPF_MAP_LOOKUP_ELEM _IOWR(';', 1, union bpf_attr *)
利用Hook 程序将 BPF 的 syscall 转换成 ioctl 形式,将系统调用参数传递给 eBPF 驱动,包含以下功能: #defineIOCTL_BPF_MAP_CREATE_IOW(';',0, union bpf_attr *)#defineIOCTL_BPF_MAP_LOOKUP_ELEM_IOWR(';',1, union bpf_attr *)#defineIOCTL_BPF_MAP_UPDATE_ELEM_IOW(';',2, union bpf_attr *)#...
截止到内核 6.2.0 版本, BPF 自身安全相关的LSM hook 函数有 7 个,通过编译条件宏 CONFIG_BPF_SYSCALL 控制,主要设涉及 bpf 系统调用、BPF 程序和 BPF map 相关操作: #ifdef CONFIG_BPF_SYSCALL LSM_HOOK(int, 0, bpf, int cmd, union bpf_attr *attr, unsigned int size) ...
把BPFattach到hook上之后, BPF程序的refcnt++. 此时创建, 加载BPF的用户空间程序就可以退出了. 因此还有hook保持着对BPF程序的引用, BPF程序并不会被回收. 总之, 只要BPF对象的引用计数大于0, 内核就不会回收 BPF文件系统(BPFFS) 用户空间的程序可以把一个BPF或者BPF映射固定到BPFFS, 以生成一个文件. pin操作...
利用Hook 程序将 BPF 的 syscall 转换成 ioctl 形式,将系统调用参数传递给 eBPF 驱动,包含以下功能: #define IOCTL_BPF_MAP_CREATE _IOW(';', 0, union bpf_attr *)#define IOCTL_BPF_MAP_LOOKUP_ELEM _IOWR(';', 1, union bpf_attr *)#define IOCTL_BPF_MAP_UPDATE_ELEM _IOW(';', 2, union ...