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
    +关注

    关注

    88

    文章

    11635

    浏览量

    218131
  • 服务器
    +关注

    关注

    13

    文章

    10114

    浏览量

    90995
  • 数据库
    +关注

    关注

    7

    文章

    3994

    浏览量

    67890
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RDMA设计4:技术需求分析2

    专注高性能存储与传输,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。若有NVME或RDMA 产品及项目需求,请看B站视频后联系。 根据IP适用性技术需求分析,总结
    发表于 11-24 09:09

    热重分析仪联用技术在材料分析测试中的应用

    在现代材料科学研究中,了解材料的物理和化学性质对于开发新材料和改进现有材料至关重要。热分析技术是一类用于测量材料在不同温度下物理和化学性质变化的技术,广泛应用于聚合物、陶瓷、药物和其他多种材料的研究
    的头像 发表于 11-21 16:28 503次阅读
    热重<b class='flag-5'>分析</b>仪联用<b class='flag-5'>技术</b>在材料<b class='flag-5'>分析</b>测试中的应用

    红外光谱技术应用与原理分析

    分析检测领域,红外光谱分析技术作为一种高效、准确的分析检测手段,能够快速准确地识别各类化合物的分子结构特征。这项技术基于一个简单却精妙的原
    的头像 发表于 11-11 15:21 309次阅读
    红外光谱<b class='flag-5'>技术</b>应用与原理<b class='flag-5'>分析</b>

    基于矢量网络分析仪的时域测量技术TDR

    基于矢量网络分析仪的时域测量技术TDR
    的头像 发表于 09-24 16:29 598次阅读
    基于矢量网络<b class='flag-5'>分析</b>仪的时域测量<b class='flag-5'>技术</b>TDR

    同步热分析仪的联用技术的应用

    同步热分析仪是一款可同时测量样品的tg和dsc信号的热分析仪器,被广泛应用在材料科学、高分子工程师、医药生物、能源等领域。随着同步热分析仪性能技术的不断提升,同步热
    的头像 发表于 08-28 16:04 407次阅读
    同步热<b class='flag-5'>分析</b>仪的联用<b class='flag-5'>技术</b>的应用

    如何用FIB截面分析技术做失效分析

    在半导体器件研发与制造领域,失效分析已成为不可或缺的环节,FIB(聚焦离子束)截面分析,作为失效分析的利器,在微观世界里大显身手。它运用离子束精准切割样品,巧妙结合电子束成像技术,实现
    的头像 发表于 08-15 14:03 764次阅读
    如何用FIB截面<b class='flag-5'>分析</b><b class='flag-5'>技术</b>做失效<b class='flag-5'>分析</b>?

    双电机驱动系统消隙技术分析

    摘要: 双电机驱动系统是电力系统中重要的电机系统,双电机驱动的消隙技术是双电机驱动系统中的关键技术,双电机驱动系统能否实现正常运行关键在于消隙技术本身的水平。在人们对电机系统的要求越来越高的背景下
    发表于 06-19 11:01

    【电磁兼容技术案例分享】TVS选型导致浪涌问题整改分析案例

    【电磁兼容技术案例分享】TVS选型导致浪涌问题整改分析案例
    的头像 发表于 06-11 17:29 515次阅读
    【电磁兼容<b class='flag-5'>技术</b>案例分享】TVS选型导致浪涌问题整改<b class='flag-5'>分析</b>案例

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

    光频谱分析仪是一种专为光信号的频谱分析而设计的精密仪器,其技术原理和应用场景如下:技术原理光频谱分析仪的工作原理主要基于物质与光之间的相互作
    发表于 03-07 15:01

    高密度封装失效分析关键技术和方法

    高密度封装技术在近些年迅猛发展,同时也给失效分析过程带来新的挑战。常规的失效分析手段难以满足结构复杂、线宽微小的高密度封装分析需求,需要针对具体分析
    的头像 发表于 03-05 11:07 1222次阅读
    高密度封装失效<b class='flag-5'>分析</b>关键<b class='flag-5'>技术</b>和方法

    信号源分析仪的技术原理和应用场景

    信号源分析仪是一种综合性的测量仪器,常用于测量晶振、PLL(锁相环)、时钟电路、相位噪声等参数。以下是关于信号源分析仪的技术原理和应用场景的详细介绍:一、技术原理 相参接收机
    发表于 02-26 15:25

    直接数字式频谱分析仪的技术原理和应用场景

    直接数字式频谱分析仪的技术原理和应用场景如下:一、技术原理直接数字式频谱分析仪采用数字信号处理技术,其核心
    发表于 02-17 15:00

    扫频式频谱分析仪的技术原理和应用场景

    扫频式频谱分析仪的技术原理 扫频式频谱分析仪(SSA)是一种具有显示装置的扫频超外差接收机,它使用调谐元件沿所需的频率范围进行扫描,将时域输入信号转换为频域信号。其工作原理可以归纳为以下几点
    发表于 02-14 14:16

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

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

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

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