EBPF是一种众所周知的技术,用于提供可编程性和敏捷性,特别是用于扩展ANOS内核,用于使用DOS保护和可观察性。此项目是使用现有的EBPFTOOLCHAINS和Linux生态系统中的APIS熟悉的工作进展,以便在Windows之上使用。也就是说,这将现有的EBPF项目作为子模块,并在介于Windows的顶部添加它们之间的图层。
如图所示,现有的EBPF Toolchains(Clang等)可用于以各种语言从源代码生成EBPF字节码。字节码可以由任何应用程序消耗,或者通过NetSh命令行工具,它使用共享的库,虽然这仍然正在进行中。
EBPF字节码将被发送到静态验证器(PREVAIL验证程序),该静态验证器(以Windows安全环境托管)托管(允许内核组件信任用户模式守护程序的Windows安全环境签名)。如果字节码通过所有验证者检查,它可以加载到解释器(从内核模式执行上下文中的UBPF中,编译(通过UBPF JIT编译器)并具有本质代码LoadInto内核模式执行上下文(但请参阅关于HVCI底部的常见问题解答)。
临时注意:有些部分仍在开发中,可能不会出现在构建主分支机构时,但仍然可以立即测试端到端功能,而安全硬化仍在进行中。
安装到内核模式执行上下文中的EBPF程序可以附加到各种钩子(到目前为止的挂钩:XDP和套接字绑定挂钩),并通过EBPF Shim呼叫各种助手API,内部包裹公共Windows内核API,允许使用eBPF在现有版本的Windows中.Oore Hooks和Helpers将随时间添加。
此项目支持Windows 10上的EBPF,以及Windows Server 2016或更高版本。尝试此项目,请参阅我们的入门指南。
Windows项目的EBPF利用现有项目,包括IOVISOR UBPF项目和PREVAIL验证者,通过为该代码添加特定于Windows的托管环境,在Windows之上运行它们。
意图是为使用应用于操作系统生态系统的CommonHooks和帮助程序的代码提供源代码兼容性。
Linux提供了许多钩子和帮助者,其中一些是非常适用于其他平台的Linux特定的
同样,Windows项目的EBPF公开了libbpf apisto为与ebpf程序交互的应用程序提供源代码兼容性。
EBPF程序可以在解释器中或使用JIT编译器进行处理。
管理程序强制守则Integrity(HVCI)是一个机制来自Hyper-V,如Hyper-V,使用硬件虚拟化来保护内核模式进程反对注入和执行恶意或未验证的代码。代码完整性验证是在抵抗恶意软件攻击的安全环境中执行的,并且通过管理程序设置内核模式的页面权限。
由于执行此类代码完整性检查的虚拟机管理程序将拒绝接受aren' t签名的代码页面,符号为管理程序信任,这确实会影响自然运行的EBPF程序。因此,当启用HVCIIS时,EBPF程序以解释模式工作正常,但在使用JIT编译时不起作用。