买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种Linux内核数据攻击的检测方法、防御方法及系统_华中科技大学_201711205897.1 

申请/专利权人:华中科技大学

申请日:2017-11-27

公开(公告)日:2020-07-03

公开(公告)号:CN107967426B

主分类号:G06F21/55(20130101)

分类号:G06F21/55(20130101)

优先权:

专利状态码:有效-授权

法律状态:2020.07.03#授权;2018.05.22#实质审查的生效;2018.04.27#公开

摘要:本发明公开了一种Linux内核数据攻击的检测方法、防御方法及系统,该检测方法包括如下步骤:根据Linux内核数据与安全相关度从Linux内核数据中提取安全关键数据;对Linux内核数据进行静态分析获得Linux内核数据的数据流;从Linux内核数据的数据流中提取安全关键数据之间关系获得安全关键数据的数据流;对Linux内核运行过程中关键数据进行监控,并与安全关键数据的数据流进行比较,若Linux内核运行过程中关键数据偏离安全关键数据的数据流,则输出Linux内核数据受到攻击,否则,输出Linux内核数据未受到攻击。相比于现有的内核数据攻击检测方案,本发明充分考虑了程序数据流的间接分支分特性,有效降低了检测结果的误报率。

主权项:1.一种Linux内核数据攻击的检测方法,其特征在于,包括如下步骤:步骤1:根据Linux内核数据与安全相关度从Linux内核数据中提取安全关键数据;步骤2:对Linux内核数据进行静态分析获得Linux内核数据的数据流;步骤3:从Linux内核数据的数据流中提取安全关键数据之间关系获得安全关键数据的数据流;步骤4:对Linux内核运行过程中关键数据进行监控,并与安全关键数据的数据流进行比较,若Linux内核运行过程中关键数据偏离安全关键数据的数据流,则输出Linux内核数据受到攻击,否则,输出Linux内核数据未受到攻击;步骤2中静态分析包括如下步骤:步骤21:将Linux内核源码翻译为底层虚拟机中间语言;步骤22:对底层虚拟机中间语言进行流敏感的别名分析获得别名分析结果;步骤23:将别名分析的结果作为前置条件进行路径敏感的数据流分析获得Linux内核数据的数据流。

全文数据:一种Linux内核数据攻击的检测方法、防御方法及系统技术领域[0001]本发明属于内核攻击检测防御领域,更具体地,涉及一种Linux内核数据攻击的检测防御方法及系统。背景技术[0002]内核是操作系统最基本的部分,对于一个安全和稳定的系统来说,保护内核免受其他运行程序的干扰是首要的。如今内核正成为攻击者们的目标,这主要有以下几点原因:[0003]第一,由于如八31^、81111〇、0?1、0?1、0£?等等各种用户态防护机制的实施,针对用户态程序的攻击越来越难;[0004]第二,内核的攻击面大。这是由于内核代码行数大(16.9ML0C,Linuxver4.5.4,系统调用多397,新版本的内核也会带来新的漏洞和攻击机会;[0005]第三,攻击内核获得的收益高。内核代码通常是特权代码,攻击者通常会进行特权提升或者恶意代码执行操作。同时内核某些数据结构对于安全机制很重要,篡改这些数据结构致使内核安全机制失效,来影藏自己的行踪,使得攻击难以被发现。[0006]近几年来,内核攻击的研宄热点逐渐聚焦到data-only的攻击上。这类攻击与之前攻击最大的区别是data-only攻击利用内核数据结构,不再以修改代码段、内核函数为目标。国内外对于Data-〇nly的攻击研究主要分为两大类:Control-data攻击和Non-control-data攻击。对于control-data攻击的防御研究主要在memorysafety、内核代码完整性检查和控制流完整性技术上,而non-control-data攻击的防御研宄主要在memorysafety、内存隔离和数据流完整性技术上。[0007]面向内核攻击的方式主要经历了3个阶段。早期面向内核的攻击主要是代码注入攻击,通过向内核空间中引入恶意代码,然后执行这串恶意代码,从而完成攻击。针对这类攻击的防御方法主要有内核代码完整性保护。[0008]随着对于内核攻击方法研究的深入,内核攻击的方式从代码注入攻击演变到了控制流劫持攻击。这种攻击通过改变内核执行控制流,最终将控制流引向执行恶意代码,从而完成对内核的攻击。这类内核攻击方法通常有R0P、J0P等攻击形式。针对这类攻击的防御方法主要有控制流完整性保护。[0009]最近几年出现了一种新的内核攻击方式。这类攻击与之前的内核攻击不同之处在于它只利用内核中的数据结构进行攻击,这类数据通常是安全相关的数据。这类攻击有两种形式:controldata攻击和non-control-data攻击。针对这类攻击的防御方法主要有控制流完整性保护、检测内核数据不变量和数据流完整性保护。[0010]综上所述,现有的Linux内核攻击防御系统的方案有以下不足:[0011]基于控制流完整性的Linux内核攻击防御系统由于没有考虑到对于内核数据的攻击,无法应对面向Linux内核数据的攻击;另外传统静态分析得到的数据流会存在对间接分支分析结果不准确,会有遗漏的问题。发明内容[0012]针对现有技术的以上缺陷或改进需求,本发明提供了一种Linux内核数据攻击的检测方法及系统,其目的在于解决现有的内核攻击防御方法没有考虑到内核数据导致无法应对内核数据攻击的问题的技术问题。[0013]作为本发明的一方面,本发明提供一种Linux内核数据攻击的检测方法,包括如下步骤:[00M]步骤1:根据Linux内核数据与安全相关度从Linux内核数据中提取安全关键数据;[0015]步骤2:对Linux内核数据进行静态分析获得Linux内核数据的数据流;[0016]步骤3:从Linux内核数据的数据流中提取安全关键数据之间关系获得安全关键数据的数据流;[0017]步骤4:对Linux内核运行过程中关键数据进行监控,并与安全关键数据的数据流进行比较,若Linux内核运行过程中关键数据偏离安全关键数据的数据流,则输出Linux内核数据受到攻击,否则,输出Linux内核数据未受到攻击。[0018]优选地,步骤1中安全关键数据包括与访问权限相关的数据、安全检查相关的数据以及唯一标识的数据。[0019]优选地,步骤2中静态分析包括如下步骤:[0020]步骤21:将Linux内核源码翻译为底层虚拟机中间语言;[0021]步骤22:对底层虚拟机中间语言进行流敏感flow-sensitive的别名分析AliasAnalysis获得别名分析结果;[0022]步骤23:将别名分析的结果作为前置条件进行路径敏感path-sensitive的数据流分析获得Linux内核数据的数据流。[0023]作为发明的另一方面,本发明提供的防御方法包括如下步骤:[0024]步骤1:通过所述检测方法确定Linux内核数据是否受到攻击;[0025]步骤2:当Linux内核运行过程中关键数据受到攻击时,则将Linux内核运行过程中关键数据回滚至被攻击前状态;当Linux内核运行过程中关键数据不受到攻击时,则不对Linux内核运行过程中关键数据进行处理。[0026]作为本发明的另一方面,本发明提供一种的检测系统,包括:[0027]数据提取模块,用于根据Linux内核数据与安全相关度从Linux内核数据中提取安全关键数据;[0028]内核数据流分析模块,用于对Linux内核数据进行静态分析获得Linux内核数据的数据流;[0029]关键数据流分析模块,其第一输入端与内核数据流分析模块的输出端连接,其第二输入端与数据提取模块的输出端连接,用于从Linux内核数据的数据流中提取安全关键数据之间关系获得安全关键数据的数据流;[0030]攻击判断模块,其输入端与关键数据流分析模块的输出端连接,用于对Linux内核运行过程中关键数据进行监控,并与安全关键数据的数据流进行比较,并根据比较结果输出Linux内核数据攻击状态。[0031]优选地,内核数据流分析模块包括:[0032]翻译单元,用翻译器将Linux内核源码翻译为底层虚拟机中间语言;[0033]别名分析单元,其输入端与翻译单元的输出端连接,用于对底层虚拟机中间语言进行流敏感的别名分析获得别名分析结果;[0034]数据流分析单元,其输入端与别名分析单元的输出端连接,用于将别名分析的结果作为前置条件进行路径敏感的数据流分析获得Linux内核数据的数据流。[0035]优选地,包括输入端与攻击判断模块的输出端连接的防御模块,用于当Linux内核数据攻击状态为受到攻击时,对Linux内核运行过程中关键数据进行回滚处理,使Linux内核运行过程中关键数据回到未攻击状态。[0036]总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:[0037]1本发明提供的内核数据攻击的检测方法,先获得所有内核数据的数据流,从内核数据的数据流中提取与安全相关的关键数据形成安全相关的关键数据流,并监控内核运行过程中数据流,实现对内核数据数据流攻击检测。[0038]2本发明充分考虑了程序数据流的间接分支分特性,使用路径敏感的数据流分析可以对程序的间接分支分析结果更加精确,有效降低了检测结果的误报率。另一方面,本发明使用流敏感的别名分析可以使得数据流分析的结果更加得精确;因此本发明提供的检测方法具有高准确性。相比于现有的内核数据攻击检测方案仅能,同时又克服了现有检测方案中无法应对内核non-contro1-data攻击的问题,有效的降低了检测结果的漏报率,使得该方案可以准确的检测内核数据攻击。[0039]3低开销。本发明在使用了内核数据流图同时,将内核数据流图中的非安全关键数据流剔除,避免了监听数据量过于庞大的问题,降低了系统的时间开销,进一步提高了系统的执行效率。[0040]4低耦合性。本发明在各个模块之间使用简单的接口连接,耦合性非常低,可以快速地完成模块的增删与修改。允许用户自定义模块功能级别,如监听数据类型的选择等。附图说明[0041]图1是本发明提供的Linux内核数据攻击的检测方法的流程图;[0042]图2是本发明提供检测方法中提取安全关键数据的原理示意图;[0043]图3是本发明提供检测方法中获得安全关键数据的数据流的原理示意图;[0044]图4是本发明提供的检测方法中获得安全关键数据的数据流图;[0045]图5是本发明提供的检测系统的原理框图。具体实施方式[0046]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。[0047]本发明的整体思路在于,收集内核安全关键数据,通过静态分析得到内核安全关键数据的数据流图。使用TSX技术监听Linux内核安全关键数据,获得针对它们的每次操作,分析得到数据流,将它的数据流向与之前分析得到的数据图比对,判断是否是非法的数据流,如果是,阻止并且恢复。最终,完成一个面向直接内核攻击的检测防御机制,有效检测并防御面向内核安全关键数据的攻击。_8]图1为本发明提供的Linux内核数据攻击的检测方法,该检测方法包括如下步骤:[0049]步骤1:根据Linux内核数据与安全相关度从Linux内核数据中提取安全关键数据,如图2所示,安全关键数据的数量大于生成数据流图的最小数据量[0050]Linux内核数据的数量庞大,为提高性能,首先需要分析Linux内核数据是否与安全相关,Linux内核数据中安全相关的数据主要包括:与访问权限相关的数据、安全检查相关的数据、形如uicUpid之类的唯一标识的数据以及与decision-making相关的数据。[0051]针对Linux内核中数据繁多复杂的情况,在筛选出与内核安全相关的数据同时,保留数据流图分析所需的最小数据集,将庞大的数据集减少为比较小的数据集。这大大降低性能开销,同时仍能生成可靠精确的Linux内核数据流图。[0052]步骤2:对Linux内核数据进行静态处理获得Linux内核数据的数据流图;使用静态分析的方法来刻画Linux内核数据的数据流,以更细的粒度和更加灵活的模式,能够更加准确和高效的描绘Linux内核数据的数据流图。如图3具体包括如下步骤:[0053]步骤21:首先使用LLVMIR底层虚拟机中间语言翻译器将Linux内核源码翻译为LLVM中间语言;[0054]步骤22:然后自定义LLVM的Pass对得到的LLVM中间语言进行流敏感的别名分析;[0055]步骤23:接着将别名分析的结果作为前置条件进行路径敏感的数据流分析获得Linux内核数据的数据流图。[0056]步骤3:从Linux内核数据的数据流图中筛选出与安全相关的内核数据的数据流,最终绘制成Linux内核安全关键数据的数据流图。[0057]步骤4:使用IntelTSX技术提供的接口编写代码实现的,截获每次对于安全关键数据的相关操作,获取安全关键数据的每个状态。[0058]对于每一个要监控的数据,获得对于该数据的每一次操作,并与步骤3中Linux内核安全关键数据的数据流图进行比对,分析每次操作是否合法。[0059]使用IntelTSX技术对内存中Linux内核安全关键数据进行监控,TSX即事务同步扩展,在X86-M指令集上增加了事务内存特性。事务内存是在并发环境中允许对数据结构同步和高效访问的技术。我们通过TSX技术所提供的两种接口:HLEHardwareLockElision和RTMRestrictedTransactionalMemory〇[0060]步骤5:用于防御针对Linux内核数据的攻击,将Linux内核安全关键数据的数据流与之前分析得到的内核安全关键数据流图进行比对,判断安全关键数据的数据流是否偏离安全数据流。如果数据流偏离步骤2中得到的数据流图,则回滚数据,恢复数据原来的状态;如果数据流正常,则不做任何事情。[0061]作为本发明的另一方面,本发明提供了一种Linux内核数据攻击的检测系统.。如图5所示,该检测系统包括数据提取模块、内核数据流分析模块、关键数据流分析模块、攻击判断模块以及防御模块,其中,关键数据流分析模块的第一输入端与内核数据流分析模块的输出端连接,关键数据流分析模块第二输入端与数据提取模块的输出端连接,攻击判断模块的输入端与关键数据流分析模块的输出端连接。[0062]数据提取模块,用于根据Linux内核数据与安全相关度从Linux内核数据中提取安全关键数据;内核数据流分析模块,用于对Linux内核数据进行静态分析获得Linux内核数据的数据流;关键数据流分析模块用于从Linux内核数据的数据流中提取安全关键数据之间关系获得安全关键数据的数据流;攻击判断模块用于对Linux内核运行过程中关键数据进行监控,并与安全关键数据的数据流进行比较,并根据比较结果输出Linux内核数据攻击状态,若Linux内核运行过程中关键数据偏离安全关键数据的数据流,则输出Linux内核数据受到攻击,否则,输出Linux内核数据未受到攻击。当Linux内核数据攻击状态为受到攻击时,防御模块对Linux内核运行过程中关键数据进行回滚处理,使Linux内核运行过程中关键数据回到未攻击状态。当Linux内核数据攻击状态为未受到攻击时,防御模块不工作。[0063]上述内核数据流分析模块包括依次连接的翻译单元、别名分析单元以及数据流分析单元,翻译单元用于将Linux内核源码翻译为底层虚拟机中间语言;别名分析单元用于对底层虚拟机中间语言进行流敏感的别名分析获得别名分析结果;数据流分析单元用于将别名分析的结果作为前置条件进行路径敏感的数据流分析获得Linux内核数据的数据流。[0064]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

权利要求:1.一种Linux内核数据攻击的检测方法,其特征在于,包括如下步骤:步骤1:根据Linux内核数据与安全相关度从Linux内核数据中提取安全关键数据;步骤2:对Linux内核数据进行静态分析获得Linux内核数据的数据流;步骤3:从Linux内核数据的数据流中提取安全关键数据之间关系获得安全关键数据的数据流;步骤4:对Linux内核运行过程中关键数据进行监控,并与安全关键数据的数据流进行比较,若Linux内核运行过程中关键数据偏离安全关键数据的数据流,则输aLinux内核数据受到攻击,否则,输出Linux内核数据未受到攻击。2.如权利要求1所述的检测方法,其特征在于,步骤1中安全关键数据包括与访问权限相关的数据、安全检查相关的数据以及唯一标识的数据。3.如权利要求1或2所述的检测方法,其特征在于,步骤2中静态分析包括如下步骤:步骤21:将Linux内核源码翻译为底层虚拟机中间语言;步骤22:对底层虚拟机中间语言进行流敏感的别名分析获得别名分析结果;步骤23:将别名分析的结果作为前置条件进行路径敏感的数据流分析获得Linux内核数据的数据流。4.如权利要求1至3任一项所述的检测方法,其特征在于,通过IntelTSX技术实现对对Linux内核运行过程中关键数据进行监控。5.—种基于权利要求1所述的检测方法的防御方法,其特征在于,包括如下步骤:步骤1:通过所述检测方法确定Linux内核数据是否受到攻击;步骤2:当Linux内核运行过程中关键数据受到攻击时,则将Linux内核运行过程中关键数据回滚至被攻击前状态;当Linux内核运行过程中关键数据不受到攻击时,则不对Linux内核运行过程中关键数据进行处理。6.—种基于权利要求1所述的检测方法的检测系统,其特征在于,包括:数据提取模块,用于根据Linux内核数据与安全相关度从Linux内核数据中提取安全关键数据;内核数据流分析模块,用于对Linux内核数据进行静态分析获得Linux内核数据的数据流;关键数据流分析模块,其第一输入端与内核数据流分析模块的输出端连接,其第二输入端与数据提取模块的输出端连接,用于从Linux内核数据的数据流中提取安全关键数据之间关系获得安全关键数据的数据流;攻击判断模块,其输入端与关键数据流分析模块的输出端连接,用于对Linux内核运行过程中关键数据进行监控,并与安全关键数据的数据流进行比较,并根据比较结果输出Linux内核数据攻击状态。7.如权利要求6所述的检测系统,其特征在于,内核数据流分析模块包括:翻译单元,用翻译器将Linux内核源码翻译为底层虚拟机中间语言;别名分析单元,其输入端与翻译单元的输出端连接,用于对底层虚拟机中间语言进行流敏感的别名分析获得别名分析结果;数据流分析单元,其输入端与别名分析单元的输出端连接,用于将别名分析的结果作为前置条件进行路径敏感的数据流分析获得Linux内核数据的数据流。8.如权利要求6或7所述的检测系统,其特征在于,包括输入端与攻击判断模块的输出端连接的防御模块,用于iLinux内核数据攻击状态为受到攻击时,对Linux内核运行过程中关键数据进行回滚处理,使Linux内核运行过程中关键数据回到未攻击状态。

百度查询: 华中科技大学 一种Linux内核数据攻击的检测方法、防御方法及系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。