首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

admin 2022年11月13日16:48:09评论108 views字数 2435阅读8分7秒阅读模式

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

随着智能化、数字化、云化的飞速发展,全球基于Linux系统的设备数以百亿计,而这些设备的安全保障主要取决于主线内核的安全性和健壮性。

 

传统的内核安全存在周期长、效率低以及版本适配的问题,有没有新的技术能够实现高效检测内核漏洞?

11月12日,由西安邮电大学主办,中国科学院软件研究所指导的首届中国eBPF大会在线上顺利举办!会议邀请到了中山大学、浙江大学、东南大学等国内名校华为、阿里、字节跳动等众多国内名企共同探讨eBPF技术发展、在网络安全领域或其他的应用。

 

深信服创新研究院高级Linux内核技术专家许庆伟荣幸受邀参与本次大会。

主会场上,许庆伟与来自阿里、华为、腾讯的技术专家,及来自东南大学的教授、浙江大学的学生同台针对「eBPF技术及发展」进行圆桌研讨;在分会场二「eBPF在网络安全的应用」中,许庆伟又为线上诸多技术专家及同好分享了《基于eBPF的内核漏洞检测实践》议题。


首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

 

以下是许庆伟在本次大会中的分享回顾。

议题分享:

基于eBPF的内核漏洞检测实践

许庆伟从“内核安全策略演进”切入,阐述了传统内核安全存在的问题,并从Seccomp阶段到eBPF阶段为我们分析BPF安全特性的演进。


首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践


后用一个实例展示eBPF如何快速高效地检测到Rootkit攻击:

1、为了Hook内核函数,必须首先获得想要钩住的对象访问权,例如,它可以是保存所有系统调用函数地址的系统调用表。然后,保存函数的原始地址并覆盖它;在某些情况下,由于当前位置的内存权限,还需要获取CPU中控制寄存器的权限。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

 

2、通过内核的core_text边界检测来实现这一点。内核中的内存被分为几个部分,其中一个是core_text段,它保存内核中的原始函数;此部分注册在特定的内存映射区域中,该区域不受更改或操作的影响。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践
首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践


 

3、使用libbpf的helper来获取系统调用表地址,并将其添加到事件内核符号依赖项中;

注意,detect_hooked_sycalls事件是派生事件。这意味着在我们接收到系统调用的地址并检查它们之后,我们将创建一个新的detect_hooked_sycalls事件。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

 

4、将它与系统调用号一起传递,以便使用BPFMap检查内核空间。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践


5、为了检查内核空间中的那些系统调用,基于security_file_ioctl上的kprobe创建一个事件,它是ioctl系统调用的一个内部函数;

这样就可以通过使用用户空间的特定参数触发系统调用来控制程序流,接下来用一个特定的命令触发ioctl:

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

 

6、在内核空间中开始检查ioctl命令是否相同,以及调用该系统调用的进程是否为Tracee。这样就可以验证只有当用户要求Tracee检查时才会发生检测的需求。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践


7、遍历系统调用映射,通过使用READ_KERN()来获取系统调用表的地址。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

 

8、在用户空间中,将这些地址与libbpf helpers进行比较。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践


9、使用insmod函数加载Diamorphine (.ko)的内核对象文件,目标是查看Tracee的检测结果;

通常,如果选择了detect_hooked_sycall事件,Tracee将发送一个hooked_sycalls事件,以确保系统没有被破坏。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践


10、Tracee检测到getdents和getdents64这些挂起的系统调用。TNT团队使用它们来隐藏大量加密活动导致的CPU负载过高,以及通常用于从用户空间发送命令来杀死进程的kill函数;

 

在这种情况下,rootkit使用kill -63作为用户空间和内核空间之间的通信通道。同样,如果再次运行Diamorphine和Tracee使用json输出,参数将显示Diamorphine的恶意钩子。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践


11、通过Tracee-rules,可以看到有detect_hooked_sycall事件的新签名,即检测到异常rootkit攻击。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

圆桌环节:

eBPF技术及发展

Q1 目前正在研究的与eBPF相关的事:

深信服主要的业务之一是安全,目前市面上的安全策略和安全方案基本都还在应用层。但近年来eBPF基础设施的安全性也越来越重要,现在也常看到有基于eBPF的攻击行为,加上eBPF在云原生的应用,针对内核的攻击行为势必越来越多,内核安全漏洞的危害性也被人们所意识,因此深信服创新研究院把部分研究重心放在内核层,比如我一直在研究的LSM和eBPF的结合。

Q2 谈eBPF未来的发展:

我近期也对eBPF做了很多思考,如其他教授、专家所说,目前eBPF也存在着碎片化、不标准的问题。所以对于未来的发展,我这边有2个初步想法:


1、做一套从底到上的标准:内核态向上有一层标准接口,应用态也有一层标准接口。虽然eBPF有辅助函数,但也会存在很多编译、语言、代码框架等的问题,因此需要一套从底到上的标准;


2、针对安全等方面可做统一规范:从安全的角度看,可观测性的能力还比较弱,都仅处于初级的检测并告警的阶段,如果做出阻断动作,就会影响到业务。因此针对安全等重要方面,可以从可观测性或平台标准化做统一的规范,对整体eBPF的发展也将有很大帮助。

Q3 eBPF理想的编程语言需要具备是什么特点?

我的观点是需要建立一套标准。不管从内核态角度和应用态角度看,下发到内核态,都亟需一套标准化的框架和接口。现在我们提出的观点是,希望有更多的初学者能够更深入地使用eBPF,那么就应该降低使用的复杂性,或在复杂性上做个封装,才能够引导更多人来学习和使用eBPF。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

深信服千里目安全技术中心-创新研究院一直致力于安全和云计算领域的核心技术前沿研究,推动技术创新变革与落地,拥有安全和云计算领域500+ 专利,实现攻击和检测技术的相互赋能,并及时把能力输入到业务线中,实现自身产品的迭代优化。未来,深信服千里目安全技术中心也将不断提高专业技术造诣,深度洞察网络安全威胁,持续为网络安全赋能。

首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

原文始发于微信公众号(深信服千里目安全技术中心):首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月13日16:48:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   首届中国eBPF大会分享 | 基于eBPF的内核漏洞检测实践http://cn-sec.com/archives/1406063.html

发表评论

匿名网友 填写信息