CN106599685A - 一种内核级Rootkit检测方法及系统 - Google Patents
一种内核级Rootkit检测方法及系统 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing 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检测方法及系统。
背景技术
随着计算机网络的飞速发展,信息安全日益成为当今社会的重大问题之一,没有绝对的安全,攻与防永远是信息安全领域中恒久不变的主题。能够深入了解和研究各种攻击行为,对于更好地实施信息安全保障具有很好的借鉴意义。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行为。
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)
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)
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检测方法及其系统 |
-
2016
- 2016-09-26 CN CN201610848325.4A patent/CN106599685A/zh active Pending
Patent Citations (3)
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)
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 |