CN106599685A - 一种内核级Rootkit检测方法及系统 - Google Patents

一种内核级Rootkit检测方法及系统 Download PDF

Info

Publication number
CN106599685A
CN106599685A CN201610848325.4A CN201610848325A CN106599685A CN 106599685 A CN106599685 A CN 106599685A CN 201610848325 A CN201610848325 A CN 201610848325A CN 106599685 A CN106599685 A CN 106599685A
Authority
CN
China
Prior art keywords
symbol
kallsyms
tables
rootkit
map
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610848325.4A
Other languages
English (en)
Inventor
王辛宇
童志明
肖新光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Antiy Technology Co Ltd
Original Assignee
Harbin Antiy Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Antiy Technology Co Ltd filed Critical Harbin Antiy Technology Co Ltd
Priority to CN201610848325.4A priority Critical patent/CN106599685A/zh
Publication of CN106599685A publication Critical patent/CN106599685A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种内核级Rootkit检测方法,包括:解析System.map符号表,获取静态符号名称和符号类型;解析kallsyms符号表,获取动态符号名称、符号类型以及符号所属模块;将kallsyms符号表与System.map符号表进行对比,判定系统是否存在Rootkit行为。目前针对未知Rootkit的解决方法是通过内核动态监控或虚拟机化执行分析技术进行检测,检测手段比较复杂,需要内核模块的编写,并且只能针对特定范围内的内核版本,不具备普适性,跨平台通用性较差。通过内核符号表对比的方法,可以在应用层实现Rootkit的判别与检测,又不受内核版本的约束,具有简易性与通用性。

Description

一种内核级Rootkit检测方法及系统
技术领域
本发明涉及网络安全技术领域,尤其涉及一种内核级Rootkit检测方法及系统。
背景技术
随着计算机网络的飞速发展,信息安全日益成为当今社会的重大问题之一,没有绝对的安全,攻与防永远是信息安全领域中恒久不变的主题。能够深入了解和研究各种攻击行为,对于更好地实施信息安全保障具有很好的借鉴意义。Linux作为开源的操作系统,一直被认为安全性优于Windows,但随着发行版趋于大众化,使用者也日益增多,Linux的安全问题也尤其的凸现出来,然而Rootkit又是作为攻击Linux系统的强有力的工具,已经更加深入地侵入到 PC之中,具有很强的隐藏性,与难以清除的问题,从操作系统用户空间、内核一直到硬件,每一代Rootkit都深入到系统的更深一层,其流行速度和高级程度正在迅速增长,用户级Rootkit是比较容易发现及清除的,而内核级往往发现和清除较为麻烦。
针对于内核级Rootkit检测实现的方法并不是很多,常用的有基于特征码的检测、基于内核栈检测、内核挂钩检测、VMM Rootkit检测和基于内存的检测等。基于特征码的检测方式是最为简单的,但是这种检测方式无法检测未知的Rootkit,不具有普遍适用性,其它的检测方法多为通过内核编程,行为分析或虚拟执行,检测是否存在注入模块,进而检测是否存在Rootkit,这种方法具有较高的复杂性,而且多数依赖于内核版本的限制,跨平台性较差,对于不具备内核模块编程能力的检测者,实施较为困难,有时可能会浪费大量的时间却无法检测。
发明内容
针对上述技术问题,本发明所述的技术方案提出了一种内核级Rootkit检测方法和系统,通过内核符号表的对比和认证,可以动静态结合分析是否系统存在rootkit行为。
本发明采用如下方法来实现:
一种内核级Rootkit检测方法,包括:
解析System.map符号表,获取静态符号名称和符号类型;
解析kallsyms符号表,获取动态符号名称、符号类型以及符号所属模块;
将kallsyms符号表与System.map符号表进行对比,判定系统是否存在Rootkit行为。
进一步地,将kallsyms符号表与System.map符号表进行对比之前还包括:若kallsyms符号表中的符号全部为以非内核模块形式存在的符号,则系统不存在Rootkit行为;否则将kallsyms符号表与System.map符号表进行对比。
进一步地,所述将kallsyms符号表与System.map符号表进行对比具体为;
分别计算System.map符号表与kallsyms符号表中符号的哈希值;
若kallsyms符号表中包含与System.map符号表哈希值不相同的符号,则将符号按照符号类型进行分类;若同一类中符号的所属模块名称不同,则对符号名称按位进行匹配;
针对匹配结果低于预设相似度的符号,判定是否存在异常进程或存在异常行为或存在修改系统调用表地址或Hook文件操作系统调用行为,若是,则该系统存在rootkit行为。
本发明可以采用如下系统来实现:一种内核级Rootkit检测系统,包括:
第一解析模块,用于解析System.map符号表,获取静态符号名称和符号类型;
第二解析模块,用于解析kallsyms符号表,获取动态符号名称、符号类型以及符号所属模块;
对比判定模块,用于将kallsyms符号表与System.map符号表进行对比,判定系统是否存在Rootkit行为。
进一步地,将kallsyms符号表与System.map符号表进行对比之前还包括:若kallsyms符号表中的符号全部为以非内核模块形式存在的符号,则系统不存在Rootkit行为;否则将kallsyms符号表与System.map符号表进行对比。
进一步地,所述将kallsyms符号表与System.map符号表进行对比具体为;
分别计算System.map符号表与kallsyms符号表中符号的哈希值;
若kallsyms符号表中包含与System.map符号表哈希值不相同的符号,则将符号按照符号类型进行分类;若同一类中符号的所属模块名称不同,则对符号名称按位进行匹配;
针对匹配结果低于预设相似度的符号,判定是否存在异常进程或存在异常行为或存在修改系统调用表地址或Hook文件操作系统调用行为,若是,则该系统存在rootkit行为。
综上,本发明给出一种内核级Rootkit检测方法,包括:解析System.map符号表,获取静态符号名称和符号类型;解析kallsyms符号表,获取动态符号名称、符号类型以及符号所属模块;将kallsyms符号表与System.map符号表进行对比,判定系统是否存在Rootkit行为。
有益效果为:
目前针对未知Rootkit的解决方法是通过内核动态监控或虚拟机化执行分析技术进行检测,检测手段比较复杂,需要内核模块的编写,并且只能针对特定范围内的内核版本,不具备普适性,跨平台通用性较差。通过内核符号表对比的方法,可以在应用层实现Rootkit的判别与检测,又不受内核版本的约束,具有简易性与通用性。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种内核级Rootkit检测方法实施例1流程图;
图2为本发明提供的一种内核级Rootkit检测系统实施例1结构图;
图3为本发明提供的符号类型表示例图;
图4为本发明提供的Rootkit注入系统后的符号表对比图。
具体实施方式
本发明给出了一种内核级Rootkit检测方法及系统,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明:
本发明首先提供一种内核级Rootkit检测方法实施例1,如图1所示,包括:
S101解析System.map符号表,获取静态符号名称和符号类型;
其中,用词法解析针对符号表解析,符号类型表具体详见图3;System.map是磁盘中真实存在的文件,存储内核中静态编译的函数和变量地址,它是一个特定内核的内核符号表。是运行当前内核链接时,由“nm vmlinux”产生并且不相关的符号被滤出,一般位于源码根目录,另外还有少数驱动需要System.map来解析符号。Linux内核不使用符号名,而是通过变量或函数的地址来识别变量或函数名,符号类型又分为本地符号和外部符号,符号名与地址相对应,该地址与当前实时符号地址并不相同,为当前内核编译完成后初始化的地址,通过对System.map解析,获取符号名与符号类型,通过符号过滤机制,筛选出关键符号并初始化保存。
S102解析kallsyms符号表,获取动态符号名称、符号类型以及符号所属模块;
如图4所示:security_addr和sys_call_tab 为BBS段符号,所述模块名称为monitor的内核模块;其中,kallsyms符号表示虚拟存在的,不仅保存了System.map映射在内存中的符号地址,还包含动态加载模块中相关符号信息,Kallsyms在内核启动时创建的,并不是一个真实的文件,只是内核数据的简单表示形式,类似于一个磁盘文件。为了更方便的调试内核代码,开发者考虑将内核代码中所有函数以及所有非栈变量的地址抽取出来,形成是一个简单的数据块(data blob:符号和地址对应),并将此链接进 vmlinux 中去。内核可以将符号地址信息以及符号名称都显示出来,方便开发者对内核代码的调试。完成这一地址抽取和数据快组织封装功能的相关子系统就称之为 kallsyms,具体的相关内容需要配置CONFIG_KALLSYMS。
S103将kallsyms符号表与System.map符号表进行对比,判定系统是否存在Rootkit行为。
优选地,将kallsyms符号表与System.map符号表进行对比之前还包括:若kallsyms符号表中的符号全部为以非内核模块形式存在的符号,则系统不存在Rootkit行为;否则将kallsyms符号表与System.map符号表进行对比。
优选地,所述将kallsyms符号表与System.map符号表进行对比具体为;
分别计算System.map符号表与kallsyms符号表中符号的哈希值;
若kallsyms符号表中包含与System.map符号表哈希值不相同的符号,则将符号按照符号类型进行分类;若同一类中符号的所属模块名称不同,则对符号名称按位进行匹配;
其中,对比哈希值不同可以使用红黑树查找进行条件对比。
针对匹配结果低于预设相似度的符号,判定是否存在异常进程或存在异常行为或存在修改系统调用表地址或Hook文件操作系统调用行为,若是,则该系统存在rootkit行为。
其中,将低于预设相似度的符号以Json串形式存储。
本发明同时提供了一种内核级Rootkit检测系统实施例,如图2所示,包括:
第一解析模块201,用于解析System.map符号表,获取静态符号名称和符号类型;
第二解析模块202,用于解析kallsyms符号表,获取动态符号名称、符号类型以及符号所属模块;
对比判定模块203,用于将kallsyms符号表与System.map符号表进行对比,判定系统是否存在Rootkit行为。
优选地,将kallsyms符号表与System.map符号表进行对比之前还包括:若kallsyms符号表中的符号全部为以非内核模块形式存在的符号,则系统不存在Rootkit行为;否则将kallsyms符号表与System.map符号表进行对比。
优选地,所述将kallsyms符号表与System.map符号表进行对比具体为;
分别计算System.map符号表与kallsyms符号表中符号的哈希值;
若kallsyms符号表中包含与System.map符号表哈希值不相同的符号,则将符号按照符号类型进行分类;若同一类中符号的所属模块名称不同,则对符号名称按位进行匹配;
针对匹配结果低于预设相似度的符号,判定是否存在异常进程或存在异常行为或存在修改系统调用表地址或Hook文件操作系统调用行为,若是,则该系统存在rootkit行为。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
如上所述,上述实施例给出了一种内核级Rootkit检测方法,包括:解析System.map符号表,获取静态符号名称和符号类型;解析kallsyms符号表,获取动态符号名称、符号类型以及符号所属模块;将kallsyms符号表与System.map符号表进行对比,判定系统是否存在Rootkit行为。目前针对未知Rootkit的解决方法是通过内核动态监控或虚拟机化执行分析技术进行检测,检测手段比较复杂,需要内核模块的编写,并且只能针对特定范围内的内核版本,不具备普适性,跨平台通用性较差。通过内核符号表对比的方法,可以在应用层实现Rootkit的判别与检测,又不受内核版本的约束,具有简易性与通用性。
以上实施例用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当中。

Claims (6)

1.一种内核级Rootkit检测方法,其特征在于,包括:
解析System.map符号表,获取静态符号名称和符号类型;
解析kallsyms符号表,获取动态符号名称、符号类型以及符号所属模块;
将kallsyms符号表与System.map符号表进行对比,判定系统是否存在Rootkit行为。
2.如权利要求1所述的一种内核级Rootkit检测方法,其特征在于,将kallsyms符号表与System.map符号表进行对比之前还包括:若kallsyms符号表中的符号全部为以非内核模块形式存在的符号,则系统不存在Rootkit行为;否则将kallsyms符号表与System.map符号表进行对比。
3.如权利要求1或2所述的一种内核级Rootkit检测方法,其特征在于,所述将kallsyms符号表与System.map符号表进行对比具体为;
分别计算System.map符号表与kallsyms符号表中符号的哈希值;
若kallsyms符号表中包含与System.map符号表哈希值不相同的符号,则将符号按照符号类型进行分类;若同一类中符号的所属模块名称不同,则对符号名称按位进行匹配;
针对匹配结果低于预设相似度的符号,判定是否存在异常进程或存在异常行为或存在修改系统调用表地址或Hook文件操作系统调用行为,若是,则该系统存在rootkit行为。
4.一种内核级Rootkit检测系统,其特征在于,包括:
第一解析模块,用于解析System.map符号表,获取静态符号名称和符号类型;
第二解析模块,用于解析kallsyms符号表,获取动态符号名称、符号类型以及符号所属模块;
对比判定模块,用于将kallsyms符号表与System.map符号表进行对比,判定系统是否存在Rootkit行为。
5.如权利要求4所述的一种内核级Rootkit检测系统,其特征在于,将kallsyms符号表与System.map符号表进行对比之前还包括:若kallsyms符号表中的符号全部为以非内核模块形式存在的符号,则系统不存在Rootkit行为;否则将kallsyms符号表与System.map符号表进行对比。
6.如权利要求4或5所述的一种内核级Rootkit检测系统,其特征在于,所述将kallsyms符号表与System.map符号表进行对比具体为;
分别计算System.map符号表与kallsyms符号表中符号的哈希值;
若kallsyms符号表中包含与System.map符号表哈希值不相同的符号,则将符号按照符号类型进行分类;若同一类中符号的所属模块名称不同,则对符号名称按位进行匹配;
针对匹配结果低于预设相似度的符号,判定是否存在异常进程或存在异常行为或存在修改系统调用表地址或Hook文件操作系统调用行为,若是,则该系统存在rootkit行为。
CN201610848325.4A 2016-09-26 2016-09-26 一种内核级Rootkit检测方法及系统 Pending CN106599685A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610848325.4A CN106599685A (zh) 2016-09-26 2016-09-26 一种内核级Rootkit检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610848325.4A CN106599685A (zh) 2016-09-26 2016-09-26 一种内核级Rootkit检测方法及系统

Publications (1)

Publication Number Publication Date
CN106599685A true CN106599685A (zh) 2017-04-26

Family

ID=58555861

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610848325.4A Pending CN106599685A (zh) 2016-09-26 2016-09-26 一种内核级Rootkit检测方法及系统

Country Status (1)

Country Link
CN (1) CN106599685A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108469984A (zh) * 2018-04-17 2018-08-31 哈尔滨工业大学 一种基于虚拟机自省函数级虚拟机内核动态检测系统与方法
CN108737373A (zh) * 2018-04-12 2018-11-02 国家计算机网络与信息安全管理中心 一种针对大型网络设备隐匿技术的安全取证方法
CN108898012A (zh) * 2018-05-23 2018-11-27 华为技术有限公司 检测非法程序的方法和装置
CN111027072A (zh) * 2019-12-20 2020-04-17 北京安天网络安全技术有限公司 Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置
CN111931192A (zh) * 2020-09-10 2020-11-13 杭州海康威视数字技术股份有限公司 rootkit检测方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102194080A (zh) * 2011-06-13 2011-09-21 西安交通大学 一种基于内核虚拟机的rootkit检测机制及检测方法
CN103699839A (zh) * 2013-12-09 2014-04-02 Tcl集团股份有限公司 一种内核级rootkit检测处理方法及系统
CN104598823A (zh) * 2015-01-21 2015-05-06 华东师范大学 一种安卓系统中内核级rootkit检测方法及其系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102194080A (zh) * 2011-06-13 2011-09-21 西安交通大学 一种基于内核虚拟机的rootkit检测机制及检测方法
CN103699839A (zh) * 2013-12-09 2014-04-02 Tcl集团股份有限公司 一种内核级rootkit检测处理方法及系统
CN104598823A (zh) * 2015-01-21 2015-05-06 华东师范大学 一种安卓系统中内核级rootkit检测方法及其系统

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108737373A (zh) * 2018-04-12 2018-11-02 国家计算机网络与信息安全管理中心 一种针对大型网络设备隐匿技术的安全取证方法
CN108737373B (zh) * 2018-04-12 2020-09-22 国家计算机网络与信息安全管理中心 一种针对大型网络设备隐匿技术的安全取证方法
CN108469984A (zh) * 2018-04-17 2018-08-31 哈尔滨工业大学 一种基于虚拟机自省函数级虚拟机内核动态检测系统与方法
CN108469984B (zh) * 2018-04-17 2021-07-30 哈尔滨工业大学 一种基于虚拟机自省函数级虚拟机内核动态检测系统与方法
CN108898012A (zh) * 2018-05-23 2018-11-27 华为技术有限公司 检测非法程序的方法和装置
CN108898012B (zh) * 2018-05-23 2021-01-29 华为技术有限公司 检测非法程序的方法和装置
CN111027072A (zh) * 2019-12-20 2020-04-17 北京安天网络安全技术有限公司 Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置
CN111027072B (zh) * 2019-12-20 2024-02-27 北京安天网络安全技术有限公司 Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置
CN111931192A (zh) * 2020-09-10 2020-11-13 杭州海康威视数字技术股份有限公司 rootkit检测方法、装置及电子设备

Similar Documents

Publication Publication Date Title
US20210149788A1 (en) Software diagnosis using transparent decompilation
CN106599685A (zh) 一种内核级Rootkit检测方法及系统
CN109583200B (zh) 一种基于动态污点传播的程序异常分析方法
Wang et al. Behavior based software theft detection
Elish et al. Profiling user-trigger dependence for Android malware detection
Cozzie et al. Digging for Data Structures.
Carmony et al. Extract Me If You Can: Abusing PDF Parsers in Malware Detectors.
Cesare et al. Classification of malware using structured control flow
US20140189866A1 (en) Identification of obfuscated computer items using visual algorithms
Lin et al. Dimsum: Discovering semantic data of interest from un-mappable memory with confidence
US11983094B2 (en) Software diagnostic context selection and use
Gianazza et al. Puppetdroid: A user-centric ui exerciser for automatic dynamic analysis of similar android applications
CN104834859A (zh) 一种Android应用中恶意行为的动态检测方法
US10289843B2 (en) Extraction and comparison of hybrid program binary features
Coulter et al. Code analysis for intelligent cyber systems: A data-driven approach
KR20170068814A (ko) 악성 모바일 앱 감지 장치 및 방법
Tian et al. DKISB: Dynamic key instruction sequence birthmark for software plagiarism detection
Fleck et al. Pytrigger: A system to trigger & extract user-activated malware behavior
WO2017048426A1 (en) Detecting software attacks on processes in computing devices
CN111277606A (zh) 检测模型训练方法、检测方法及装置、存储介质
CN104252594B (zh) 病毒检测方法和装置
Haller et al. Scalable data structure detection and classification for C/C++ binaries
CN114462044A (zh) 一种基于污点分析的uefi固件漏洞静态检测方法及装置
Stirparo et al. In-memory credentials robbery on android phones
US20100242027A1 (en) Identifying groups and subgroups

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170426

WD01 Invention patent application deemed withdrawn after publication