0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LKRG技术原理分析

Linux阅码场 来源:Linux阅码场 作者:Linux阅码场 2022-09-06 09:18 次阅读

一、背景介绍

虽然经常更新内核版本通常被认为是一种安全最佳实践,但由于各种原因,尤其是生产环境中的服务器无法这样操作。这就意味着在机器运行时,会存在利用已知的漏洞(当然,还会有一些未知的漏洞)来进行攻击的情况,所以需要某种方法来检测和阻止对这些漏洞的利用,这正是Linux Kernel Runtime Guard(Linux内核运行时保护LKRG)诞生目的所在。

LKRG出自Openwall项目,该项目因其安全性增强的Linux发行版而闻名。Openwall的创始人亚历山大·佩斯利亚克(Alexander Peslyak),在安全领域也很极为出名。他在当年1月底宣布LKRG是“我们有史以来最具争议的项目”。发布的0.0版本“相当草率”,Peslyak在LKRG 0.1发布公告中说;首席开发者Adam“pi3”Zabrocki根据10天的反馈整理内容并添加了一些新功能。

LKRG在Linux内核运行时对完整性进行检查,并检测内核的安全漏洞。LKRG是一个内核模块(不是内核补丁),所以它可以针对各种主线和发行版内核进行构建和加载,而不需要打补丁。目前支持的内核版本已更新至5.19,并支持x86-64、32位x86、AArch64 (ARM64)和32位ARM这几类的CPU架构。

二、LKRG技术原理分析

LKRG对正在运行的Linux内核进行检测,并希望能够及时响应对正在运行的进程用户id等凭证未经授权的修改(完整性检查)。对于进程凭据,LKRG尝试检测漏洞,并在内核根据未经授权的凭据授予访问权限(例如打开文件)之前采取行动。Juho Junnila的论文题为“Linux Rootkit检测工具的有效性”,显示了LKRG可以作为有效的内核Rootkit检测器。LKRG挫败了许多预先存在的Linux内核漏洞的利用,并且很可能会检测并防御许多未来没有特意试图绕过LKRG的利用(包括未知的漏洞)。虽然LKRG在设计上是可以绕过的,但这种绕过需要更复杂和/或更不可靠的漏洞。

就其核心而言,LKRG是一个可加载的内核模块,它试图检测正在运行的内核是否存在更改情况,以表明正在对其使用某种类型的漏洞利用。除此之外,它还可以检查系统上运行的进程,以查找对各种凭证的未经授权修改,以防止这些更改授予额外的访问权限,这是exploit试图做的事情。

三、LKRG流程

b9dcc5e8-2d80-11ed-ba43-dac502259ad0.png

为了跟踪正在运行的内核,LKRG创建了一个数据库,其中包含关于系统及其上运行的内核的各种类型信息的散列。它跟踪系统中可用的和活动的cpu,以及它们的中断描述符表(idt)和特定于模型的寄存器(MSRs)的位置和内容。由于插入(或从系统中拔出)的cpu数量的变化,内核可能会修改自己,所以LKRG必须准备好根据这些事件重新计算一些哈希值。

LKRG除了跟踪内核.text、.rodata和异常向量表之外,也会跟踪每个加载的内核模块,包括它的struct模块指针、名称、.text的大小和哈希值等信息,以及模块特定的信息。为了检测修改,需要定期验证存储的值。这是通过许多机制实现的:

  1. 首先是定时检查计时器,检测周期可以通过sysctl接口设置;

  2. 当检测到模块加载或cpu热插拔活动,并且可以通过另一个sysctl手动触发时,它也会运行该检查;

  3. 系统中的其他事件(例如CPU空闲、网络活动、USB更改等)将触发验证,尽管只有一定百分比的时间来降低性能影响。例如,CPU空闲将触发0.005%的时间验证,而USB更改将触发50%的时间验证;

所有这些都是为了保护运行时内核本身的完整性,但漏洞利用通常会针对系统上运行的进程,以提高特权等,这些信息保存在内核的内存中。因此LKRG还会跟踪每个进程的一系列不同属性,并维护自己的任务列表,用于验证内核的列表。如果两个进程发生分歧,则终止受影响的进程,目的是在被漏洞利用差异之前进行防御。

LKRG跟踪的目标包括task属性,如task_struct的地址、进程名称和ID、cred和real_cred凭据结构的地址、与之关联的各种用户和组ID、SELinux设置以及seccomp配置。所有这些信息在每次系统调用(例如setuid(), execve())或系统中发生其他事件(例如,在打开文件之前检查权限)时被验证。此外,每次运行内核验证时都要执行进程列表验证。每次都要验证所有进程,而不仅仅是进行系统调用的进程,任何差异都会导致终止有差异的进程。
ba116ee2-2d80-11ed-ba43-dac502259ad0.png

LKRG测试了一些已知内核漏洞 (如CVE-2014-9322, CVE-2017-6074),性能的影响约为6.5%。

四、LKRG防御种类

非法提权(Illegal Elevation of Privileges)

  1. Token / pointer swapping

  2. 非法调用comit_creds()

  3. 覆写cred/read_cred结构体

沙箱逃逸

  1. Namespace逃逸

  2. 容器逃逸

异常修改CPU状态
异常修改内核的.text和.rodata段

五、绕过LKRG防御

为了说明LKRG的漏洞检测能力,在对发行版内核的测试中,LKRG成功检测到CVE-2014-9322 (badret)、CVE-2017-5123 (waitid(2) missing access_ok)、CVE-2017-6074(在DCCP协议中使用后free)的某些预先存在的漏洞。

但是,它无法检测到CVE-2016-5195 (Dirty COW)的漏洞,因为这些漏洞直接针对用户空间,即使是通过内核来进行操作。在Dirty COW中,LKRG的“绕过”是由于漏洞的性质和利用它的方式,这也是未来利用类似的直接针对用户空间绕过LKRG的一种方式。

从检测端避开LKRG:

  1. 覆盖LKRG不保护的关键元数据

  2. 将攻击移动到用户空间

  3. 赢得竞态

从正面攻击LKRG角度:

  1. 攻击LKRG内部的同步机制和锁机制

  2. 找到LKRG所有的上下文并禁用它们

  3. 通过内核直接攻击用户空间(如DirtyCOW)

六、增强LKRG防御

计算关键metadata的哈希值
保护范围:

  1. 发送到所有CPU中的核心数据IPI (Inter-Processor-Interrupt),并独占地运行LKRG的保护功能(IDT/MSR/CRx/等)

  2. Linux内核.text部分

  3. Linux内核.rodata部分

  4. Linux内核的异常向量表

  5. 关键的系统全局变量,如SMEP和SMAP

  6. 所有动态加载的模块及其在内部结构中的顺序;

  7. 如有IOMMU,也可对其防护

pCFI机制

  1. 检测ROP

  2. 检测栈迁移

  3. 非.text数据的利用

  4. 动态生成可执行page的利用

通过sysctl动态配置LKRG


root@ubuntu:~/lkrg# sysctl -a|grep lkrglkrg.block_modules = 0lkrg.heartbeat = 0lkrg.hide = 0lkrg.interval = 15lkrg.kint_enforce = 2lkrg.kint_validate = 3lkrg.log_level = 3lkrg.msr_validate = 1lkrg.pcfi_enforce = 1lkrg.pcfi_validate= 2lkrg.pint_enforce = 1lkrg.pint_validate= 3lkrg.profile_enforce = 2lkrg.profile_validate = 9lkrg.smap_enforce = 2lkrg.smap_validate= 1lkrg.smep_enforce = 2lkrg.smep_validate = 1lkrg.trigger = 0lkrg.umh_enforce = 1lkrg.umh_validate=1

	

七、结论

从以上LKRG原理的角度来分析,对于需要仔细考虑内核的威胁模型以及具体需求的个人或公司来说,LKRG的功能是有价值的。所以可以作为系统级别纵深防御策略中的另一道防线,而不是“一招胜天”的灵丹妙药。我们知道,内核中充满了各种类型的自修改代码,从跟踪点和其他调试特性到各种优化,因此保护运行时的内核完整性并不是一项简单的任务。本文分析了LKRG的原理与优劣势解析,下篇将从实际案例和代码的角度来分析,为什么会选择LKRG做运行时安全检测,敬请期待。


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11320

    浏览量

    209846
  • 服务器
    +关注

    关注

    12

    文章

    9234

    浏览量

    85643
  • 数据库
    +关注

    关注

    7

    文章

    3826

    浏览量

    64508
收藏 人收藏

    评论

    相关推荐

    XRF技术在材料分析中的应用

    随着科技的发展,材料科学领域对精确、快速的分析技术的需求日益增长。X射线荧光(XRF)技术作为一种成熟的分析手段,因其操作简便、分析速度快、
    的头像 发表于 12-28 09:21 232次阅读

    FIB技术在芯片失效分析中的应用

    半导体行业的技术革新与挑战在半导体行业,技术的快速进步带来了集成电路尺寸的缩小和功能的增强。但同时,这也带来了新的挑战,尤其是在故障定位和分析领域。为了应对这些挑战,科研人员开发了一系列尖端
    的头像 发表于 12-26 14:49 349次阅读
    FIB<b class='flag-5'>技术</b>在芯片失效<b class='flag-5'>分析</b>中的应用

    相位噪声分析仪的技术原理和应用

    相位噪声分析仪是一种用于信息科学与系统科学、电子与通信技术、计算机科学技术、航空、航天科学技术等领域的电子测量仪器。以下是对其技术原理及应用
    发表于 12-13 14:21

    电视信号分析仪的技术原理和应用

    电视信号分析仪是一种用于分析电视信号质量和性能的设备,其技术原理和应用对于广播电视行业具有重要意义。以下是对电视信号分析技术原理及应用的详
    发表于 12-12 14:35

    数字通信分析仪的技术原理和应用

    数字通信分析仪是一种用于航空、航天科学技术领域的工艺试验仪器,也广泛应用于通信技术的研发、器件验证和批量收发信机生产领域。以下是对其技术原理及应用的详细阐述:一、
    发表于 12-10 14:32

    FIB技术:芯片失效分析的关键工具

    芯片失效分析的关键工具在半导体行业迅速发展的今天,芯片的可靠性成为了衡量其性能的关键因素。聚焦离子束(FIB)技术,作为一种先进的微纳加工技术,对于芯片失效分析至关重要。在芯片失效
    的头像 发表于 11-28 17:11 405次阅读
    FIB<b class='flag-5'>技术</b>:芯片失效<b class='flag-5'>分析</b>的关键工具

    射频分析仪的技术原理和应用场景

    射频分析仪是一种功能强大的电子测量仪器,在无线通信、电子测试等领域具有广泛的应用。以下是关于射频分析仪的技术原理和应用场景的详细介绍:一、射频分析仪的
    发表于 11-26 14:32

    导航分析仪的技术原理和应用场景

      导航分析仪的技术原理  信号接收与处理:信号接收:导航分析仪能够接收来自导航卫星、地面导航基站等发射的导航信号。这些信号包含了卫星的位置、时间等信息,以及地面基站的相关导航指引信息。例如
    发表于 11-19 15:13

    无线通信频谱分析仪的技术原理和应用场景

    无线通信频谱分析仪是一种用于测量信号频谱特性的重要仪器,其技术原理和应用场景如下:技术原理无线通信频谱分析仪的工作原理主要基于傅立叶变换,这是一种将信号从时域转换到频域的数学工具。具体
    发表于 11-07 15:13

    陆地移动无线电调制分析仪的技术原理和应用场景

    陆地移动无线电调制分析仪是一种专用于陆地移动无线电(LMR)系统的高性能测试设备,其技术原理和应用场景如下:技术原理陆地移动无线电调制分析仪通常基于先进的手持式平台构建,结合了高性能的
    发表于 11-05 14:28

    参数分析仪的技术原理和应用场景

    参数分析仪的技术原理和应用场景因其具体类型和用途的不同而有所差异。以下是对参数分析技术原理和应用场景的详细归纳: 技术原理 基于物理性质的
    发表于 10-17 14:42

    NFC协议分析仪的技术原理和应用场景

    NFC协议分析仪的技术原理和应用场景可以详细阐述如下:技术原理NFC(Near Field Communication,近场通信)协议分析仪是一种用于
    发表于 09-25 14:45

    USB协议分析仪的技术原理和应用场景

    USB协议分析仪的技术原理和应用场景可以详细阐述如下:技术原理USB协议分析仪的技术原理主要基于以下几个方面: 总线监听:USB协议
    发表于 09-24 14:29

    浅谈逻辑分析仪的技术原理和应用领域

    分析仪的技术原理和应用领域。技术原理逻辑分析仪的技术原理主要包括以下几个方面: 信号采集:逻辑分析
    发表于 09-12 15:04

    触觉反馈技术的功耗分析

    电子发烧友网站提供《触觉反馈技术的功耗分析.pdf》资料免费下载
    发表于 08-31 10:04 0次下载
    触觉反馈<b class='flag-5'>技术</b>的功耗<b class='flag-5'>分析</b>