CN114510717A - 一种elf文件的检测方法、装置、存储介质 - Google Patents
一种elf文件的检测方法、装置、存储介质 Download PDFInfo
- Publication number
- CN114510717A CN114510717A CN202210086630.XA CN202210086630A CN114510717A CN 114510717 A CN114510717 A CN 114510717A CN 202210086630 A CN202210086630 A CN 202210086630A CN 114510717 A CN114510717 A CN 114510717A
- Authority
- CN
- China
- Prior art keywords
- detection
- file
- detection result
- model
- elf 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.)
- Pending
Links
Images
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
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供一种ELF文件的检测方法、装置、存储介质。ELF文件的检测方法,包括:获取待检测的ELF文件;确定第三方检测工具判定ELF文件为正常文件;确定ELF文件为未加壳文件;从ELF文件中提取出静态特征,根据静态特征和预先训练好的第一检测模型确定第一检测结果;将ELF文件转换为图片,根据图片和预先训练好的第二检测模型确定第二检测结果;获取ELF文件对应的沙箱报告,从沙箱报告中提取出沙箱特征,根据沙箱特征和预先训练好的第三检测模型确定第三检测结果;根据第一检测结果、第二检测结果、第三检测结果和预先训练好的第四检测模型获得最终的检测结果。该方法用以提高检测准确性,进而保证网络的安全性。
Description
技术领域
本申请涉及网络安全技术领域,具体而言,涉及一种ELF文件的检测方法、装置、存储介质。
背景技术
近年来,互联网行业蓬勃发展,网络已经成为人们主要的信息获取方式,随着各种新网站的出现,网络信息大量增长,伴随出现的安全问题也愈发严重。一些恶意程序通过一些网站、邮件链接等渠道,安装在服务器上,但用户不知情,恶意软件会配合其它攻击手段,盗取用户信息,甚至公司的信息。
现有的安全防护方案,根据恶意文件的代码特征建立病毒库,再以病毒库为参考对软件进行查杀。这种方法对已知的病毒可以实现查杀效果,但是需要不断地完善病毒库,以应对恶意文件的变化,导致准确性较差。
因此,现有的恶意文件的检测方式,若病毒库更新不及时,无法未更新至病毒库的恶意文件进行查杀,导致准确性较差,无法保证网络的安全性。
发明内容
本申请实施例的目的在于提供一种ELF(Executable and Linkable Format,可执行与可链接格式)文件的检测方法、装置、存储介质,用以提高检测准确性,进而保证网络的安全性。
第一方面,本申请实施例提供一种ELF文件的检测方法,包括:获取待检测的ELF文件;确定第三方检测工具判定所述ELF文件为正常文件;确定所述ELF文件为未加壳文件;从所述ELF文件中提取出静态特征,根据所述静态特征和预先训练好的第一检测模型确定第一检测结果;将所述ELF文件转换为图片,根据所述图片和预先训练好的第二检测模型确定第二检测结果;获取所述ELF文件对应的沙箱报告,从所述沙箱报告中提取出沙箱特征,根据所述沙箱特征和预先训练好的第三检测模型确定第三检测结果;根据所述第一检测结果、所述第二检测结果、所述第三检测结果和预先训练好的第四检测模型获得最终的检测结果;所述最终的检测结果用于表征所述ELF文件是否为恶意文件。
与现有技术相比,先通过第三方检测工具对ELF文件进行检测,若通过第三方检测工具判定ELF文件为正常文件,且ELF文件为未加壳文件,则结合四种检测模型对ELF文件是否为恶意文件进行判断。通过第一检测模型和静态特征,获得ELF文件的第一检测结果;通过第二检测模型和ELF文件对应的图片,获得ELF文件的第二检测结果;通过第三检测模型和ELF文件对应的沙箱报告的沙箱特征,获得ELF文件的第三检测结果;最后再利用第四检测模型对三种检测结果进行融合,获得最终的检测结果。这种结合多种算法对ELF文件进行检测的方式,结合ELF文件的多方面的特征,提高检测结果的准确性。并且,各个检测算法都依靠预先训练好的模型实现,具有较好的鲁棒性,即便针对新的攻击方式,也能够实现准确的检测,进而保证网络的安全性。
作为一种可能的实现方式,所述第三方检测工具包括:clamav、LMD、virustotal、fuzzy hash中的至少一个检测工具。
在本申请实施例中,通过上述的至少一个第三方检测工具,实现ELF文件是否为正常文件的初步判定。
作为一种可能的实现方式,所述静态特征包括:header特征、section特征、symbols特征、dynamic特征、table_size特征、relocation_section特征。
在本申请实施例中,通过上述的静态特征,实现第一检测结果的有效且准确的确定。
作为一种可能的实现方式,所述将ELF文件转换为图片,包括:根据预设的图片限制条件将所述ELF文件转换为图片;所述图片限制条件用于限定输入所述预先训练好的第二检测模型中的图片的大小。
在本申请实施例中,通过将ELF文件转换为符合第二检测模型的限制条件的图片大小,有利于基于第二检测模型获得更为准确的检测结果。
作为一种可能的实现方式,所述沙箱特征包括:调用API总次数、调用API(Application Programming Interface,应用程序接口)去重后的次数、tid的总次数、tid去重后的次数、tid最小值、tid最大值、tid中位数、tid方差、tid的分位数、tid去除极值后的范围、index的最大值、每个API的tid的个数和去重后的数量。
在本申请实施例中,通过提取上述沙箱特征,实现第三检测结果的有效且准确的确定。
作为一种可能的实现方式,所述预先训练好的第四检测模型为逻辑回归模型,在所述逻辑回归模型的逻辑回归算法中,所述第一检测模型、所述第二检测模型和所述第三检测模型分别对应不同的模型权重值。
在本申请实施例中,通过逻辑回归模型的逻辑回归算法中设置的不同的模型权重值,实现三种检测结果的有效且合理的融合,提高最终的检测结果的准确性。
作为一种可能的实现方式,所述检测方法还包括:确定所述ELF文件为加壳文件;将所述ELF文件转换为图片,根据所述图片和预先训练好的第二检测模型确定第二检测结果;获取所述ELF文件对应的沙箱报告,从所述沙箱报告中提取出沙箱特征,根据所述沙箱特征和预先训练好的第三检测模型确定第三检测结果;根据所述第二检测结果和所述第三检测结果确定最终的检测结果;所述最终的检测结果用于表征所述ELF文件是否为恶意文件。
在本申请实施例中,若ELF文件为加壳文件,则通过ELF文件转换的图片和预先训练好的第二检测模型确定第二检测结果,以及通过沙箱特征和预先训练好的第三检测模型确定第三检测结果,最后再结合两种检测结果,实现最终的检测结果的有效且准确的确定。
作为一种可能的实现方式,所述第一检测模型为:xgboost模型,和/或所述第二检测模型为resnet18模型,和/或所述第三检测模型为随机森林模型。
在本申请实施例中,通过将上述的各种模型作为对应的检测模型,实现各种检测结果的有效且准确的确定。
第二方面,本申请实施例提供一种ELF文件的检测装置,包括:用于实现第一方面以及第一方面的任意一种可能的实现方式中所述的ELF文件的检测方法的各个功能模块。
第三方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时,执行第一方面以及第一方面的任意一种可能的实现方式中所述的ELF文件的检测方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的ELF文件的检测方法的流程图;
图2为本申请实施例提供的第二检测模型的结构示意图;
图3为本申请实施例提供的ELF文件的检测装置的结构示意图。
图标:300-ELF文件的检测装置;310-获取模块;320-处理模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请实施例提供的技术方案可以应用于各个需要对恶意文件进行检测的应用场景中,例如:电子设备对恶意文件进行检测、浏览器对恶意文件进行检测等。
本申请实施例所针对的恶意文件为ELF文件,当然,对于其他格式的文件,也可以参照ELF文件的检测方式进行检测,不构成对本申请实施例的限制。
基于上述的应用场景,本申请实施例提供的技术方案对应的硬件运行环境,可以是恶意文件的检测平台,该检测平台可以是防火墙、检测应用程序、检测设备、检测服务器等各种形式,在本申请实施例中不作限定。
基于上述应用场景的介绍,请参照图1,为本申请实施例提供的ELF文件的检测方法的流程图,该检测方法包括:
步骤110:获取待检测的ELF文件。
步骤120:确定第三方检测工具判定ELF文件为正常文件。
步骤130:确定ELF文件为未加壳文件。
步骤140:从ELF文件中提取出静态特征,根据静态特征和预先训练好的第一检测模型确定第一检测结果。
步骤150:将ELF文件转换为图片,根据图片和预先训练好的第二检测模型确定第二检测结果。
步骤160:获取ELF文件对应的沙箱报告,从沙箱报告中提取出沙箱特征,根据沙箱特征和预先训练好的第三检测模型确定第三检测结果。
步骤170:根据第一检测结果、第二检测结果、第三检测结果和预先训练好的第四检测模型获得最终的检测结果。最终的检测结果用于表征ELF文件是否为恶意文件。
与现有技术相比,先通过第三方检测工具对ELF文件进行检测,若通过第三方检测工具判定ELF文件为正常文件,且ELF文件为未加壳文件,则结合四种检测模型对ELF文件是否为恶意文件进行判断。通过第一检测模型和静态特征,获得ELF文件的第一检测结果;通过第二检测模型和ELF文件对应的图片,获得ELF文件的第二检测结果;通过第三检测模型和ELF文件对应的沙箱报告的沙箱特征,获得ELF文件的第三检测结果;最后再利用第四检测模型对三种检测结果进行融合,获得最终的检测结果。这种结合多种算法对ELF文件进行检测的方式,结合ELF文件的多方面的特征,提高检测结果的准确性。并且,各个检测算法都依靠预先训练好的模型实现,具有较好的鲁棒性,即便针对新的攻击方式,也能够实现准确的检测,进而保证网络的安全性。
接下来对该检测方法的详细实施方式进行介绍。
在步骤110中,待检测的ELF文件可以是前述的检测平台在运行的过程中实时检测到的ELF文件,也可以是由用户,或者其他平台传输给检测平台的ELF文件,或者其他来源,在本申请实施例中不作限定。
待检测的ELF文件的数量可以是一份,也可以是多份。如果是多份,则每一份都按照相同的检测方式进行检测即可,多份ELF文件的检测流程可以是同步的,也可以是异步的,在此不作限定。
在获取到待检测的ELF文件之后,可以先通过第三方检测工具进行检测。
其中,第三方检测工具可以是预置在检测平台上的检测工具;也可以是独立在检测平台之外的检测工具。不管是哪种实施方式,检测平台将待检测的ELF输入到第三方检测工具中,第三方检测工具便会反馈对应的检测结果。
作为一种可选的实施方式,第三方检测工具包括:clamav、LMD、virustotal、fuzzyhash中的至少一个检测工具。
clamav用于发现已有的病毒,可疑家族。
LMD是开源框架,用于实现基于MD5(Message-Digest Algorithm,信息摘要算法)文件的哈希检测。其可以基于HEX(一种文件格式)模式进行匹配,用于识别威胁变体;还可以用于检测混淆威胁的统计分析组件(例如:base64),并基于内核的inotify实现实时文件的扫描、创建、修改、移动文件等功能来实现文件的检测。
virustotal主要是通过API提交样本,来获取各个反病毒引擎的扫描情况。
Fuzzy hash,建立(恶意)fuzzy hash库,通过获取文件的fuzzy hash,与库中的fuzzy hash进行快速的比对,实现恶意文件的检测。
在一些实施例中,第三方检测工具还可以是公司自主开发的工具,主要功能是建立恶意文件黑名单、及时更新黑名单、以及根据黑名单实现恶意文件的检测。在黑名单中,可以包括恶意IP(Internet Protocol Address,互联网协议地址)、恶意host和恶意URL(Uniform Resource Locator,统一资源定位器)等。
在一些实施例中,可以对上述的第三方检测工具进行结合应用,也可以从其中选择一个第三方检测工具进行应用。
在结合应用时,可以设置各个第三方检测工具的检测顺序,当任意一个第三方检测工具的检测结果表征ELF文件是恶意文件时,则可认定ELF文件是恶意文件。若各个第三方检测工具的检测结果均表征ELF文件是正常文件,则可认定第三方检测工具判定待检测的ELF文件是正常文件。
举例来说,查看clamav是否有检出恶意情报,如果有检出则ELF文件为恶意样本。查看LMD是否检出恶意情报,如果有检出则ELF文件为恶意样本。如果virustotal有返回结果,其返回结果中有7个及以上反病毒引擎检测出恶意情报,则视ELF文件为恶意样本。如果ELF文件没有加壳,则把ELF文件通过ssdeep提取fuzzy hash,跟fuzzy hash库进行对比,如果发现有相似的家族,则认为该样本属于该家族,属于恶意样本。
当然,也可以采取其他的结合应用方式,在本申请实施例中不作限定。
在本申请实施例中,通过上述的至少一个第三方检测工具,实现ELF文件是否为正常文件的初步判定。
可以理解,如果第三方检测工具判定ELF文件是恶意文件,则无需进行后续的进一步判断,可直接输出ELF文件是恶意文件的检测结果。如果第三方检测工具判定ELF文件是正常文件,则执行步骤120。
在本申请实施例中,ELF文件有两种情况,一种是加壳文件,另一种是未加壳文件。加壳文件相较于未加壳文件来说,对程序文件进行了压缩,可以直接运行,但是不能查看源代码,需要经过脱壳之后才能查看源代码。
针对加壳文件和未加壳文件,本申请实施例采用不同的检测方式。因此,在步骤130之前,先判断ELF文件是否为未加壳文件,如果是,则执行步骤130,如果不是,则可按照另一种实施方式进行检测。
关于ELF文件是否为加壳文件,可直接基于ELF文件的文件属性信息判断,在此不作详细介绍。
在步骤130中,确定ELF文件为未加壳文件,则可按照未加壳文件的检测方式对ELF文件进行检测。
在本申请实施例中,非加壳文件的检测方式可以概括为:分别通过三种检测模型得到三个检测结果,然后再综合三个检测结果获得最终的检测结果。其中,步骤140为基于第一种检测模型的检测过程,步骤150为基于第二种检测模型的检测过程,步骤160为基于第三种检测模型的检测过程。
在一些实施例中,步骤140-步骤160可以是同步的检测过程。在另一些实施例中,步骤140-步骤160也可以按照顺序执行。本申请对三个步骤的具体执行顺序不作限定。接下来分别对这三个检测过程进行介绍。
在步骤140中,先从ELF文件中提取静态特征,然后根据静态特征和预先训练好的第一检测模型确定第一检测结果。
为了便于理解,接下来先对第一检测模型的训练过程进行介绍。
作为一种可选的实施方式,第一检测模型的训练过程包括:获取训练数据集;训练数据集中包括正常样本和恶意样本,正常样本和恶意样本均为未加壳的ELF文件。对正常样本和恶意样本中的静态特征分别进行提取,为提取出的特征设置标签。例如,正常样本对应的静态特征的标签可以是0,代表正常;恶意样本对应的静态特征的标签可以是1,代表恶意。然后再将设置有标签的训练数据集输入到初始的第一检测模型中进行训练,获得训练好的第一检测模型。
在上述训练过程中,恶意样本的来源可以是:virusshare.com网站;正常样本的来源可以是:linux系统或者网上搜集。若采集到的正常样本数量较少,可以通过上采样或者下采样的方式(样本的增量方式,为成熟技术)增加样本数据量。
作为一种可选的实施方式,静态特征包括:header特征、section特征、symbols特征、dynamic特征、table_size特征、relocation_section特征。
header特征用于描述有关ELF文件的版本、操作系统类型以及各个组成部分的情况。作为一种可选的实施方式,header特征包括:ELF Header、Magic、EI_CLASS、Data、Version、OS/ABI、ABI Version、Type、Machine、e_version、Entry point address、Startof program headers、bytes into file、Flags、Size of this header、Size of programheaders、Number of program headers、Size of section headers、Number of sectionheaders、Section header string table index等字段特征。
section_headers特征用于描述数据的一些程序变量在内存中的位置偏移信息。作为一种可选的实施方式,section_headers特征包括:dynamic_tags、symbol_tables、notes、relocations、version_info、arch_specific、hex_dump、string_dump、debug_dump等字段特征。
symbols_table特征,用于描述程序实现或使用的所有全局变量和函数。通常来说,如果程序引用一个自身代码,则称之为未定义符号,这类引用必须在静态链接期间用其他目标模块或库解决,或在加载时通过动态链接解决。
作为一种可选的实施方式,symbols_table特征包括:STB_LOCAL、dynamic_s_c、STT_NOTYPE_STB_GLOBAL、STT_OBJECT_STB_WEAK、STB_GLOBAL、STB_WEAK、STT_NOTYPE_STB_LOCAL、STT_FUNC、STT_FUNC_STB_GLOBAL、STT_OBJECT_STB_GLOBAL、STT_NOTYPE_STB_WEAK、STT_NOTYPE、STT_OBJECT、STT_FUNC_STB_WEAK、STT_FUNC_STB_LOCAL、STT_OBJECT_STB_LOCAL、s_STB_LOCAL、symbol_tab、s_STT_NOTYPE_STB_GLOBAL、s_STT_OBJECT_STB_WEAK、s_STB_GLOBAL、s_STB_WEAK、s_STT_NOTYPE_STB_LOCAL、s_STT_FUNC、s_STT_FUNC_STB_GLOBAL、s_STT_OBJECT_STB_GLOBAL、s_STT_NOTYPE_STB_WEAK、s_STT_NOTYPE、s_STT_OBJECT、s_STT_FUNC_STB_WEAK、s_STT_FUNC_STB_LOCAL、s_STT_OBJECT_STB_LOCAL、s_STT_OBJECT_STB_LOCAL、s_STT_SECTION_STB_LOCAL、s_STT_SECTION_STB_GLOBAL等字段特征。
dynamic_section特征,用于表征内存中执行的程序,以及各段在虚拟地址空间和物理地址空间中的大小、位置、标志、访问授权和对齐方面的信息。作为一种可选的实施方式,dynamic_section特征包括:DYNRELAENT、DYNRPATH、DYNFINI、DYNVERNEEDNUM、DYNINIT_ARRAY、DYNSTRSZ、DYNSTRTAB、DYNRELENT、DYN、DYNSYMTAB、DYNFINI_ARRAYSZ、DYNNEEDED、DYNSYMENT、DYNINIT、DYNRELSZ、DYNINIT_ARRAYSZ、DYNVERNEED、DYNRELASZ、DYNREL、DYNRELA、DYNFINI_ARRAY、DYNHASH、DYNJMPREL、DYNDEBUG、DYNPLTGOT、DYNNULL、DYNPLTRELSZ、DYNPLTREL、VERSYM、DYNCOUNT等字段特征。
relocation_section特征,用于表征静态加载库的一些信息。作为一种可选的实施方式,relocation_section特征包括:R_386_NONE、R_386_32、R_386_PC32、R_386_GOT32、R_386_PLT32、R_386_COPY、R_386_GLOB_DAT、R_386_JUMP_SLOT、R_386_RELATIVE、R_386_GOTOFF、R_386_GOTPC、R_386_32PLT、R_386_16、R_386_PC16、R_386_8、R_386_PC8、R_386_SIZE32等字段特征。
除了上述的静态特征,还可以包括:got_size特征:GOT_SIZE,以及hash_table_size特征:HASH_SIZE。
在本申请实施例中,通过上述的静态特征,实现第一检测结果的有效且准确的确定。
上述的静态特征的提取可以通过python的ELF Miner模块包实现。
在针对正常样本和异常样本分别提取出上述静态特征之后,分别将正常样本和异常样本的各个静态特征转换为特征向量,然后将特征向量进行合并,再为合并的特征向量设置样本标签。
作为一种可选的实施方式,第一检测模型为xgboost,当然,也可以是其他的模型,在此不作限定。如果采用xgboost模型,则训练数据集无需进行归一化处理;如果采用其他的模型,需要进行归一化处理。
在进行模型训练之前,可以预留部分的样本作为测试集,以便于后续对训练好的第一检测模型进行测试。例如:将20%的样本作为测试集,将80%的样本作为训练集。
对于xgboost模型来说,还可以通过gridsearch来寻找模型的最优参数,以实现模型的调优。
通过测试,对xgboost模型进行训练,然后对训练好的模型进行测试,模型的准确率可达到0.9983。
在完成模型的训练、调优、测试之后,可将第一检测模型进行保存,以便于后续检测的时候进行应用。
结合前述第一检测模型的训练过程的介绍,在步骤140中,可按照前述训练数据集的静态特征提取方式,从ELF文件中提取出静态特征,然后将静态特征输入到训练好的第一检测模型中,第一检测模型可输出第一检测结果。
作为一种可选的实施方式,第一检测结果为ELF文件为恶意文件的概率,即可疑概率。
在步骤150中,将ELF文件转换为图片,根据图片和预先训练好的第二检测模型确定第二检测结果。
为了便于理解,接下来先对第二检测模型的训练过程进行介绍。
作为一种可选的实施方式,第二检测模型的训练过程包括:获取训练数据集;训练数据集中包括正常样本和恶意样本,正常样本和恶意样本的文件类型不限,可以是加壳文件,也可以是未加壳文件。针对训练数据集中的正常样本和恶意样本,分别将其转换为图片。然后将转换为图片的训练数据集输入到初始的第二检测模型中进行训练,以获得训练好的第二检测模型。
其中,正常样本和恶意样本的获取方式可以参照前述实施例,区别是此处获取的样本无需限定样本的文件类型。
此外,训练数据集同样可以划分为训练集和测试集,测试集用于后续测试训练好的模型的精度。
文件转换为图片的实施方式,可参照本领域成熟的转换技术。例如:先将文件转换为二进制流的形式,其中,1byte转换为一个像素点,得到二维数组;然后利用python中的scipy模块把二维数组转换为对应的图片。
作为一种可选的实施方式,将ELF文件转换为图片时,根据预设的图片限制条件将ELF文件转换为图片,该图片限制条件用于限定输入第二检测模型中的图片的大小。
在这种实施方式中,结合第二检测模型的模型特征,需要将图片大小限制为第二检测模型所需求的图片大小。
作为一种可选的实施方式,第二检测模型为resnet18模型,该模型的结构可以如图2所示。
针对resnet18模型,对应的图片转换条件可以是:在转化为图片时需要规定图片的大小,根据卷积神经网络模型一般设置图片宽度为256pixel,所以图片宽度设置为256pixel,读取文件的字节数必须为256pixel的整数倍。由于文件大小差别较大,而图片的宽度是给定的256pixel,就会造成图片的长度大小不一,而在训练模型时如果图片高超过349525pixel,模型训练会出现报错,所以图片高最大像素不超过349525。如果读文件bytes长度小于等于256*349525,则转化为一个二维byte数组(即一个图片),其中第一维长度为256。如果转化后的字节数大于256*349525,则取256*349525整数倍为长度,转化为多个二维byte数组(即多张图片),其中维度为256*349525。
在本申请实施例中,图2的模型可以使用python通过tensorflow+keras构建,其中优化器(optimizer)选用tf.keras.optimizers.Adadelta,损失函数(loss)选用tf.keras.losses.SparseCategoricalCrossentropy,epoch选择50。图中k代表kernel size,s代表stride,p代表padding。
将转换为图片的训练数据集输入到第二检测模型中,进行训练,并对模型进行调优。以及利用测试集训练好的模型进行精度检测,获得模型准确度。
通过实验证明,基于resNet18模型按照上述方式进行训练,最终训练好的resNet18模型的精度可以达到98.9%-99.9%。
在完成第二检测模型的训练之后,将训练好的第二检测模型进行保存。进而,在步骤150中,可以直接应用训练好的第二检测模型。
在步骤150中,将ELF文件转换为图片的实施方式,可以参照训练数据集的处理方式,在此不再重复介绍。
将转换后的图片输入到训练好的第二检测模型中,第二检测模型变化输出第二检测结果。作为一种可选的实施方式,第二检测结果为ELF文件为恶意文件的概率。
在步骤160中,获得ELF文件对应的沙箱报告,从沙箱报告中提取出沙箱特征,根据沙箱特征和预先训练好的第三检测模型确定第三检测结果。
为了便于理解,接下来先对第三检测模型的训练过程进行介绍。
作为一种可选的实施方式,第三检测模型的训练过程包括:获取训练数据集,训练数据集包括正常样本和异常样本,正常样本和异常样本的文件类型不限。将训练数据集输入到沙箱中运行,获得沙箱输出的训练数据集对应的沙箱报告。然后针对每份样本对应的沙箱报告,从中提取沙箱特征。为提取出的沙箱特征设置标签,例如:正常样本对应的沙箱特征的标签为0,代表正常样本;异常样本对应的沙箱特征的标签为1,代表恶意样本。然后,将设置好标签的沙箱特征输入到初始的第三检测模型中,进行训练,获得训练好的第三检测模型。
在这种实施方式中,训练数据集的获取过程参照前述实施例,在此不再重复介绍。
沙箱可以是cuckoo ubuntu环境沙箱;对应的,在提取沙箱特征时,可以通过elasticsearch实现。在沙箱报告中,包括:api、tid、return_value、index等信息。基于这些信息,每个样本请求api顺序编号,添加对应的顺序编号。以及,还需要每个样本的MD5,作为样本的唯一标志。
在进行特征提取时,具体的操作包括:统计每个样本调用API总次数;统计每个样本调用API去重后的次数;统计每个样本tid的总次数/去重后的次数/最小值/最大值/中位数/方差;统计每个样本tid的0.2/0.4/0.6/0.8分位数;计算每个样本tid的0.975分位减0.0125分位,可以理解为去除极值后的范围;统计每个样本index的最大值;统计每个样本中每个API的tid的个数和去重后的数量。
因此,对应的,沙箱特征可以包括:调用API总次数、调用API去重后的次数、tid的总次数、tid去重后的次数、tid最小值、tid最大值、tid中位数、tid方差、tid的分位数、tid去除极值后的范围、index的最大值、每个API的tid的个数和去重后的数量。
针对每个样本提取出上述的沙箱特征之后,可以将沙箱特征转换为特征向量,然后进行特征向量的合并,以获得最终的沙箱特征。
在将沙箱特征输入到第三检测模型之前,还可以进行归一化处理。
作为一种可选的实施方式,第三检测模型为随机森林模型。在使用随机森林模型进行训练时,可以利用gridsearch来寻找模型的最优参数,以实现模型的调优。
同样的,还可以预留一部分样本集作为测试数据集,用于后续的模型精度测试。通过实验,最终训练好的第三检测模型的精度可以达到0.9936。
最终训练好的模型,进行保存,在需要应用时,进行调用即可。
进而,在步骤160中,参照前述的训练数据集的处理方式,对ELF文件进行处理,获得沙箱报告,以及提取出沙箱特征。然后将沙箱特征进行处理,处理好的特征输入到第三检测模型中,第三检测模型便可以输出第三检测结果。其中,第三检测结果可以为ELF文件为恶意文件的概率,即可疑概率。
基于前述实施例中分别获得的第一检测结果、第二检测结果和第三检测结果,可以获得最终的检测结果。在步骤160中,根据第一检测结果、第二检测结果、第三检测结果和预先训练好的第四检测模型获得最终的检测结果。
预先训练好的第四检测模型可以理解为结果的融合模型,作为一种可选的实施方式,预先训练好的第四检测模型为逻辑回归模型,在逻辑回归模型的逻辑回归算法中,第一检测模型、第二检测模型和第三检测模型分别对应不同的模型权重值。
在逻辑回归算法中,除了不同的模型权重值,还可以设置截距值,可以理解为逻辑回归算法的一个参数。
逻辑回归的本质是把一些因素通过线性关系组合起来,把最终转化为概率(0~1之间),并且使曲线比较平滑,因为实际情况下好多情况的概率分布比较陡峭。
作为一种可选的实施方式,沙箱随机森林模型的权重值可以为7.8888,resNet18模型的权重值可以为4.1112,静态模型的权重值可以为6.7058,截距可以为-6.1057。
上述的取值仅作为一种举例,在其他实施例中,还可以根据实际的应用场景调整各个权重值。
此外,逻辑回归模型的训练方法,可参照本领域成熟的技术,在此不作详细介绍。经过实验验证,第四检测模型的精度可达到0.99996。
在本申请实施例中,通过逻辑回归模型的逻辑回归算法中设置的不同的模型权重值,实现三种检测结果的有效且合理的融合,提高最终的检测结果的准确性。
进而,在步骤170中,将第一检测结果、第二检测结果和第三检测结果输入到训练好的第四检测模型中,第四检测模型便可输出最终融合后的检测结果,例如:融合后的可疑概率。该融合后的检测结果用于表征ELF文件是否为恶意文件。
基于最终的检测结果,可实现ELF文件是否为恶意文件的准确判断。
前述的实施方式,针对ELF文件是未加壳文件的情况,当ELF文件是加壳文件的情况,该检测方法包括:确定ELF文件为加壳文件;将ELF文件转换为图片,根据图片和预先训练好的第二检测模型确定第二检测结果;获取ELF文件对应的沙箱报告,从沙箱报告中提取出沙箱特征,根据沙箱特征和预先训练好的第三检测模型确定第三检测结果;根据第二检测结果和第三检测结果确定最终的检测结果;最终的检测结果用于表征ELF文件是否为恶意文件。
在这种实施方式中,分别按照步骤150和步骤160的实施方式获得两种检测结果,然后再结合两种检测结果确定最终的检测结果。
作为一种可选的实施方式,最终的检测结果为两种检测结果的平均值,即,可疑概率的平均值。
在本申请实施例中,若ELF文件为加壳文件,则通过ELF文件转换的图片和预先训练好的第二检测模型确定第二检测结果,以及通过沙箱特征和预先训练好的第三检测模型确定第三检测结果,最后再结合两种检测结果,实现最终的检测结果的有效且准确的确定。
不管采用哪种实施方式确定最终的检测结果,基于最终的检测结果,可以结合预设的恶意文件判断条件确定ELF文件是否为恶意文件。例如:若最终的可疑分数大于4,则确定ELF文件为恶意文件;否则,确定ELF文件是正常文件。
进一步的,若确定ELF文件是正常文件,则继续ELF文件的正常处理流程,并输出检测结果。
若确定ELF文件是恶意文件,一方面输出检测结果,以提醒用户对该恶意文件进行处理。另一方面,还可以从该恶意文件中提取出恶意特征,然后加入到第三方检测工具的特征库中,以实现第三方检测工具的库更新,进而提高第三方检测工具的检测精度。
除了上述应用方式,在一些实施例中,还可以结合实际的应用场景对上述的检测结果进行更多的应用,或者基于检测结果对恶意ELF文件作更多的处理,在此不进行一一介绍。
基于同一发明构思,请参照图3,本申请实施例中还提供一种ELF文件的检测装置300,包括:获取模块310和处理模块320。
获取模块310用于:获取待检测的ELF文件;处理模块320用于:确定第三方检测工具判定所述ELF文件为正常文件;确定所述ELF文件为未加壳文件;从所述ELF文件中提取出静态特征,根据所述静态特征和预先训练好的第一检测模型确定第一检测结果;将所述ELF文件转换为图片,根据所述图片和预先训练好的第二检测模型确定第二检测结果;获取所述ELF文件对应的沙箱报告,从所述沙箱报告中提取出沙箱特征,根据所述沙箱特征和预先训练好的第三检测模型确定第三检测结果;根据所述第一检测结果、所述第二检测结果、所述第三检测结果和预先训练好的第四检测模型获得最终的检测结果;所述最终的检测结果用于表征所述ELF文件是否为恶意文件。
在本申请实施例中,处理模块320具体用于:根据预设的图片限制条件将所述ELF文件转换为图片;所述图片限制条件用于限定输入所述预先训练好的第二检测模型中的图片的大小。
在本申请实施例中,处理模块320还用于:确定所述ELF文件为加壳文件;将所述ELF文件转换为图片,根据所述图片和预先训练好的第二检测模型确定第二检测结果;获取所述ELF文件对应的沙箱报告,从所述沙箱报告中提取出沙箱特征,根据所述沙箱特征和预先训练好的第三检测模型确定第三检测结果;根据所述第二检测结果和所述第三检测结果确定最终的检测结果;所述最终的检测结果用于表征所述ELF文件是否为恶意文件。
ELF文件的检测装置300与前述的ELF文件的检测方法对应,各个功能模块与各个方法步骤对应,各个功能模块的实施方式可参照各个步骤的实施方式,为了说明书的简洁,在此不再重复介绍。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时,执行前述实施例中所述的ELF文件的检测方法。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种ELF文件的检测方法,其特征在于,包括:
获取待检测的ELF文件;
确定第三方检测工具判定所述ELF文件为正常文件;
确定所述ELF文件为未加壳文件;
从所述ELF文件中提取出静态特征,根据所述静态特征和预先训练好的第一检测模型确定第一检测结果;
将所述ELF文件转换为图片,根据所述图片和预先训练好的第二检测模型确定第二检测结果;
获取所述ELF文件对应的沙箱报告,从所述沙箱报告中提取出沙箱特征,根据所述沙箱特征和预先训练好的第三检测模型确定第三检测结果;
根据所述第一检测结果、所述第二检测结果、所述第三检测结果和预先训练好的第四检测模型获得最终的检测结果;所述最终的检测结果用于表征所述ELF文件是否为恶意文件。
2.根据权利要求1所述的检测方法,其特征在于,所述第三方检测工具包括:clamav、LMD、virustotal、fuzzy hash中的至少一个检测工具。
3.根据权利要求1所述的检测方法,其特征在于,所述静态特征包括:
header特征、section特征、symbols特征、dynamic特征、table_size特征、relocation_section特征。
4.根据权利要求1所述的检测方法,其特征在于,所述将ELF文件转换为图片,包括:
根据预设的图片限制条件将所述ELF文件转换为图片;所述图片限制条件用于限定输入所述预先训练好的第二检测模型中的图片的大小。
5.根据权利要求1所述的检测方法,其特征在于,所述沙箱特征包括:
调用API总次数、调用API去重后的次数、tid的总次数、tid去重后的次数、tid最小值、tid最大值、tid中位数、tid方差、tid的分位数、tid去除极值后的范围、index的最大值、每个API的tid的个数和去重后的数量。
6.根据权利要求1所述的检测方法,其特征在于,所述预先训练好的第四检测模型为逻辑回归模型,在所述逻辑回归模型的逻辑回归算法中,所述第一检测模型、所述第二检测模型和所述第三检测模型分别对应不同的模型权重值。
7.根据权利要求1所述的检测方法,其特征在于,所述检测方法还包括:
确定所述ELF文件为加壳文件;
将所述ELF文件转换为图片,根据所述图片和预先训练好的第二检测模型确定第二检测结果;
获取所述ELF文件对应的沙箱报告,从所述沙箱报告中提取出沙箱特征,根据所述沙箱特征和预先训练好的第三检测模型确定第三检测结果;
根据所述第二检测结果和所述第三检测结果确定最终的检测结果;所述最终的检测结果用于表征所述ELF文件是否为恶意文件。
8.根据权利要求1所述的检测方法,其特征在于,所述第一检测模型为:xgboost模型,和/或所述第二检测模型为resnet18模型,和/或所述第三检测模型为随机森林模型。
9.一种ELF文件的检测装置,其特征在于,包括:
获取模块,用于获取待检测的ELF文件;
处理模块,用于:
确定第三方检测工具判定所述ELF文件为正常文件;
确定所述ELF文件为未加壳文件;
从所述ELF文件中提取出静态特征,根据所述静态特征和预先训练好的第一检测模型确定第一检测结果;
将所述ELF文件转换为图片,根据所述图片和预先训练好的第二检测模型确定第二检测结果;
获取所述ELF文件对应的沙箱报告,从所述沙箱报告中提取出沙箱特征,根据所述沙箱特征和预先训练好的第三检测模型确定第三检测结果;
根据所述第一检测结果、所述第二检测结果、所述第三检测结果和预先训练好的第四检测模型获得最终的检测结果;所述最终的检测结果用于表征所述ELF文件是否为恶意文件。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时,执行如权利要求1-8任一项所述的ELF文件的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210086630.XA CN114510717A (zh) | 2022-01-25 | 2022-01-25 | 一种elf文件的检测方法、装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210086630.XA CN114510717A (zh) | 2022-01-25 | 2022-01-25 | 一种elf文件的检测方法、装置、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114510717A true CN114510717A (zh) | 2022-05-17 |
Family
ID=81550029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210086630.XA Pending CN114510717A (zh) | 2022-01-25 | 2022-01-25 | 一种elf文件的检测方法、装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114510717A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115102758A (zh) * | 2022-06-21 | 2022-09-23 | 新余学院 | 异常网络流量的检测方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130198119A1 (en) * | 2012-01-09 | 2013-08-01 | DecisionQ Corporation | Application of machine learned bayesian networks to detection of anomalies in complex systems |
CN110096878A (zh) * | 2019-04-26 | 2019-08-06 | 武汉智美互联科技有限公司 | 一种恶意软件的检测方法 |
CN110704840A (zh) * | 2019-09-10 | 2020-01-17 | 中国人民公安大学 | 一种基于卷积神经网络cnn的恶意软件检测方法 |
CN111460446A (zh) * | 2020-03-06 | 2020-07-28 | 奇安信科技集团股份有限公司 | 基于模型的恶意文件检测方法及装置 |
CN111723371A (zh) * | 2020-06-22 | 2020-09-29 | 上海斗象信息科技有限公司 | 构建恶意文件的检测模型以及检测恶意文件的方法 |
CN112685737A (zh) * | 2020-12-24 | 2021-04-20 | 恒安嘉新(北京)科技股份公司 | 一种app的检测方法、装置、设备及存储介质 |
-
2022
- 2022-01-25 CN CN202210086630.XA patent/CN114510717A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130198119A1 (en) * | 2012-01-09 | 2013-08-01 | DecisionQ Corporation | Application of machine learned bayesian networks to detection of anomalies in complex systems |
CN110096878A (zh) * | 2019-04-26 | 2019-08-06 | 武汉智美互联科技有限公司 | 一种恶意软件的检测方法 |
CN110704840A (zh) * | 2019-09-10 | 2020-01-17 | 中国人民公安大学 | 一种基于卷积神经网络cnn的恶意软件检测方法 |
CN111460446A (zh) * | 2020-03-06 | 2020-07-28 | 奇安信科技集团股份有限公司 | 基于模型的恶意文件检测方法及装置 |
CN111723371A (zh) * | 2020-06-22 | 2020-09-29 | 上海斗象信息科技有限公司 | 构建恶意文件的检测模型以及检测恶意文件的方法 |
CN112685737A (zh) * | 2020-12-24 | 2021-04-20 | 恒安嘉新(北京)科技股份公司 | 一种app的检测方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
孙本阳等: "一种改进的恶意PDF文档静态检测方案", 《计算机应用与软件》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115102758A (zh) * | 2022-06-21 | 2022-09-23 | 新余学院 | 异常网络流量的检测方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109359439B (zh) | 软件检测方法、装置、设备及存储介质 | |
US11418534B2 (en) | Threat analysis system and threat analysis method | |
CN113901474B (zh) | 一种基于函数级代码相似性的漏洞检测方法 | |
US20240054210A1 (en) | Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program | |
CN111723371A (zh) | 构建恶意文件的检测模型以及检测恶意文件的方法 | |
CN111416818A (zh) | 网站的安全防护方法、装置和服务器 | |
US11550920B2 (en) | Determination apparatus, determination method, and determination program | |
CN110830500B (zh) | 网络攻击追踪方法、装置、电子设备及可读存储介质 | |
CN113704328A (zh) | 基于人工智能的用户行为大数据挖掘方法及系统 | |
US9600644B2 (en) | Method, a computer program and apparatus for analyzing symbols in a computer | |
CN112817877B (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
CN114510717A (zh) | 一种elf文件的检测方法、装置、存储介质 | |
CN114201756A (zh) | 一种智能合约代码片段的漏洞检测方法和相关装置 | |
CN114048227A (zh) | Sql语句异常检测方法、装置、设备及存储介质 | |
US11563717B2 (en) | Generation method, generation device, and recording medium | |
WO2023072002A1 (zh) | 开源组件包的安全检测方法及装置 | |
US20230252146A1 (en) | Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program | |
US20230252144A1 (en) | Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program | |
CN117081801A (zh) | 网站的内容管理系统的指纹识别方法、装置及介质 | |
CN111368128A (zh) | 目标图片的识别方法、装置和计算机可读存储介质 | |
US20230048076A1 (en) | Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program | |
KR102411383B1 (ko) | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 | |
CN113158640A (zh) | 代码相似度的检测方法及装置、存储介质、电子设备 | |
CN112597498A (zh) | 一种webshell的检测方法、系统、装置及可读存储介质 | |
CN114268480B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220517 |
|
RJ01 | Rejection of invention patent application after publication |