CN111027072B - Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 - Google Patents

Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 Download PDF

Info

Publication number
CN111027072B
CN111027072B CN201911323902.8A CN201911323902A CN111027072B CN 111027072 B CN111027072 B CN 111027072B CN 201911323902 A CN201911323902 A CN 201911323902A CN 111027072 B CN111027072 B CN 111027072B
Authority
CN
China
Prior art keywords
kernel
segment
address
module
file
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.)
Active
Application number
CN201911323902.8A
Other languages
English (en)
Other versions
CN111027072A (zh
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.)
Beijing Antiy Network Technology Co Ltd
Original Assignee
Beijing Antiy Network 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 Beijing Antiy Network Technology Co Ltd filed Critical Beijing Antiy Network Technology Co Ltd
Priority to CN201911323902.8A priority Critical patent/CN111027072B/zh
Publication of CN111027072A publication Critical patent/CN111027072A/zh
Application granted granted Critical
Publication of CN111027072B publication Critical patent/CN111027072B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F21/562Static detection
    • 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
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本发明公开了一种Linux下基于elf二进制标准解析的内核Rootkit检测方法、装置及存储设备,涉及网络安全领域,包括:加载待测内核,读取其中内核文件或者内核模块文件到内存;读取内核及内核模块的elf文件中代码段和只读数据段的内容;将读取到的代码段和只读数据段内容与运行中的待测内核的代码区和只读数据区进行逐一比对获取差异;若差异出现在只读数据段则直接判定为内核Rootkit;若差异出现在代码段,则需进一步排除差异是否属于内核运行时的修改,如果不是则判定为内核Rootkit,解决了当前内核Rootkit检测技术多是针对Rootkit行为策略的检测技术,无法全面的对系统进行检测的问题。

Description

Linux下基于elf二进制标准解析的内核Rootkit检测方法及 装置
技术领域
本发明涉及网络安全技术领域,尤其涉及一种Linux下基于elf二进制标准解析的内核Rootkit检测方法、装置及存储设备。
背景技术
目前中国各个重要领域的基础设施都已经实现网络化、信息化、数据化,各项基础设施的核心部件都离不开网络信息系统,Linux系统一直是服务器系统的主流选择,而随着国产操作系统时代的到来,基于类Linux系统平台的各种国产操作系统也不断投入市场,针对Linux下的病毒木马检测已经成为网络安全研究的核心问题之一,Rootkit作为攻击Linux系统的必备手段,几乎可以隐藏任何恶意代码程序和操作,包括但不限于进程、网络端口、文件、内核模块等,并且随着技术的发展已经逐步进化成从应用层深入到内核层,甚至可以深入到硬件层面,隐藏性更高难以发现系统软件中恶意的文件和进程。
目前针对Linux系统的Rootkit检测工具多数是应用层的Rootkit检测,主流的Linux内核层Rootkit检测手段有限,常用的手段有基于特征码检测、基于内核栈检测、基于VMM的Rootkit检测技术、基于内核挂钩检测、基于内核内存检测、基于内核kallsyms符号表检测等。这些检测技术一般存在着一定的局限性,有的仅仅针对检测特定的内核Rootkit手段,或者针对某一特定环境;基于特征码检测只能通过分析现有的内核Rootkit检测技术,提取特征码然后做特定检测处理,不能检测未知手段的内核Rootkit;基于内核kallsyms符号表检测、基于内核挂钩检测、基于内核栈检测,都是通过函数地址信息,对函数地址进行检测,只能检测使用一般HOOK技术手段的Rootkit,不能检测使用INLINE HOOK技术的Rootkit情况;基于内核kallsyms符号表检测,该机制还存在借助外部System.map文件的情况,而该文件是容易被篡改利用的可读文件,导致检测结果不准确,而且System.map文件不包含内核模块的函数表信息,不能检测内核模块中的Rootkit;基于VMM的Rootkit检测只针对特定环境;
综上所述,目前主流内核Rootkit检测技术多是针对Rootkit行为策略的检测技术,存在缺点和不足,无法全面的对系统进行检测。
发明内容
有鉴于此,本发明提供了一种Linux下基于elf二进制标准解析的内核Rootkit检测方法、装置及存储设备,解决了目前主流内核Rootkit检测技术多是针对Rootkit行为策略的检测技术,存在缺点和不足无法全面的对系统进行检测的问题。
第一方面,本发明提供了一种Linux下基于elf二进制标准解析的内核Rootkit检测方法,包括:
加载待测内核,读取其中内核文件或者内核模块文件到内存;
读取内核及内核模块的elf文件中代码段和只读数据段的内容;
将读取到的代码段和只读数据段内容与运行中的待测内核的代码区和只读数据区进行逐一比对获取差异;
若差异出现在只读数据段则直接判定为内核Rootkit;若差异出现在代码段,则需进一步排除差异是否属于内核运行时的修改,如果不是则判定为内核Rootkit。
进一步地,所述加载待测内核,具体为:通过在应用层使用insmod命令直接加载。
进一步地,所述读取内核及内核模块的elf文件中代码段和只读数据段的内容,具体为:针对内核文件,获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型;针对内核模块文件,在获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型的基础上,还需要循环扫描所有的表段,根据获取的表段起始地址和大小,将所有表段段起始地址与运行中的待测内核模块的加载地址偏移相加,模拟内核模块实际的运行加载地址,并且针对内核模块中标志类型为SHT_SYMTAB的表段中描述的所有未定义符号,解析运行中内核的符号进行填充,循环遍历所有类型为“SHT_RELA段”的重定位表段并按照elf标准规则进行相应的计算填充。
进一步地,所述获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型,具体为:所述内核及内核模块文件的表段包括:.text代码段,.rodata只读数据段,.data段,.smp_locks段,.strtab段,.altinstructions段,.parainstructions段,SHT_SYMTAB段,SHT_RELA段;所述获取内核及内核模块文件的表段段起始地址和大小和名称和标志类型,包括:解析出elf文件格式中段表的起始位置和大小,并循环扫描所有的段信息,根据段名称,解析elf文件格式头包含需要解析的对比的代码段和只读数据段在内存中的地址,具体为:根据运行中待测内核的jump_table相关符号地址,解析elf文件格式头包含需要解析的内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.smp_locks表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.altinstructions表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.parainstructions表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_SYMTAB的表地址,根据类型为SHT_SYMTAB的表,解析elf文件格式头包含需要辅助使用的.strtab表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_RELA的全部表地址。
进一步地,排除差异是否属于内核运行时的修改,具体为:排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改;排除差异为内核运行时修改,需要对是否是内核xsaveopt和fentry机制进行判断,判断内容不同的地址是否属于这两种机制。
进一步地,所述排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改,具体为:如果字节不同的内核内存地址属于内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于内核自身修改自身所需要的.smp_locks表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.altinstructions表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.parainstructions表中的地址,则差异属于内核运行时的修改。
第二方面,本发明提供了一种Linux下基于elf二进制标准解析的内核Rootkit检测装置,所述装置包括存储器和处理器,所述存储器用于存储多条指令,所述处理器用于加载所述存储器中存储的指令以执行:
加载待测内核,读取其中内核文件或者内核模块文件到内存;
读取内核及内核模块的elf文件中代码段和只读数据段的内容;
将读取到的代码段和只读数据段内容与运行中的待测内核的代码区和只读数据区进行逐一比对获取差异;
若差异出现在只读数据段则直接判定为内核Rootkit;若差异出现在代码段,则需进一步排除差异是否属于内核运行时的修改,如果不是则判定为内核Rootkit。
进一步地,所述处理器还用于加载所述存储器中存储的指令以执行:所述加载待测内核,具体为:通过在应用层使用insmod命令直接加载。
进一步地,所述处理器还用于加载所述存储器中存储的指令以执行:所述读取内核及内核模块的elf文件中代码段和只读数据段的内容,具体为:针对内核文件,获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型;针对内核模块文件,在获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型的基础上,还需要循环扫描所有的表段,根据获取的表段起始地址和大小,将所有表段段起始地址与运行中的待测内核模块的加载地址偏移相加,模拟内核模块实际的运行加载地址,并且针对内核模块中标志类型为SHT_SYMTAB的表段中描述的所有未定义符号,解析运行中内核的符号进行填充,循环遍历所有类型为“SHT_RELA段”的重定位表段并按照elf标准规则进行相应的计算填充。
进一步地,所述处理器还用于加载所述存储器中存储的指令以执行:所述获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型,具体为:所述内核及内核模块文件的表段包括:.text代码段,.rodata只读数据段,.data段,.smp_locks段,.strtab段,.altinstructions段,.parainstructions段,SHT_SYMTAB段,SHT_RELA段;所述获取内核及内核模块文件的表段段起始地址和大小和名称和标志类型,包括:解析出elf文件格式中段表的起始位置和大小,并循环扫描所有的段信息,根据段名称,解析elf文件格式头包含需要解析的对比的代码段和只读数据段在内存中的地址,具体为:根据运行中待测内核的jump_table相关符号地址,解析elf文件格式头包含需要解析的内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.smp_locks表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.altinstructions表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.parainstructions表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_SYMTAB的表地址,根据类型为SHT_SYMTAB的表,解析elf文件格式头包含需要辅助使用的.strtab表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_RELA的全部表地址。
进一步地,所述处理器还用于加载所述存储器中存储的指令以执行:排除差异是否属于内核运行时的修改,具体为:排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改;排除差异为内核运行时修改,需要对是否是内核xsaveopt和fentry机制进行判断,判断内容不同的地址是否属于这两种机制。
进一步地,所述处理器还用于加载所述存储器中存储的指令以执行:所述排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改,具体为:如果字节不同的内核内存地址属于内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于内核自身修改自身所需要的.smp_locks表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.altinstructions表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.parainstructions表中的地址,则差异属于内核运行时的修改。
第三方面,本发明还提供了一种Linux下基于elf二进制标准解析的内核Rootkit检测装置,包括:
加载模块:用于加载待测内核,读取其中内核文件或者内核模块文件到内存;elf读取模块:用于读取内核及内核模块的elf文件中代码段和只读数据段的内容;
比对模块:用于直接读取elf文件中的代码段和只读数据段的内容;将读取代码段和只读数据段内容与运行中待检测内核的代码区和只读数据区进行逐一比对获取差异;
内核Rootkit判定模块:若差异出现在只读数据段则直接判定为内核Rootkit;若差异出现在代码段,则需进一步排除差异是否属于内核运行时的修改,如果不是则判定为内核Rootkit。
第四方面,本发明提供了一种存储设备,所述存储设备中存储有多条指令,所述指令适于由处理器加载并执行本发明实施例提供的一种Linux下基于elf二进制标准解析的内核Rootkit检测方法步骤。
本发明能够达到如下技术效果:
各种手段的内核Rootkit,一般都需要针对加载运行的内核或内核模块代码区和只读数据区进行修改,本发明采用elf可执行二进制码进行比对的方案,通过对系统中存在的内核及内核模块elf标准可执行文件进行解析计算,分别与加载运行中的内核及内核模块代码区和数据区比对,排除由内核运行时修改导致的不同,从而判断系统是否有无Rootkit恶意程序;本发明是针对各种内核Rootkit的实现机制而不是策略来进行检测,可以用于检测未知内核Rootkit,通过全面详细的对内核及内核模块代码区和只读数据区进行对比,保证了检测机制的全面性;通过对内核elf格式中的各种段结构进行解析计算,及各种内核运行时修改机制的还原,可以排除由内核运行时修改导致的不同,保证检测的准确性;而且由于Linux下内核和内核模块是elf标准二进制文件,修改会导致系统不能够正常启动,不会被恶意篡改,可以保证检测的可靠性;本发明的技术方案可以保证检测手段的全面性、准确性、可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的一种Linux下基于elf二进制标准解析的内核Rootkit检测方法流程图;
图2为本发明的一种Linux下基于elf二进制标准解析的内核Rootkit检测方法装置的结构示意图;
图3为本发明的一种Linux下基于elf二进制标准解析的内核Rootkit检测方法装置的又一结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了更清楚地陈述本发明的具体实施例,对如下名词进行解释:
内核Rootkit:一种系统内核级病毒木马,其作为内核模块加载后能获取到操作系统高级权限,从而使用各种底层技术隐藏和保护自身,绕开安全软件的检测和查杀。通过修改内核函数和数据结构实现。
HOOK:又叫做钩子,在系统没有调用该目标函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,控制改变该函数的执行行为。一般通过修改包含目标函数地址信息的函数表来实现。是Rootkit隐藏信息的最重要手段。
INLINE HOOK:一种更加高级的HOOK技术,不修改函数表中函数地址信息,直接修改函数内容,一般是前五个字节,跳转到钩子函数中,获得控制权。
运行时修改:代码在运行时对自身加载到内存运行的代码段数据段进行修改,通常用于根据运行环境优化自身。内核运行时修改是内核加载运行时出于优化调式等目的根据运行环境对自身所作修改。
xsaveopt机制:内核运行时会针对特定CPU的特定功能做一些修改优化的机制。
fentry机制:内核在一些函数的开头插入一些空指令,便于以后调试修改函数使用的机制。
第一方面,本发明实施例提供了一种Linux下基于elf二进制标准解析的内核Rootkit检测方法,可以用于检测未知内核Rootkit,可以全面、准确、可靠地检测内核Rootkit。
图1为本发明实施例的一种Linux下基于elf二进制标准解析的内核Rootkit检测方法流程图,包括:
S101.加载待测内核,读取其中内核文件或者内核模块文件到内存;
S102.读取内核及内核模块的elf文件中代码段和只读数据段的内容;
S103.将读取到的代码段和只读数据段内容与运行中的待测内核的代码区和只读数据区进行逐一比对获取差异;
S104.若差异出现在只读数据段则直接判定为内核Rootkit;若差异出现在代码段,则需进一步排除差异是否属于内核运行时的修改,如果不是则判定为内核Rootkit。
优选地,所述加载待测内核,具体为:通过在应用层使用insmod命令直接加载。
优选地,所述读取内核及内核模块的elf文件中代码段和只读数据段的内容,具体为:针对内核文件,获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型;针对内核模块文件,还需要循环扫描所有的表段,根据获取的表段起始地址和大小,将所有表段段起始地址与运行中的待测内核模块的加载地址偏移相加,模拟内核模块实际的运行加载地址;针对内核模块中标志类型为SHT_SYMTAB的表段中描述的所有未定义符号,解析实际运行内核的符号来填充;循环遍历所有类型为“SHT_RELA段”的重定位表段并按照elf标准规则进行相应的计算填充。
优选地,所述获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型,具体为:所述内核及内核模块文件的表段包括:.text代码段,.rodata只读数据段,.data段,.smp_locks段,.strtab段,.altinstructions段,.parainstructions段,SHT_SYMTAB段,SHT_RELA段;所述获取内核及内核模块文件的表段段起始地址和大小和名称和标志类型,包括:解析出elf文件格式中段表的起始位置和大小,并循环扫描所有的段信息,根据段名称,解析elf文件格式头包含需要解析的对比的代码段和只读数据段在内存中的地址,具体为:根据运行中待测内核的jump_table相关符号地址,解析elf文件格式头包含需要解析的内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.smp_locks表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.altinstructions表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.parainstructions表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_SYMTAB的表地址,根据类型为SHT_SYMTAB的表,解析elf文件格式头包含需要辅助使用的.strtab表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_RELA的全部表地址。
优选地,所述排除差异是否属于内核运行时的修改,具体为:排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改;排除差异为内核运行时修改,需要对是否是内核xsaveopt和fentry机制进行判断,判断内容不同的地址是否属于这两种机制。
优选地,所述排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改,具体为:如果字节不同的内核内存地址属于内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于内核自身修改自身所需要的.smp_locks表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.altinstructions表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.parainstructions表中的地址,则差异属于内核运行时的修改。
第二方面,本发明实施例提供了一种Linux下基于elf二进制标准解析的内核Rootkit检测装置。
图2为一种Linux下基于elf二进制标准解析的内核Rootkit检测方法装置的结构示意图,所述装置包括存储器201和处理器202,所述存储器201用于存储多条指令,所述处理器202用于加载所述存储器中存储的指令以执行:
加载待测内核,读取其中内核文件或者内核模块文件到内存;
读取内核及内核模块的elf文件中代码段和只读数据段的内容;
将读取到的代码段和只读数据段内容与运行中的待测内核的代码区和只读数据区进行逐一比对获取差异;
若差异出现在只读数据段则直接判定为内核Rootkit;若差异出现在代码段,则需进一步排除差异是否属于内核运行时的修改,如果不是则判定为内核Rootkit。
优选地,所述处理器202还用于加载所述存储器201中存储的指令以执行:所述加载待测内核,具体为:通过在应用层使用insmod命令直接加载。
优选地,所述处理器202还用于加载所述存储器201中存储的指令以执行:所述读取内核及内核模块的elf文件中代码段和只读数据段的内容,具体为:针对内核文件,读取内核及内核模块的elf文件,获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址和大小和名称和标志类型;针对内核模块文件,还需要循环扫描所有的表段,根据获取的表段起始地址和大小,将所有表段段起始地址与运行中的待测内核模块的加载地址偏移相加,模拟内核模块实际的运行加载地址;针对内核模块中标志类型为SHT_SYMTAB的表段中描述的所有未定义符号,解析实际运行内核的符号来填充;循环遍历所有类型为“SHT_RELA段”的重定位表段并按照elf标准规则进行相应的计算填充。
优选地,所述处理器202还用于加载所述存储器201中存储的指令以执行:所述获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型,具体为:所述内核及内核模块文件的表段包括:.text代码段,.rodata只读数据段,.data段,.smp_locks段,.strtab段,.altinstructions段,.parainstructions段,SHT_SYMTAB段,SHT_RELA段;所述获取内核及内核模块文件的表段段起始地址和大小和名称和标志类型,包括:解析出elf文件格式中段表的起始位置和大小,并循环扫描所有的段信息,根据段名称,解析elf文件格式头包含需要解析的对比的代码段和只读数据段在内存中的地址,具体为:根据运行中待测内核的jump_table相关符号地址,解析elf文件格式头包含需要解析的内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.smp_locks表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.altinstructions表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.parainstructions表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_SYMTAB的表地址,根据类型为SHT_SYMTAB的表,解析elf文件格式头包含需要辅助使用的.strtab表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_RELA的全部表地址。
优选地,所述处理器202还用于加载所述存储器201中存储的指令以执行:所述排除差异是否属于内核运行时的修改,具体为:排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改;排除差异为内核运行时修改,需要对是否是内核xsaveopt和fentry机制进行判断,判断内容不同的地址是否属于这两种机制。
优选地,所述处理器202还用于加载所述存储器201中存储的指令以执行:所述排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改,具体为:如果字节不同的内核内存地址属于内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于内核自身修改自身所需要的.smp_locks表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.altinstructions表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.parainstructions表中的地址,则差异属于内核运行时的修改。
第三方面,本发明实施例还提供了一种Linux下基于elf二进制标准解析的内核Rootkit检测装置。
图3为一种Linux下基于elf二进制标准解析的内核Rootkit检测方法装置的又一结构示意图,包括:
加载模块31:用于加载待测内核,读取其中内核文件或者内核模块文件到内存;elf读取模块32:用于读取内核及内核模块的elf文件中代码段和只读数据段的内容;
比对模块33:用于直接读取elf文件中的代码段和只读数据段的内容;将读取代码段和只读数据段内容与运行中待检测内核的代码区和只读数据区进行逐一比对获取差异;
内核Rootkit判定模块34:用于若差异出现在只读数据段则直接判定为内核Rootkit;若差异出现在代码段,则需进一步排除差异是否属于内核运行时的修改,如果不是则判定为内核Rootkit。
第四方面,本发明实施例提供了一种存储设备,所述存储设备中存储有多条指令,所述指令适于由处理器加载并执行本发明实施例提供的一种Linux下基于elf二进制标准解析的内核Rootkit检测方法步骤。
本发明实施例的技术方案能够达到如下技术效果:
各种手段的内核Rootkit,一般都需要针对加载运行的内核或内核模块代码区和只读数据区进行修改,本发明采用elf可执行二进制码进行比对的方案,通过对系统中存在的内核及内核模块elf标准可执行文件进行解析计算,分别与加载运行中的内核及内核模块代码区和数据区比对,排除由内核运行时修改导致的不同,从而判断系统是否有无Rootkit恶意程序;本发明是针对各种内核Rootkit的实现机制而不是策略来进行检测,可以用于检测未知内核Rootkit,通过全面详细的对内核及内核模块代码区和只读数据区进行对比,保证了检测机制的全面性;通过对内核elf格式中的各种段结构进行解析计算,及各种内核运行时修改机制的还原,可以排除由内核运行时修改导致的不同,保证检测的准确性;而且由于Linux下内核和内核模块是elf标准二进制文件,修改会导致系统不能够正常启动,不会被恶意篡改,可以保证检测的可靠性;本发明的技术方案可以保证检测手段的全面性、准确性、可靠性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (12)

1.一种Linux下基于elf二进制标准解析的内核Rootkit检测方法,其特征在于,包括:
加载待测内核,读取其中内核文件或者内核模块文件到内存;
读取内核及内核模块的elf文件中代码段和只读数据段的内容;
将读取到的代码段和只读数据段内容与运行中的待测内核的代码区和只读数据区进行逐一比对获取差异;
若差异出现在只读数据段则直接判定为内核Rootkit;若差异出现在代码段,则需进一步排除差异是否属于内核运行时的修改,如果不是则判定为内核Rootkit;
所述读取内核及内核模块的elf文件中代码段和只读数据段的内容,具体为:针对内核文件,获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型;针对内核模块文件,在获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型的基础上,还需要循环扫描所有的表段,根据获取的表段起始地址和大小,将所有表段段起始地址与运行中的待测内核模块的加载地址偏移相加,模拟内核模块实际的运行加载地址,并且针对内核模块中标志类型为SHT_SYMTAB的表段中描述的所有未定义符号,解析运行中内核的符号进行填充,循环遍历所有类型为“SHT_RELA段”的重定位表段并按照elf标准规则进行相应的计算填充。
2.如权利要求1所述的方法,其特征在于,所述加载待测内核,具体为:通过在应用层使用insmod命令直接加载待测内核。
3.如权利要求1所述的方法,其特征在于,所述获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型,具体为:所述内核及内核模块文件的表段包括:.text代码段,.rodata只读数据段,.data段,.smp_locks段,.strtab段,.altinstructions段,.parainstructions段,SHT_SYMTAB段,SHT_RELA段;所述获取内核及内核模块文件的表段段起始地址和大小和名称和标志类型,包括:解析出elf文件格式中段表的起始位置和大小,并循环扫描所有的段信息,根据段名称,解析elf文件格式头包含需要解析的对比的代码段和只读数据段在内存中的地址,具体为:根据运行中待测内核的jump_table相关符号地址,解析elf文件格式头包含需要解析的内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.smp_locks表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.altinstructions表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.parainstructions表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_SYMTAB的表地址,根据类型为SHT_SYMTAB的表,解析elf文件格式头包含需要辅助使用的.strtab表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_RELA的全部表地址。
4.如权利要求3所述方法,其特征在于,所述排除差异是否属于内核运行时的修改体为:排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析,判断内容不同的地址是否属于运行时修改;排除差异为内核运行时修改,需要对是否是内核xsaveopt和fentry机制进行判断,判断内容不同的地址是否属于这两种机制。
5.如权利要求4所述的方法,其特征在于,所述排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改,具体为:如果字节不同的内核内存地址属于内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于内核自身修改自身所需要的.smp_locks表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.altinstructions表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.parainstructions表中的地址,则差异属于内核运行时的修改。
6.一种Linux下基于elf二进制标准解析的内核Rootkit检测装置,其特征在于,所述装置包括存储器和处理器,所述存储器用于存储多条指令,所述处理器用于加载所述存储器中存储的指令以执行:
加载待测内核,读取其中内核文件或者内核模块文件到内存;
读取内核及内核模块的elf文件中代码段和只读数据段的内容;
将读取到的代码段和只读数据段内容与运行中的待测内核的代码区和只读数据区进行逐一比对获取差异;
若差异出现在只读数据段则直接判定为内核Rootkit;若差异出现在代码段,则需进一步排除差异是否属于内核运行时的修改,如果不是则判定为内核Rootkit;
所述处理器还用于加载所述存储器中存储的指令以执行:所述读取内核及内核模块的elf文件中代码段和只读数据段的内容,具体为:针对内核文件,获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型;针对内核模块文件,在获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型的基础上,还需要循环扫描所有的表段,根据获取的表段起始地址和大小,将所有表段段起始地址与运行中的待测内核模块的加载地址偏移相加,模拟内核模块实际的运行加载地址,并且针对内核模块中标志类型为SHT_SYMTAB的表段中描述的所有未定义符号,解析运行中内核的符号进行填充,循环遍历所有类型为“SHT_RELA段”的重定位表段并按照elf标准规则进行相应的计算填充。
7.如权利要求6所述的装置,其特征在于,所述处理器还用于加载所述存储器中存储的指令以执行:所述加载待测内核,具体为:通过在应用层使用insmod命令直接加载待测内核。
8.如权利要求6所述的装置,其特征在于,所述处理器还用于加载所述存储器中存储的指令以执行:所述获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型,具体为:所述内核及内核模块文件的表段包括:.text代码段,.rodata只读数据段,.data段,.smp_locks段,.strtab段,.altinstructions段,.parainstructions段,SHT_SYMTAB段,SHT_RELA段;所述获取内核及内核模块文件的表段段起始地址和大小和名称和标志类型,包括:解析出elf文件格式中段表的起始位置和大小,并循环扫描所有的段信息,根据段名称,解析elf文件格式头包含需要解析的对比的代码段和只读数据段在内存中的地址,具体为:根据运行中待测内核的jump_table相关符号地址,解析elf文件格式头包含需要解析的内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.smp_locks表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.altinstructions表地址;根据段名称,解析elf文件格式头包含需要解析的内核自身修改自身所需要的.parainstructions表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_SYMTAB的表地址,根据类型为SHT_SYMTAB的表,解析elf文件格式头包含需要辅助使用的.strtab表地址;根据段标志,解析elf文件格式头包含需要解析的内核模块所需要的判断类型为SHT_RELA的全部表地址。
9.如权利要求8所述的装置,其特征在于,所述处理器还用于加载所述存储器中存储的指令以执行:所述排除差异是否属于内核运行时的修改,具体为:排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改;排除差异为内核运行时修改,需要对是否是内核xsaveopt和fentry机制进行判断,判断内容不同的地址是否属于这两种机制。
10.如权利要求9所述的装置,其特征在于,所述处理器还用于加载所述存储器中存储的指令以执行:所述排除差异为内核运行时修改,需要对内核及内核模块的elf可执行文件中包含的运行时修改表段进行解析计算,判断内容不同的地址是否属于运行时修改,具体为:如果字节不同的内核内存地址属于内核自身修改自身所需要的包含在.data表地址中的.jump_table表信息地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于内核自身修改自身所需要的.smp_locks表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.altinstructions表中的地址,则差异属于内核运行时的修改;如果字节不同的内核内存地址属于符合内核自身修改自身所需要的.parainstructions表中的地址,则差异属于内核运行时的修改。
11.一种Linux下基于elf二进制标准解析的内核Rootkit检测装置,包括:
加载模块:用于加载待测内核,读取其中内核文件或者内核模块文件到内存;
elf读取模块:用于读取内核及内核模块的elf文件中代码段和只读数据段的内容;
比对模块:用于直接读取elf文件中的代码段和只读数据段的内容;将读取代码段和只读数据段内容与运行中待检测内核的代码区和只读数据区进行逐一比对获取差异;
内核Rootkit判定模块:用于若差异出现在只读数据段则直接判定为内核Rootkit;若差异出现在代码段,则需进一步排除差异是否属于内核运行时的修改,如果不是则判定为内核Rootkit;
读取内核及内核模块的elf文件中代码段和只读数据段的内容,具体为:针对内核文件,获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型;针对内核模块文件,在获取段表起始地址和大小,解析段表来获取内核及内核模块文件的表段段起始地址、大小、名称和标志类型的基础上,还需要循环扫描所有的表段,根据获取的表段起始地址和大小,将所有表段段起始地址与运行中的待测内核模块的加载地址偏移相加,模拟内核模块实际的运行加载地址,并且针对内核模块中标志类型为SHT_SYMTAB的表段中描述的所有未定义符号,解析运行中内核的符号进行填充,循环遍历所有类型为“SHT_RELA段”的重定位表段并按照elf标准规则进行相应的计算填充。
12.一种存储设备,其特征在于,所述存储设备中存储有多条指令,所述指令适于由处理器加载并执行权利要求1-5任一方法的步骤。
CN201911323902.8A 2019-12-20 2019-12-20 Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 Active CN111027072B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911323902.8A CN111027072B (zh) 2019-12-20 2019-12-20 Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911323902.8A CN111027072B (zh) 2019-12-20 2019-12-20 Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置

Publications (2)

Publication Number Publication Date
CN111027072A CN111027072A (zh) 2020-04-17
CN111027072B true CN111027072B (zh) 2024-02-27

Family

ID=70211766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911323902.8A Active CN111027072B (zh) 2019-12-20 2019-12-20 Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置

Country Status (1)

Country Link
CN (1) CN111027072B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111695116A (zh) * 2020-05-13 2020-09-22 北京安天网络安全技术有限公司 基于Linux系统内核层Rootkit的取证方法与装置
CN111639340B (zh) * 2020-05-28 2023-11-03 北京金山云网络技术有限公司 恶意应用程序检测方法、装置、电子设备及可读存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7665123B1 (en) * 2005-12-01 2010-02-16 Symantec Corporation Method and apparatus for detecting hidden rootkits
US7802300B1 (en) * 2007-02-06 2010-09-21 Trend Micro Incorporated Method and apparatus for detecting and removing kernel rootkits
CN102194080A (zh) * 2011-06-13 2011-09-21 西安交通大学 一种基于内核虚拟机的rootkit检测机制及检测方法
CN103699839A (zh) * 2013-12-09 2014-04-02 Tcl集团股份有限公司 一种内核级rootkit检测处理方法及系统
CN103886259A (zh) * 2014-03-19 2014-06-25 四川大学 基于Xen虚拟化环境的内核级rootkit检测和处理方法
CN104598823A (zh) * 2015-01-21 2015-05-06 华东师范大学 一种安卓系统中内核级rootkit检测方法及其系统
CN106354635A (zh) * 2016-08-25 2017-01-25 许继集团有限公司 一种嵌入式设备的程序代码段自检方法及装置
CN106484608A (zh) * 2015-09-01 2017-03-08 青岛海信电器股份有限公司 一种内核错误定位方法、装置及计算机
CN106529299A (zh) * 2016-12-26 2017-03-22 郑州云海信息技术有限公司 一种在linux系统中对恶意软件Rootkit的检测和修复方法
CN106599685A (zh) * 2016-09-26 2017-04-26 哈尔滨安天科技股份有限公司 一种内核级Rootkit检测方法及系统
CN107066311A (zh) * 2017-03-20 2017-08-18 中国科学院软件研究所 一种内核数据访问控制方法与系统
CN109471697A (zh) * 2017-12-01 2019-03-15 北京安天网络安全技术有限公司 一种监控虚拟机中系统调用的方法、装置及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7841006B2 (en) * 2005-10-05 2010-11-23 Computer Associates Think, Inc. Discovery of kernel rootkits by detecting hidden information
US8539584B2 (en) * 2010-08-30 2013-09-17 International Business Machines Corporation Rootkit monitoring agent built into an operating system kernel
US9069586B2 (en) * 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
RU2510075C2 (ru) * 2012-04-11 2014-03-20 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ обнаружения вредоносного программного обеспечения в ядре операционной системы
US20190286820A1 (en) * 2018-03-15 2019-09-19 Samsung Sds Co., Ltd. Apparatus and method for detecting container rootkit

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7665123B1 (en) * 2005-12-01 2010-02-16 Symantec Corporation Method and apparatus for detecting hidden rootkits
US7802300B1 (en) * 2007-02-06 2010-09-21 Trend Micro Incorporated Method and apparatus for detecting and removing kernel rootkits
CN102194080A (zh) * 2011-06-13 2011-09-21 西安交通大学 一种基于内核虚拟机的rootkit检测机制及检测方法
CN103699839A (zh) * 2013-12-09 2014-04-02 Tcl集团股份有限公司 一种内核级rootkit检测处理方法及系统
CN103886259A (zh) * 2014-03-19 2014-06-25 四川大学 基于Xen虚拟化环境的内核级rootkit检测和处理方法
CN104598823A (zh) * 2015-01-21 2015-05-06 华东师范大学 一种安卓系统中内核级rootkit检测方法及其系统
CN106484608A (zh) * 2015-09-01 2017-03-08 青岛海信电器股份有限公司 一种内核错误定位方法、装置及计算机
CN106354635A (zh) * 2016-08-25 2017-01-25 许继集团有限公司 一种嵌入式设备的程序代码段自检方法及装置
CN106599685A (zh) * 2016-09-26 2017-04-26 哈尔滨安天科技股份有限公司 一种内核级Rootkit检测方法及系统
CN106529299A (zh) * 2016-12-26 2017-03-22 郑州云海信息技术有限公司 一种在linux系统中对恶意软件Rootkit的检测和修复方法
CN107066311A (zh) * 2017-03-20 2017-08-18 中国科学院软件研究所 一种内核数据访问控制方法与系统
CN109471697A (zh) * 2017-12-01 2019-03-15 北京安天网络安全技术有限公司 一种监控虚拟机中系统调用的方法、装置及存储介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
(美)(D.A.勒布朗)Dee-Ann LeBlanc.《Linux安装与配置简明手册》.北京:机械工业出版社,2000,第121页. *
《Windows_Rootkit分析与检测》;赖云一;《中国优秀硕士学位论文全文数据库(电子期刊)》;全文 *
Windows Rootkit分析与检测综合方法;陈伟东;张力;;信息化纵横(第12期);全文 *
一种防范rootkit入侵的内核模块加载机制;谈潘攀;;软件(第04期);全文 *
基于新型VMI技术的内核Rootkit检测方案;陈进;夏虞斌;臧斌宇;;计算机应用与软件(第07期);第268-269页 *

Also Published As

Publication number Publication date
CN111027072A (zh) 2020-04-17

Similar Documents

Publication Publication Date Title
CN108763928B (zh) 一种开源软件漏洞分析方法、装置和存储介质
CN108090346B (zh) 一种基于数据流监控的代码复用攻击防御方法及系统
US10019240B2 (en) Method and apparatus for detecting code change
US10397261B2 (en) Identifying device, identifying method and identifying program
US9824212B2 (en) Method and system for recognizing advertisement plug-ins
US9619650B2 (en) Method and device for identifying virus APK
JP4732484B2 (ja) 仮想環境を利用した非実行ファイル内のエクスプロイトコード分析方法及び装置
US20090133126A1 (en) Apparatus and method for detecting dll inserted by malicious code
US20200380125A1 (en) Method for Detecting Libraries in Program Binaries
US20110219454A1 (en) Methods of identifying activex control distribution site, detecting security vulnerability in activex control and immunizing the same
US10395033B2 (en) System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
CN111027072B (zh) Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置
WO2017177003A1 (en) Extraction and comparison of hybrid program binary features
KR101064164B1 (ko) 리눅스 커널 기반 스마트 플랫폼 내에서의 커널 무결성 검사 및 변조된 커널 데이터 복구 방법
KR101979329B1 (ko) 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치
CN109214179B (zh) 一种程序模块安全检测方法及装置
JP4643201B2 (ja) バッファオーバーフロー脆弱性分析方法、データ処理装置、分析情報提供装置、分析情報抽出処理用プログラムおよび分析情報提供処理用プログラム
KR20150134172A (ko) 악성코드 탐지 장치 및 방법
Durães et al. A methodology for the automated identification of buffer overflow vulnerabilities in executable software without source-code
US10083298B1 (en) Static approach to identify junk APIs in a malware
US11886589B2 (en) Process wrapping method for evading anti-analysis of native codes, recording medium and device for performing the method
CN106709552B (zh) 智能卡安全防护方法及装置
KR102271273B1 (ko) 네이티브 코드 분석방지 우회를 위한 프로세스 래핑 방법, 이를 수행하기 위한 기록 매체 및 장치
CN113391873B (zh) 基于虚拟机的行为采集方法、虚拟机、装置及存储介质
CN114329473A (zh) 一种样本动态检测方法及装置

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
GR01 Patent grant
GR01 Patent grant