CN111324890B - 可移植的执行体文件的处理方法、检测方法及装置 - Google Patents
可移植的执行体文件的处理方法、检测方法及装置 Download PDFInfo
- Publication number
- CN111324890B CN111324890B CN201811533679.5A CN201811533679A CN111324890B CN 111324890 B CN111324890 B CN 111324890B CN 201811533679 A CN201811533679 A CN 201811533679A CN 111324890 B CN111324890 B CN 111324890B
- Authority
- CN
- China
- Prior art keywords
- file
- files
- normal
- gram
- unknown
- 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
Links
- 238000001514 detection method Methods 0.000 title abstract description 30
- 238000003672 processing method Methods 0.000 title abstract description 10
- 238000012545 processing Methods 0.000 claims description 63
- 238000000034 method Methods 0.000 claims description 52
- 238000013507 mapping Methods 0.000 claims description 7
- 230000003068 static effect Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 9
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000009194 climbing Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 208000010378 Pulmonary Embolism Diseases 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Probability & Statistics with Applications (AREA)
- Storage Device Security (AREA)
Abstract
可移植的执行体文件的处理方法、检测方法及装置。本申请实施例公开了一种PE文件处理方法、PE文件检测方法及装置,提高了恶意PE文件的检测命中率。PE文件检测方法包括:获取未知PE文件;对未知PE文件的代码进行反汇编得到第二指令序列;依次提取第二指令序列中每个指令的操作符生成第二操作符序列;从第二操作符序列中提取至少一个N‑gram特征;针对每个N‑gram特征从N‑gram特征列表中查询对应的命中次数,生成未知PE文件的命中次数列表;获取多个目标PE文件的命中次数列表;根据未知PE文件的命中次数列表和每个目标PE文件的命中次数列表对未知PE文件和多个目标PE文件进行聚类;若未知PE文件单独成为一个类别,则确认未知PE文件为恶意PE文件。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种可移植的执行体文件的处理方法及装置、一种可移植的执行体文件的检测方法及装置。
背景技术
可移植的执行体(portable executable,PE)文件是Windows系统中主要的可执行文件类型。恶意PE文件是指包括恶意代码的PE文件,通常由攻击者构造。攻击者期望在受害者系统中执行恶意PE文件,以达到诸如窃取数据、控制受害者系统的目的。所以,对未知PE文件进行检测从而识别出恶意PE文件对于计算机的安全非常重要。其中,未知PE文件是指所属类别为正常PE文件或恶意PE文件尚未确定的PE文件,正常PE文件为不包括恶意代码的PE文件。
目前常用静态分析的方式对未知PE文件的代码进行检测。所谓静态分析是指预先获取大量的恶意PE文件代码的静态特征,形成预设静态特征集。然后提取未知PE文件代码的静态特征,并判断未知PE文件代码的静态特征是否存在于预设静态特征集中,若是,则认为未知PE文件为恶意PE文件。
代码混淆是攻击者逃避文件检测的常用手段。一旦攻击者利用代码混淆技术改变了PE文件代码的形态,PE文件代码的静态特征就会发生变化,这样就无法根据静态特征集识别出未知PE文件是否为恶意PE文件。而代码混淆技术改变PE文件代码的形态的方式花样多端,所以通过提取PE文件代码静态特征检测恶意PE文件的方式会出现漏报率攀升、检测命中率较低的现象。
发明内容
本申请实施例提供了一种可移植的执行体文件的处理方法及装置,和一种可移植的执行体文件的检测方法及装置,用于提高恶意PE文件的检测命中率,降低恶意PE文件的漏报率。
第一方面,本申请实施例提供了一种可移植的执行体文件的处理方法,该方法可以由安全设备执行。方法包括如下步骤:首先,预先获取多个正常PE文件,正常PE文件为不包括恶意代码的PE文件。PE文件的类型可以是.dll、.exe、.sys、.ocx等,本申请实施例不做具体限定。其次,从多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行以下处理,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,N-gram特征集包括多个正常PE文件中的每个正常PE文件的N-gram特征:对选择出的正常PE文件的代码进行反汇编,从而得到第一指令序列,第一指令序列中的指令包括操作符和操作数;依次提取第一指令序列中每个指令的操作符,从而生成第一操作符序列;从第一操作符序列中提取至少一个N-gram特征,N-gram特征是第一操作符序列中连续出现的N个操作符,N为大于1的整数。最后,针对N-gram特征集中的每个N-gram特征,计算对应的在多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
本申请实施例通过根据多个正常PE文件获取N-gram特征集,并得到保存每个N-gram特征以及对应的命中次数的N-gram特征列表,以便于后续根据N-gram特征列表对未知PE文件是否为恶意PE文件进行检测。而在后续对对未知PE文件是否为恶意PE文件进行检测时,根据对未知PE文件的N-gram特征在N-gram特征列表中对应的命中次数,和多个目标PE文件的N-gram特征在N-gram特征列表中对应的命中次数,对未知PE文件和多个目标PE文件进行聚类。其中,目标PE文件为不包括恶意代码的PE文件。如果未知PE文件为单独的一类,即未知PE文件与多个目标PE文件不属于一类,则说明未知PE文件为恶意PE文件。也就是说,若未知PE文件为恶意PE文件,那么无论未知PE文件的代码在形态上如何被改变,其N-gram特征都与目标PE文件代码的N-gram特征不同,无法与目标PE文件归为一类。可见,相对于传统方式,本申请实施例能够提高恶意PE文件的检测命中率,降低漏报率。
在实际应用中,攻击者会将恶意代码置入PE文件的入口点(entry point,EP)。入口点是PE文件中用于标识可执行代码的起始点,当PE文件被加载时,入口点代码首先被执行。所以,为了提高处理效率,可选的,可以从多个正常的PE文件的每个正常的PE文件中提取入口点代码,并根据正常PE文件的入口点代码而不是整个正常PE文件执行上述步骤。具体的,选择出的正常PE文件的代码包括选择出的正常PE文件的入口点代码。对选择出的正常PE文件的代码进行反汇编包括:对选择出的正常PE文件的入口点代码进行反汇编。
第二方面,本申请实施例提供了一种可移植的执行体文件的检测方法,该方法可以应用于安全设备。该方法可以包括如下步骤:首先,获取未知可移植的执行体文件PE文件,未知PE文件是指所属类别为正常PE文件或恶意PE文件尚未确定的PE文件,正常PE文件是指不包括恶意代码的PE文件,恶意PE文件是指包括恶意代码的PE文件。其次,对未知PE文件的代码进行反汇编,得到第二指令序列,第二指令序列中的指令包括操作符和操作数。再次,依次提取第二指令序列中每个指令的操作符,从而生成第二操作符序列。接着,从第二操作符序列中提取至少一个N-gram特征,第二操作符序列的N-gram特征是第二操作符序列中连续出现的N个操作符,N为大于1的整数。针对从第二操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数,N-gram特征列表中存储N-gram特征和命中次数之间的映射关系。N-gram特征列表可以根据上文的可移植的执行体文件的处理方法得到,此处不再赘述。然后,生成未知PE文件的命中次数列表,未知PE文件的命中次数列表中包括从未知PE文件中提取到的每个N-gram特征以及对应查询到的命中次数。获取多个目标PE文件中每个目标PE文件的命中次数列表。目标PE文件为不包括恶意代码的PE文件,目标PE文件可以属于上文可移植的执行体文件的处理方法中提到的多个正常PE文件,也可以不属于该多个正常PE文件。每个目标PE文件的命中次数列表包括每个目标PE文件的N-gram特征以及从N-gram特征列表中查询到的对应的命中次数。最后,根据未知PE文件的命中次数列表和多个目标PE文件中每个目标PE文件的命中次数列表,对未知PE文件和多个目标PE文件进行聚类。在聚类结果中,若未知PE文件单独成为一个类别,则确认未知PE文件为恶意PE文件。
本申请实施例中,通过将未知PE文件与多个目标PE文件进行聚类,可以得到未知PE文件是否为恶意PE文件的检测结果。而在这个过程中,不管未知PE文件的代码的形态是否被攻击者改变,只要未知PE文件为恶意PE文件,它就无法与目标PE文件聚为一类,从而能够准确的识别出未知PE文件的类别,提高恶意PE文件的检测准确率,以及降低漏检率。
可选的,如果目标PE文件不属于上文提到的多个正常PE文件,那么可以通过如下步骤得到多个目标PE文件中每个目标PE文件的命中次数列表。具体的,从多个目标PE文件中选择出一个目标PE文件,对选择出的目标PE文件执行以下处理,得到选择出的目标PE文件的命中次数列表,并以此类推,从而得到多个目标PE文件中每个目标PE文件的命中次数列表:对选择出的目标PE文件的代码进行反汇编,得到第三指令序列,第三指令序列中的指令包括操作符和操作数;依次提取第三指令序列中每个指令的操作符,从而生成第三操作符序列;从第三操作符序列中提取至少一个N-gram特征,第三操作符序列的N-gram特征是第三操作符序列中连续出现的N个操作符,N为大于1的整数;针对从第三操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数;生成选择出的目标PE文件的命中次数列表,选择出的目标PE文件的命中次数列表中包括从选择出的目标PE文件中提取到的每个N-gram特征以及对应查询到的命中次数。
PE文件是由编译器编译而成,常见的编译器有Visual C++、Turbo C等。不同类型或不同版本的编译器编译出的PE文件,得到的指令序列的形态会存在一定的差别。所以为了提高未知PE文件的检测准确率,可以选择对应的编译器与未知PE文件的编译器相同的正常PE文件作为目标PE文件。编译器相同是指编译器的类型和/或版本相同。
如前文所提,攻击者可能会将恶意代码置入PE文件的入口点。所以,为了提高未知PE文件的检测效率,可以从未知PE文件中提取未知PE文件的入口点代码,并根据未知PE文件的入口点代码执行上述检测步骤。具体的,未知PE文件的代码可以包括未知PE文件的入口点代码。对未知PE文件的代码进行反汇编包括:对未知PE文件的入口点代码进行反汇编。
第三方面,本申请实施例提供了一种可移植的执行体文件的处理装置,装置包括:文件获取单元,用于预先获取多个正常可移植的执行体PE文件,正常PE文件为不包括恶意代码的PE文件;处理单元,用于从多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行以下处理,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,N-gram特征集包括多个正常PE文件中的每个正常PE文件的N-gram特征:对选择出的正常PE文件的代码进行反汇编,从而得到第一指令序列,第一指令序列中的指令包括操作符和操作数;依次提取第一指令序列中每个指令的操作符,从而生成第一操作符序列;从第一操作符序列中提取至少一个N-gram特征,N-gram特征是第一操作符序列中连续出现的N个操作符,N为大于1的整数;处理单元,还用于针对N-gram特征集中的每个N-gram特征,计算对应的在多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
可选的,选择出的正常PE文件的代码包括选择出的正常PE文件的入口点代码;
对选择出的正常PE文件的代码进行反汇编包括:对选择出的正常PE文件的入口点代码进行反汇编。
第四方面,本申请实施例提供了一种可移植的执行体文件的检测装置,装置包括:文件获取单元,用于获取未知可移植的执行体文件PE文件,未知PE文件是指所属类别为正常PE文件或恶意PE文件尚未确定的PE文件,正常PE文件是指不包括恶意代码的PE文件,恶意PE文件是指包括恶意代码的PE文件;处理单元,用于对未知PE文件的代码进行反汇编,得到第二指令序列,第二指令序列中的指令包括操作符和操作数;依次提取第二指令序列中每个指令的操作符,从而生成第二操作符序列;从第二操作符序列中提取至少一个N-gram特征,第二操作符序列的N-gram特征是第二操作符序列中连续出现的N个操作符,N为大于1的整数;针对从第二操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数,N-gram特征列表中存储N-gram特征和命中次数之间的映射关系;处理单元,还用于生成未知PE文件的命中次数列表,未知PE文件的命中次数列表中包括从未知PE文件中提取到的每个N-gram特征以及对应查询到的命中次数;列表获取单元,用于获取多个目标PE文件中每个目标PE文件的命中次数列表,目标PE文件为不包括恶意代码的PE文件,每个目标PE文件的命中次数列表包括每个目标PE文件的N-gram特征以及从N-gram特征列表中查询到的对应的命中次数:处理单元,还用于根据未知PE文件的命中次数列表和多个目标PE文件中每个目标PE文件的命中次数列表,对未知PE文件和多个目标PE文件进行聚类;在聚类结果中,若未知PE文件单独成为一个类别,则确认未知PE文件为恶意PE文件。
可选的,处理单元,还用于从多个目标PE文件中选择出一个目标PE文件,对选择出的目标PE文件执行以下处理,得到选择出的目标PE文件的命中次数列表,并以此类推,从而得到多个目标PE文件中每个目标PE文件的命中次数列表:对选择出的目标PE文件的代码进行反汇编,得到第三指令序列,第三指令序列中的指令包括操作符和操作数;依次提取第三指令序列中每个指令的操作符,从而生成第三操作符序列;从第三操作符序列中提取至少一个N-gram特征,第三操作符序列的N-gram特征是第三操作符序列中连续出现的N个操作符,N为大于1的整数;针对从第三操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数;处理单元,还用于生成选择出的目标PE文件的命中次数列表,选择出的目标PE文件的命中次数列表中包括从选择出的目标PE文件中提取到的每个N-gram特征以及对应查询到的命中次数。
可选的,N-gram特征列表是通过以下方式获得的:预先获取多个正常可移植的执行体PE文件,正常PE文件为不包括恶意代码的PE文件;从多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行以下处理,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,N-gram特征集包括多个正常PE文件中的每个正常PE文件的N-gram特征:对选择出的正常PE文件的代码进行反汇编,从而得到第一指令序列,第一指令序列中的指令包括操作符和操作数;依次提取第一指令序列中每个指令的操作符,从而生成第一操作符序列;从第一操作符序列中提取至少一个N-gram特征,N-gram特征是第一操作符序列中连续出现的N个操作符,N为大于1的整数;针对N-gram特征集中的每个N-gram特征,计算对应的在多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
可选的,目标PE文件属于多个正常PE文件。
可选的,目标PE文件对应的编译器与未知PE文件的编译器相同。
可选的,未知PE文件的代码包括未知PE文件的入口点代码;
对未知PE文件的代码进行反汇编包括:对未知PE文件的入口点代码进行反汇编。
附图说明
图1为本申请实施例提供的企业网网络架构示意图;
图2为本申请实施例提供的云端网络架构示意图;
图3为本申请实施例提供的一种可移植的执行体文件的处理方法的流程示意图;
图4为本申请实施例提供的一种可移植的执行体文件的检测方法的流程示意图;
图5为本申请实施例提供的根据聚类结果形成的二维特征分布图;
图6为本申请实施例提供的一种可移植的执行体文件的处理装置的结构框图;
图7为本申请实施例提供的一种可移植的执行体文件的检测装置的结构框图;
图8为本申请实施例提供的一种可移植的执行体文件的处理设备的硬件架构图;
图9为本申请实施例提供的一种可移植的执行体文件的检测设备的硬件架构图。
具体实施方式
传统的识别PE文件是否为恶意PE文件的方式为:预先提取大量的恶意PE文件代码的静态特征,形成预设静态特征集,并提取未知PE文件代码的静态特征,判断未知PE文件代码的静态特征是否存在于预设静态特征集中,如果是,则认为未知PE文件为恶意PE文件。由于静态特征依赖于代码的形态,在代码功能不改变的前提下,代码的形态一旦被改变,静态特征也会发生变化,所以这种方式往往会出现漏报率攀升、检测命中率较低的现象。
为了克服上述技术问题,本申请实施例提供了一种可移植的执行体文件的处理方法及装置、一种可移植的执行体文件的检测方法及装置,提高恶意PE文件的检测命中率。
本申请实施例提供的可移植的执行体文件处理方法及装置、可移植的执行体文件检测方法及装置可以例如应用于如图1和图2所示的应用场景。
图1为企业网网络架构示意图。在图1中,企业网网络架构包括安全设备101、以防火墙或安全网关为例的网络接入设备102、与网络接入设备102连接的交换机103以及与交换机连接的多个主机104。其中,安全设备101与网络接入设备102连接。安全设备101可以例如是入侵防御系统(intrusion prevention system,IPS)设备或统一威胁管理(unifiedthreat management,UTM)设备等。安全设备101用于根据多个正常PE文件生成N-gram特征列表,以及接收设备102中防火墙或安全网关发送的未知PE文件,或接收安装在内网主机104上的客户端软件发送的未知PE文件,并输出未知PE文件是否为恶意PE文件的检测结果。
图2为云端网络架构示意图。在图2中,云端网络架构可以包括位于核心网侧的安全设备201,以及接入网中的多个防火墙设备202。其中安全设备201中可以用于根据多个正常PE文件生成N-gram特征列表,以及接收来自部署了防火墙的设备202的未知PE文件,并输出未知PE文件是否为恶意PE文件的检测结果。
下面结合附图详细介绍本申请实施例提供的可移植的执行体文件的处理方法。该处理方法的执行主体可以为图1中的安全设备101或图2中的安全设备201。安全设备101和安全设备201的工作流程主要包括准备阶段和测试阶段。在准备阶段,安全设备101和安全设备201的输入为多个正常PE文件,输出为生成的N-gram特征列表。在测试阶段,安全设备101和安全设备201的输入为未知PE文件,输出为该未知PE文件是否为恶意PE文件的检测结果。在检测阶段,安全设备101和安全设备201根据生成的N-gram特征列表对未知PE文件进行检测。
参见图3,该图为本申请实施例提供的一种可移植的执行体文件的处理方法的流程示意图。可选地,该方法由图1或图2中的安全设备201执行。
本申请实施例提供的可移植的执行体文件处理的方法可以包括如下步骤:
S101:预先获取多个正常可移植的执行体PE文件。
在本申请实施例中正常PE文件为不包括恶意代码的PE文件。其中,PE文件可以包括PE文件头、块(section)、块表(section table)、调试信息等。PE文件的类型可以是.dll、.exe、.sys、.ocx等,本申请实施例不做具体限定。
S102:从多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行S1021-S1023,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,N-gram特征集包括多个正常PE文件中的每个正常PE文件的N-gram特征。
下面详细介绍S1021-S1023。
S1021:对选择出的正常PE文件的代码进行反汇编,从而得到第一指令序列,第一指令序列中的指令包括操作符和操作数。
反汇编是一种翻译过程,其目的是将文件代码按照特定的反汇编模式翻译成人类可读的指令,该指令为汇编指令。在具体实施过程中,可以采用一些现有反汇编工具软件实现反汇编,例如DEBUG、ID、IDA Pro、C32等等。反汇编模式通常有32位和64位。一条指令由两部分组成:操作符与操作数。其中,操作符表示指令,操作数为指令的对象。操作符是唯一的,而操作数可能有多个。
例如,假设选择出的正常PE文件的代码为16进制,该16进制代码为55 8B EC 83E4 F8 6A FF 68 17 D1 00 01。假设使用32位反汇编模式对该代码进行反汇编,可以得到如表1的指令。
表1
其中,push的含义是将数据压入堆栈。例如,操作符为push、操作数为ebp的指令表示的含义是:将ebp压入堆栈。mov的含义是将A赋值为B;例如,操作符为mov、操作数为ebp和esp的含义是将esp赋值为ebp,即将esp替换为ebp。and的含义是将A和B执行与操作。例如操作符为and、操作数为esp和0FFFFFFF8h的含义是将esp和0FFFFFFF8h执行与操作。
在本申请实施例中,按照顺序进行排列的指令为指令序列,其中指令的顺序与PE文件代码的执行顺序相一致。以表1为例,指令序列为表1中的指令按照从上到下的顺序形成的序列。
S1022:依次提取第一指令序列中每个指令的操作符,从而生成第一操作符序列。
在本申请实施例中,在得到第一指令序列之后,从第一指令序列中依次提取每个指令的操作符,以生成第一操作符序列。第一操作符序列中操作符的顺序与在第一指令序列中的顺序一致。
根据表1中的例子生成的第一操作符序列可以为:push、mov、and、push和push。
S1023:从第一操作符序列中提取至少一个N-gram特征。
N-gram是一种基于统计语言模型的算法,它的基本思想是将数据里面的内容按照单元进行大小为N的窗口滑动窗口操作,形成长度是N的单元片段序列,每个单元片段称为gram。
在本申请实施例中,N-gram特征是第一操作符序列中连续出现的N个操作符,N为大于1的整数。
以表1为例,假设N为3,那么根据第一操作符序列push、mov、and、push和push可以得到三个N-gram特征,它们分别为N-gram特征1、N-gram特征2和N-gram特征3。其中,N-gram特征1为push、mov和and;N-gram特征2为mov、and和push;N-gram特征3为and、push和push。
在S102执行完毕之后,可以执行S103。
S103:针对N-gram特征集中的每个N-gram特征,计算对应的在多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
在本申请实施例中,根据S102得到每个正常PE文件的N-gram特征,所有正常PE文件的N-gram特征可以形成N-gram特征集。
在得到N-gram特征集之后,可以计算N-gram特征集中每个N-gram特征在多个正常PE文件中的命中次数,并生成存储有每个N-gram特征以及对应的命中次数的N-gram特征列表。在本申请实施例中,“命中次数”是指在多个正常PE文件中出现的总次数。
以表1为例,假设根据上述N-gram特征1、N-gram特征2和N-gram特征3对应的命中次数可以形成如表2的N-gram特征列表。
表2
本申请实施例通过根据多个正常PE文件获取N-gram特征集,并得到保存每个N-gram特征以及对应的命中次数的N-gram特征列表,以便于后续根据N-gram特征列表对未知PE文件是否为恶意PE文件进行检测。而在后续对对未知PE文件是否为恶意PE文件进行检测时,根据对未知PE文件的N-gram特征在N-gram特征列表中对应的命中次数,和多个目标PE文件的N-gram特征在N-gram特征列表中对应的命中次数,对未知PE文件和多个目标PE文件进行聚类。其中,目标PE文件为不包括恶意代码的PE文件。如果未知PE文件为单独的一类,即未知PE文件与多个目标PE文件不属于一类,则说明未知PE文件为恶意PE文件。也就是说,若未知PE文件为恶意PE文件,那么无论未知PE文件的代码在形态上如何被改变,其N-gram特征都与目标PE文件代码的N-gram特征不同,无法与目标PE文件归为一类。可见,相对于传统方式,本申请实施例能够提高恶意PE文件的检测命中率,降低漏报率。
可选地,通常情况下,攻击者会将恶意代码置入PE文件的入口点。入口点是PE文件中用于标识可执行代码的起始点,当PE文件被加载时,入口点代码首先被执行。所以,如果将恶意代码置入入口点,则将大大提高恶意代码被执行的可能性。
所以,为了提高处理效率,可以从多个正常的PE文件的每个正常的PE文件中提取入口点代码,并根据正常PE文件的入口点代码而不是整个正常PE文件执行上述步骤。
具体的,在获取到多个正常PE文件之后,可以从多个正常PE文件的每个正常PE文件中提取对应的入口点代码。在提取正常PE文件的入口点代码时,可以从正常PE文件的文件头中提取入口点代码的地址,并根据入口点代码的地址提取正常PE文件的入口点代码。
然后,从多个正常PE文件的入口点代码中选择出一个正常PE文件的入口点代码,对选择出的正常PE文件的入口点代码执行以下处理,得到选择出的正常PE文件的入口点代码的N-gram特征。并以此类推,从而得到N-gram特征集。N-gram特征集包括多个正常PE文件中的每个正常PE文件的入口点代码的N-gram特征。对选择出的正常PE文件的入口点代码执行的处理包括:对选择出的正常PE文件的入口点代码进行反汇编,从而得到第一指令序列;依次提取第一指令序列中每个指令的操作符,从而生成第一操作符序列;从第一操作符序列中提取至少一个N-gram特征。最后,针对N-gram特征集中的每个N-gram特征,计算对应的在多个正常PE文件的入口点代码中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
参见图4,该图为本申请实施例提供的一种可移植的执行体文件的检测方法的流程示意图。可选地,该方法由图1或图2中的安全设备201执行。
本申请实施例提供的可移植的执行体文件的检测方法包括如下步骤:
S201:获取未知PE文件。
未知PE文件的含义请参见背景技术部分,此处不再赘述。
S202:对未知PE文件的代码进行反汇编,得到第二指令序列,第二指令序列中的指令包括操作符和操作数。
S203:依次提取第二指令序列中每个指令的操作符,从而生成第二操作符序列。
S204:从第二操作符序列中提取至少一个N-gram特征,第二操作符序列的N-gram特征是第二操作符序列中连续出现的N个操作符,N为大于1的整数。
由于S202-S204与S1021-S1023类似,所以请参考上文的相关描述,此处不再赘述。
S205:针对从第二操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数。
在本申请实施例中,N-gram特征列表中存储N-gram特征和命中次数之间的映射关系。N-gram特征列表可以根据上文的可移植的执行体文件的处理方法得到,此处不再赘述。
S206:生成未知PE文件的命中次数列表,未知PE文件的命中次数列表中包括从未知PE文件中提取到的每个N-gram特征以及对应查询到的命中次数。
在本申请实施例中,在提取到未知PE文件的至少一个N-gram特征之后,分别为每个N-gram特征从N-gram特征列表查找得到对应的命中次数,并生成未知PE文件的命中次数列表。
S207:获取多个目标PE文件中每个目标PE文件的命中次数列表。
在本申请实施例中,目标PE文件为不包括恶意代码的PE文件,即目标PE文件属于正常PE文件。多个目标PE文件可以包括上文中提到的多个正常PE文件中的一部分或全部,和/或,多个目标PE文件可以是除了上文提到的多个正常PE文件之外的其他正常PE文件,本申请实施例不做具体限定。
PE文件是由编译器编译而成,常见的编译器有Visual C++、Turbo C等。不同类型或不同版本的编译器编译出的PE文件,得到的指令序列的形态会存在一定的差别。所以为了提高未知PE文件的检测准确率,可以选择对应的编译器与未知PE文件的编译器相同的正常PE文件作为目标PE文件。编译器相同是指编译器的类型和/或版本相同。在选择的时候,可以是从上文提到的多个正常PE文件中进行选择,也可以从其他的正常PE文件中选择。换句话说,如果将目标PE文件视为第一集合,将上述用以生成N-gram特征列表的多个正常文件视为第二集合,可选地,第一集合是第二集合的子集。可选地,第一集合和第二集合是互不重合的集合,第一集合和第二集合中的文件是由相同类型的编译器编译而成。
多个目标PE文件中的每个目标PE文件均分别具有各自的命中次数列表,每个目标PE文件的命中次数列表中包括每个目标PE文件的N-gram特征以及从N-gram特征列表中查询到的对应的命中次数。
以表2为例,假设目标PE文件的其中一个N-gram特征为push、mov和and,经过查找N-gram特征列表,可以得到对应的命中次数48。
在本申请实施例中,多个目标PE文件中每个目标PE文件的命中次数列表可以通过如下步骤得到:从多个目标PE文件中选择出一个目标PE文件,对选择出的目标PE文件执行以下处理,得到选择出的目标PE文件的命中次数列表,并以此类推,从而得到多个目标PE文件中每个目标PE文件的命中次数列表。
首先,对选择出的目标PE文件的代码进行反汇编,得到第三指令序列,第三指令序列中的指令包括操作符和操作数。然后,依次提取第三指令序列中每个指令的操作符,从而生成第三操作符序列。接着从第三操作符序列中提取至少一个N-gram特征,第三操作符序列的N-gram特征是第三操作符序列中连续出现的N个操作符,N为大于1的整数。针对从第三操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数。最后,生成选择出的目标PE文件的命中次数列表,选择出的目标PE文件的命中次数列表中包括从选择出的目标PE文件中提取到的每个N-gram特征以及对应查询到的命中次数。
由于上述获取选择出的目标PE文件的命中次数列表的步骤与S202-S206类似,所以相关内容请参见上文,此处不再赘述。
S208:根据未知PE文件的命中次数列表和多个目标PE文件中每个目标PE文件的命中次数列表,对未知PE文件和多个目标PE文件进行聚类。
本申请实施例中,将未知PE文件的命中次数列表和多个目标PE文件中每个目标PE文件的命中次数列表作为聚类算法的输入。聚类算法的输出为一个或多个PE文件的类别,具体的聚类算法的输出为至少一个PE文件列表,每个PE文件列表对应一个PE文件类别。
其中的聚类算法可以是基于密度的聚类算法,例如为基于密度的噪声应用空间聚类(density-based spatial clustering of applications with noise,DBScan)算法,该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。
当然,除了DBScan算法,还可以采取其他聚类算法对未知PE文件和多个目标PE文件进行聚类,本申请实施例不做具体限定。
S209:在聚类结果中,若未知PE文件单独成为一个类别,则确认未知PE文件为恶意PE文件。
一般情况下,如果未知PE文件为正常PE文件,那么它的N-gram特征在N-gram特征列表中一般都能找到对应的命中次数,且命中次数的值大于或等于1。而如果未知PE文件为恶意PE文件,那么它的N-gram特征中可能有较多甚至是全部的N-gram特征无法在N-gram特征列表中找到对应的命中次数,因而这些N-gram特征的命中次数的值为0。基于此,可以通过聚类将未知PE文件是否为恶意PE文件判定出来。
具体的,在聚类算法输出的每个类别的PE文件列表中,如果未知PE文件与多个目标PE文件中的至少一个目标PE文件能够归为一类,则认为未知PE文件为正常PE文件。而如果未知PE文件单独成为一个类别,则说明未知PE文件不同于多个目标PE文件。由于多个目标PE文件均是正常PE文件,那么说明未知PE文件为恶意PE文件。
参见图5,该图为根据聚类结果形成的二维特征分布图,从该图中能够直观的看出聚类结果。在该图中,原点代表未知PE文件,叉点代表目标PE文件。从图5中可以看出,未知PE文件在二维坐标系中的位置远离目标PE文件在二维坐标系中的位置,多个目标PE文件聚为一类,未知PE文件单独聚为一类。所以可以得知未知PE文件为恶意PE文件。
由此可见,本申请实施例中,通过将未知PE文件与多个目标PE文件进行聚类,可以得到未知PE文件是否为恶意PE文件的检测结果。而在这个过程中,不管未知PE文件的代码的形态是否被攻击者改变,只要未知PE文件为恶意PE文件,它就无法与目标PE文件聚为一类,从而能够准确的识别出未知PE文件的类别,提高恶意PE文件的检测准确率,以及降低漏检率。
需要说明的是,图4所示实施例的步骤的执行顺序并不构成对本申请实施例的限定,例如S207可以不在S206之后才执行,只要在S208之前执行即可。
此外,如前文所提,攻击者可能会将恶意代码置入PE文件的入口点。所以,为了提高未知PE文件的检测效率,可以从未知PE文件中提取未知PE文件的入口点代码,并根据未知PE文件的入口点代码执行上述检测步骤。
具体的,在获取到未知PE文件之后,提取未知PE文件的入口点代码,并对未知PE文件的入口点代码进行反汇编,得到第二指令序列。然后,依次提取第二指令序列中每个指令的操作符,从而生成第二操作符序列。针对从第二操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数。接着,生成未知PE文件的命中次数列表,未知PE文件的命中次数列表中包括从未知PE文件的入口点代码中提取到的每个N-gram特征以及对应查询到的命中次数。获取多个目标PE文件中每个目标PE文件的命中次数列表,每个目标PE文件的命中次数列表中包括每个目标PE文件入口点代码的N-gram特征以及从N-gram特征列表中查询到的对应的命中次数。最后,根据未知PE文件的命中次数列表和多个目标PE文件中每个目标PE文件的命中次数列表,对未知PE文件和多个目标PE文件进行聚类。
相应的,参见图6,本申请实施例提供的一种可移植的执行体文件的处理装置,装置包括:
文件获取单元601,用于预先获取多个正常可移植的执行体PE文件,正常PE文件为不包括恶意代码的PE文件;
处理单元602,用于从多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行以下处理,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,N-gram特征集包括多个正常PE文件中的每个正常PE文件的N-gram特征:对选择出的正常PE文件的代码进行反汇编,从而得到第一指令序列,第一指令序列中的指令包括操作符和操作数;依次提取第一指令序列中每个指令的操作符,从而生成第一操作符序列;从第一操作符序列中提取至少一个N-gram特征,N-gram特征是第一操作符序列中连续出现的N个操作符,N为大于1的整数;
处理单元602,还用于针对N-gram特征集中的每个N-gram特征,计算对应的在多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
可选的,选择出的正常PE文件的代码包括选择出的正常PE文件的入口点代码;
对选择出的正常PE文件的代码进行反汇编包括:
对选择出的正常PE文件的入口点代码进行反汇编。
图6所示装置的具体工作流程可以参见前面图3所示可移植的执行体文件的处理方法实施例中的相关描述。
参见图7,本申请实施例提供了一种可移植的执行体文件的检测装置,装置包括:
文件获取单元701,用于获取未知可移植的执行体文件PE文件,未知PE文件是指所属类别为正常PE文件或恶意PE文件尚未确定的PE文件,正常PE文件是指不包括恶意代码的PE文件,恶意PE文件是指包括恶意代码的PE文件;
处理单元702,用于对未知PE文件的代码进行反汇编,得到第二指令序列,第二指令序列中的指令包括操作符和操作数;
依次提取第二指令序列中每个指令的操作符,从而生成第二操作符序列;
从第二操作符序列中提取至少一个N-gram特征,第二操作符序列的N-gram特征是第二操作符序列中连续出现的N个操作符,N为大于1的整数;
针对从第二操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数,N-gram特征列表中存储N-gram特征和命中次数之间的映射关系;
生成未知PE文件的命中次数列表,未知PE文件的命中次数列表中包括从未知PE文件中提取到的每个N-gram特征以及对应查询到的命中次数;
列表获取单元703,用于获取多个目标PE文件中每个目标PE文件的命中次数列表,目标PE文件为不包括恶意代码的PE文件,每个目标PE文件的命中次数列表包括每个目标PE文件的N-gram特征以及从N-gram特征列表中查询到的对应的命中次数:
处理单元702,还用于根据未知PE文件的命中次数列表和多个目标PE文件中每个目标PE文件的命中次数列表,对未知PE文件和多个目标PE文件进行聚类;在聚类结果中,若未知PE文件单独成为一个类别,则确认未知PE文件为恶意PE文件。
可选的,处理单元702还用于从多个目标PE文件中选择出一个目标PE文件,对选择出的目标PE文件执行以下处理,得到选择出的目标PE文件的命中次数列表,并以此类推,从而得到多个目标PE文件中每个目标PE文件的命中次数列表:
对选择出的目标PE文件的代码进行反汇编,得到第三指令序列,第三指令序列中的指令包括操作符和操作数;
依次提取第三指令序列中每个指令的操作符,从而生成第三操作符序列;
从第三操作符序列中提取至少一个N-gram特征,第三操作符序列的N-gram特征是第三操作符序列中连续出现的N个操作符,N为大于1的整数;
针对从第三操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数;
处理单元702,还用于生成选择出的目标PE文件的命中次数列表,选择出的目标PE文件的命中次数列表中包括从选择出的目标PE文件中提取到的每个N-gram特征以及对应查询到的命中次数。
可选的,N-gram特征列表是通过以下方式获得的:
预先获取多个正常可移植的执行体PE文件,正常PE文件为不包括恶意代码的PE文件;
从多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行以下处理,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,N-gram特征集包括多个正常PE文件中的每个正常PE文件的N-gram特征:
对选择出的正常PE文件的代码进行反汇编,从而得到第一指令序列,第一指令序列中的指令包括操作符和操作数;
依次提取第一指令序列中每个指令的操作符,从而生成第一操作符序列;
从第一操作符序列中提取至少一个N-gram特征,N-gram特征是第一操作符序列中连续出现的N个操作符,N为大于1的整数;
针对N-gram特征集中的每个N-gram特征,计算对应的在多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
可选的,目标PE文件属于多个正常PE文件。
可选的,目标PE文件对应的编译器与未知PE文件的编译器相同。
可选的,未知PE文件的代码包括未知PE文件的入口点代码;
对未知PE文件的代码进行反汇编包括:
对未知PE文件的入口点代码进行反汇编。
图7所示装置的具体工作流程可以参见前面图4所示可移植的执行体文件的检测方法实施例中的相关描述。
参见图8,本申请实施例还提供一种可移植的执行体文件的处理设备,包括:
处理器810、存储器820和网络接口830,处理器810、存储器820和网络接口830通过总线840相互连接。
存储器820包括但不限于是随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、或便携式只读存储器(CD-ROM)。
处理器810可以是一个或多个中央处理器(Central Processing Unit,简称CPU),在处理器810是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。处理器810可以是图6所示实施例中处理单元602的硬件实现。
网络接口830可以是有线接口,例如光纤分布式数据接口(Fiber DistributedData Interface,简称FDDI)、千兆以太网(Gigabit Ethernet,简称GE)接口;网络接口830也可以是无线接口。网络接口830可以是图6所示实施例中文件获取单元601的硬件实现。
网络接口830,用于接收输入的多个正常可移植的执行体PE文件,正常PE文件为不包括恶意代码的PE文件。
存储器820,用于存储程序代码;
处理器810,用于读取存储器820中存储的程序代码,执行以下操作:
从多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行以下处理,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,N-gram特征集包括多个正常PE文件中的每个正常PE文件的N-gram特征:
对选择出的正常PE文件的代码进行反汇编,从而得到第一指令序列,第一指令序列中的指令包括操作符和操作数;
依次提取第一指令序列中每个指令的操作符,从而生成第一操作符序列;
从第一操作符序列中提取至少一个N-gram特征,N-gram特征是第一操作符序列中连续出现的N个操作符,N为大于1的整数;
针对N-gram特征集中的每个N-gram特征,计算对应的在多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
图8所示设备的实现可以参见图6中的相关描述。
参见图9,本申请实施例还提供一种可移植的执行体文件的检测设备,包括:
处理器910、存储器920和网络接口930,处理器910、存储器920和网络接口930通过总线940相互连接。
存储器920包括但不限于是随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、或便携式只读存储器(CD-ROM)。
处理器910可以是一个或多个中央处理器(Central Processing Unit,简称CPU),在处理器910是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。处理器910可以是图7所示实施例中处理单元702和列表获取单元703的硬件实现。
网络接口930可以是有线接口,例如光纤分布式数据接口(Fiber DistributedData Interface,简称FDDI)、千兆以太网(Gigabit Ethernet,简称GE)接口;网络接口930也可以是无线接口。网络接口930可以是图7所示实施例中文件获取单元701的硬件实现。
网络接口930,用于获取未知可移植的执行体文件PE文件,未知PE文件是指所属类别为正常PE文件或恶意PE文件尚未确定的PE文件,正常PE文件是指不包括恶意代码的PE文件,恶意PE文件是指包括恶意代码的PE文件;
存储器920,用于存储程序代码;
处理器910,用于读取存储器920中存储的程序代码,执行以下操作:
对未知PE文件的代码进行反汇编,得到第二指令序列,第二指令序列中的指令包括操作符和操作数;
依次提取第二指令序列中每个指令的操作符,从而生成第二操作符序列;
从第二操作符序列中提取至少一个N-gram特征,第二操作符序列的N-gram特征是第二操作符序列中连续出现的N个操作符,N为大于1的整数;
针对从第二操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数,N-gram特征列表中存储N-gram特征和命中次数之间的映射关系;
生成未知PE文件的命中次数列表,未知PE文件的命中次数列表中包括从未知PE文件中提取到的每个N-gram特征以及对应查询到的命中次数;
获取多个目标PE文件中每个目标PE文件的命中次数列表,目标PE文件为不包括恶意代码的PE文件,每个目标PE文件的命中次数列表包括每个目标PE文件的N-gram特征以及从N-gram特征列表中查询到的对应的命中次数:
根据未知PE文件的命中次数列表和多个目标PE文件中每个目标PE文件的命中次数列表,对未知PE文件和多个目标PE文件进行聚类;
在聚类结果中,若未知PE文件单独成为一个类别,则确认未知PE文件为恶意PE文件。
图9所示设备的实现可以参见图7中的相关描述。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行以上PE文件的处理方法。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行以上PE文件的检测方法。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
Claims (14)
1.一种可移植的执行体文件的处理方法,其特征在于,所述方法包括:
预先获取多个正常可移植的执行体PE文件,所述正常PE文件为不包括恶意代码的PE文件;
从所述多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行以下处理,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,所述N-gram特征集包括所述多个正常PE文件中的每个正常PE文件的N-gram特征:
对所述选择出的正常PE文件的代码进行反汇编,得到第一指令序列,所述第一指令序列中的指令包括操作符和操作数;
依次提取所述第一指令序列中每个指令的操作符,从而生成第一操作符序列;
从所述第一操作符序列中提取至少一个N-gram特征,所述N-gram特征是所述第一操作符序列中连续出现的N个操作符,N为大于1的整数;
针对所述N-gram特征集中的每个N-gram特征,计算对应的在所述多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
2.根据权利要求1所述的方法,其特征在于,所述选择出的正常PE文件的代码包括所述选择出的正常PE文件的入口点代码;
所述对所述选择出的正常PE文件的代码进行反汇编包括:
对所述选择出的正常PE文件的入口点代码进行反汇编。
3.一种可移植的执行体文件的检测方法,其特征在于,所述方法包括:
获取未知可移植的执行体文件PE文件,所述未知PE文件是指所属类别为正常PE文件或恶意PE文件尚未确定的PE文件,所述正常PE文件是指不包括恶意代码的PE文件,所述恶意PE文件是指包括恶意代码的PE文件;
对所述未知PE文件的代码进行反汇编,得到第二指令序列,所述第二指令序列中的指令包括操作符和操作数;
依次提取所述第二指令序列中每个指令的操作符,从而生成第二操作符序列;
从所述第二操作符序列中提取至少一个N-gram特征,所述第二操作符序列的N-gram特征是所述第二操作符序列中连续出现的N个操作符,N为大于1的整数;
针对从所述第二操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数,所述N-gram特征列表中存储N-gram特征和命中次数之间的映射关系;
生成所述未知PE文件的命中次数列表,所述未知PE文件的命中次数列表中包括从所述未知PE文件中提取到的每个N-gram特征以及对应查询到的命中次数;
获取多个目标PE文件中每个目标PE文件的命中次数列表,所述目标PE文件为不包括恶意代码的PE文件,所述每个目标PE文件的命中次数列表包括所述每个目标PE文件的N-gram特征以及从所述N-gram特征列表中查询到的对应的命中次数:
根据所述未知PE文件的命中次数列表和所述多个目标PE文件中每个目标PE文件的命中次数列表,对所述未知PE文件和所述多个目标PE文件进行聚类;
在聚类结果中,若所述未知PE文件单独成为一个类别,则确认所述未知PE文件为恶意PE文件。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
从所述多个目标PE文件中选择出一个目标PE文件,对选择出的目标PE文件执行以下处理,得到选择出的目标PE文件的命中次数列表,并以此类推,从而得到所述多个目标PE文件中每个目标PE文件的命中次数列表:
对所述选择出的目标PE文件的代码进行反汇编,得到第三指令序列,所述第三指令序列中的指令包括操作符和操作数;
依次提取所述第三指令序列中每个指令的操作符,从而生成第三操作符序列;
从所述第三操作符序列中提取至少一个N-gram特征,所述第三操作符序列的N-gram特征是所述第三操作符序列中连续出现的N个操作符,N为大于1的整数;
针对从所述第三操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从所述N-gram特征列表中查询对应的命中次数;
生成所述选择出的目标PE文件的命中次数列表,所述选择出的目标PE文件的命中次数列表中包括从所述选择出的目标PE文件中提取到的每个N-gram特征以及对应查询到的命中次数。
5.根据权利要求3所述的方法,其特征在于,所述N-gram特征列表是通过以下方式获得的:
预先获取多个正常可移植的执行体PE文件,所述正常PE文件为不包括恶意代码的PE文件;
从所述多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行以下处理,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,所述N-gram特征集包括所述多个正常PE文件中的每个正常PE文件的N-gram特征:
对所述选择出的正常PE文件的代码进行反汇编,从而得到第一指令序列,所述第一指令序列中的指令包括操作符和操作数;
依次提取所述第一指令序列中每个指令的操作符,从而生成第一操作符序列;
从所述第一操作符序列中提取至少一个N-gram特征,所述N-gram特征是所述第一操作符序列中连续出现的N个操作符,N为大于1的整数;
针对所述N-gram特征集中的每个N-gram特征,计算对应的在所述多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
6.根据权利要求5所述的方法,其特征在于,所述目标PE文件属于所述多个正常PE文件。
7.根据权利要求3-6任一项所述的方法,其特征在于,所述目标PE文件对应的编译器与所述未知PE文件的编译器相同。
8.根据权利要求3-6任一项所述的方法,其特征在于,所述未知PE文件的代码包括所述未知PE文件的入口点代码;
所述对所述未知PE文件的代码进行反汇编包括:
对所述未知PE文件的入口点代码进行反汇编。
9.一种可移植的执行体文件的处理装置,其特征在于,所述装置包括:
文件获取单元,用于预先获取多个正常可移植的执行体PE文件,所述正常PE文件为不包括恶意代码的PE文件;
处理单元,用于从所述多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行以下处理,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,所述N-gram特征集包括所述多个正常PE文件中的每个正常PE文件的N-gram特征:对所述选择出的正常PE文件的代码进行反汇编,得到第一指令序列,所述第一指令序列中的指令包括操作符和操作数;依次提取所述第一指令序列中每个指令的操作符,从而生成第一操作符序列;从所述第一操作符序列中提取至少一个N-gram特征,所述N-gram特征是所述第一操作符序列中连续出现的N个操作符,N为大于1的整数;
所述处理单元,还用于针对所述N-gram特征集中的每个N-gram特征,计算对应的在所述多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
10.根据权利要求9所述的装置,其特征在于,所述选择出的正常PE文件的代码包括所述选择出的正常PE文件的入口点代码;
所述对所述选择出的正常PE文件的代码进行反汇编包括:
对所述选择出的正常PE文件的入口点代码进行反汇编。
11.一种可移植的执行体文件的检测装置,其特征在于,所述装置包括:
文件获取单元,用于获取未知可移植的执行体文件PE文件,所述未知PE文件是指所属类别为正常PE文件或恶意PE文件尚未确定的PE文件,所述正常PE文件是指不包括恶意代码的PE文件,所述恶意PE文件是指包括恶意代码的PE文件;
处理单元,用于对所述未知PE文件的代码进行反汇编,得到第二指令序列,所述第二指令序列中的指令包括操作符和操作数;
依次提取所述第二指令序列中每个指令的操作符,从而生成第二操作符序列;
从所述第二操作符序列中提取至少一个N-gram特征,所述第二操作符序列的N-gram特征是所述第二操作符序列中连续出现的N个操作符,N为大于1的整数;
针对从所述第二操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从N-gram特征列表中查询对应的命中次数,所述N-gram特征列表中存储N-gram特征和命中次数之间的映射关系;
所述处理单元,还用于生成所述未知PE文件的命中次数列表,所述未知PE文件的命中次数列表中包括从所述未知PE文件中提取到的每个N-gram特征以及对应查询到的命中次数;
列表获取单元,用于获取多个目标PE文件中每个目标PE文件的命中次数列表,所述目标PE文件为不包括恶意代码的PE文件,所述每个目标PE文件的命中次数列表包括所述每个目标PE文件的N-gram特征以及从所述N-gram特征列表中查询到的对应的命中次数:
所述处理单元,还用于根据所述未知PE文件的命中次数列表和所述多个目标PE文件中每个目标PE文件的命中次数列表,对所述未知PE文件和所述多个目标PE文件进行聚类;在聚类结果中,若所述未知PE文件单独成为一个类别,则确认所述未知PE文件为恶意PE文件。
12.根据权利要求11所述的装置,其特征在于,
所述处理单元,还用于从所述多个目标PE文件中选择出一个目标PE文件,对选择出的目标PE文件执行以下处理,得到选择出的目标PE文件的命中次数列表,并以此类推,从而得到所述多个目标PE文件中每个目标PE文件的命中次数列表:
对所述选择出的目标PE文件的代码进行反汇编,得到第三指令序列,所述第三指令序列中的指令包括操作符和操作数;
依次提取所述第三指令序列中每个指令的操作符,从而生成第三操作符序列;
从所述第三操作符序列中提取至少一个N-gram特征,所述第三操作符序列的N-gram特征是所述第三操作符序列中连续出现的N个操作符,N为大于1的整数;
针对从所述第三操作符序列中提取到的至少一个N-gram特征中的每个N-gram特征,从所述N-gram特征列表中查询对应的命中次数;
所述处理单元,还用于生成所述选择出的目标PE文件的命中次数列表,所述选择出的目标PE文件的命中次数列表中包括从所述选择出的目标PE文件中提取到的每个N-gram特征以及对应查询到的命中次数。
13.根据权利要求11所述的装置,其特征在于,所述N-gram特征列表是通过以下方式获得的:
预先获取多个正常可移植的执行体PE文件,所述正常PE文件为不包括恶意代码的PE文件;
从所述多个正常PE文件中选择出一个正常PE文件,对选择出的正常PE文件执行以下处理,得到选择出的正常PE文件的N-gram特征,并以此类推,从而得到N-gram特征集,所述N-gram特征集包括所述多个正常PE文件中的每个正常PE文件的N-gram特征:
对所述选择出的正常PE文件的代码进行反汇编,从而得到第一指令序列,所述第一指令序列中的指令包括操作符和操作数;
依次提取所述第一指令序列中每个指令的操作符,从而生成第一操作符序列;
从所述第一操作符序列中提取至少一个N-gram特征,所述N-gram特征是所述第一操作符序列中连续出现的N个操作符,N为大于1的整数;
针对所述N-gram特征集中的每个N-gram特征,计算对应的在所述多个正常PE文件中的命中次数,并在N-gram特征列表中保存每个N-gram特征以及对应的命中次数。
14.根据权利要求11-13任一项所述的装置,其特征在于,所述未知PE文件的代码包括所述未知PE文件的入口点代码;
所述对所述未知PE文件的代码进行反汇编包括:
对所述未知PE文件的入口点代码进行反汇编。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811533679.5A CN111324890B (zh) | 2018-12-14 | 2018-12-14 | 可移植的执行体文件的处理方法、检测方法及装置 |
PCT/CN2019/124963 WO2020119771A1 (zh) | 2018-12-14 | 2019-12-13 | 可移植的执行体文件的处理方法、检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811533679.5A CN111324890B (zh) | 2018-12-14 | 2018-12-14 | 可移植的执行体文件的处理方法、检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324890A CN111324890A (zh) | 2020-06-23 |
CN111324890B true CN111324890B (zh) | 2022-12-02 |
Family
ID=71077147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811533679.5A Active CN111324890B (zh) | 2018-12-14 | 2018-12-14 | 可移植的执行体文件的处理方法、检测方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111324890B (zh) |
WO (1) | WO2020119771A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086068B (zh) * | 2022-07-19 | 2022-11-08 | 电子科技大学 | 一种网络入侵检测方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2128798A1 (en) * | 2008-05-27 | 2009-12-02 | Deutsche Telekom AG | Unknown malcode detection using classifiers with optimal training sets |
CN106127044A (zh) * | 2016-06-20 | 2016-11-16 | 武汉绿色网络信息服务有限责任公司 | 一种函数恶意程度的检测方法和装置 |
CN107241350A (zh) * | 2017-07-13 | 2017-10-10 | 北京紫光恒越网络科技有限公司 | 网络安全防御方法、装置及电子设备 |
CN107679403A (zh) * | 2017-10-11 | 2018-02-09 | 北京理工大学 | 一种基于序列比对算法的勒索软件变种检测方法 |
US10133865B1 (en) * | 2016-12-15 | 2018-11-20 | Symantec Corporation | Systems and methods for detecting malware |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6851057B1 (en) * | 1999-11-30 | 2005-02-01 | Symantec Corporation | Data driven detection of viruses |
CN100458700C (zh) * | 2006-03-22 | 2009-02-04 | 北京握奇数据系统有限公司 | 带有安全需求的应用程序的构建方法和装置 |
CN102279917B (zh) * | 2011-09-19 | 2013-08-07 | 奇智软件(北京)有限公司 | 多杀毒引擎并行杀毒方法及系统 |
-
2018
- 2018-12-14 CN CN201811533679.5A patent/CN111324890B/zh active Active
-
2019
- 2019-12-13 WO PCT/CN2019/124963 patent/WO2020119771A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2128798A1 (en) * | 2008-05-27 | 2009-12-02 | Deutsche Telekom AG | Unknown malcode detection using classifiers with optimal training sets |
CN106127044A (zh) * | 2016-06-20 | 2016-11-16 | 武汉绿色网络信息服务有限责任公司 | 一种函数恶意程度的检测方法和装置 |
US10133865B1 (en) * | 2016-12-15 | 2018-11-20 | Symantec Corporation | Systems and methods for detecting malware |
CN107241350A (zh) * | 2017-07-13 | 2017-10-10 | 北京紫光恒越网络科技有限公司 | 网络安全防御方法、装置及电子设备 |
CN107679403A (zh) * | 2017-10-11 | 2018-02-09 | 北京理工大学 | 一种基于序列比对算法的勒索软件变种检测方法 |
Non-Patent Citations (1)
Title |
---|
基于N-Gram系统调用序列的恶意代码静态检测;黄全伟;《信息科技辑》;20120315;第3-4章 * |
Also Published As
Publication number | Publication date |
---|---|
CN111324890A (zh) | 2020-06-23 |
WO2020119771A1 (zh) | 2020-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303873B2 (en) | Device for detecting malware infected terminal, system for detecting malware infected terminal, method for detecting malware infected terminal, and program for detecting malware infected terminal | |
US9621571B2 (en) | Apparatus and method for searching for similar malicious code based on malicious code feature information | |
Kim et al. | Improvement of malware detection and classification using API call sequence alignment and visualization | |
JP5656136B2 (ja) | クラスタリングを使用した行動シグネチャの生成 | |
US11475133B2 (en) | Method for machine learning of malicious code detecting model and method for detecting malicious code using the same | |
US20150172303A1 (en) | Malware Detection and Identification | |
Rad et al. | Opcodes histogram for classifying metamorphic portable executables malware | |
US11048798B2 (en) | Method for detecting libraries in program binaries | |
US11470097B2 (en) | Profile generation device, attack detection device, profile generation method, and profile generation computer program | |
US20160196427A1 (en) | System and Method for Detecting Branch Oriented Programming Anomalies | |
RU2722692C1 (ru) | Способ и система выявления вредоносных файлов в неизолированной среде | |
NL2026782B1 (en) | Method and system for determining affiliation of software to software families | |
JP2019514119A (ja) | ハイブリッドプログラムバイナリ特徴の抽出及び比較 | |
US20150096019A1 (en) | Software network behavior analysis and identification system | |
CN111222137A (zh) | 一种程序分类模型训练方法、程序分类方法及装置 | |
Kumar et al. | Machine learning based malware detection in cloud environment using clustering approach | |
Vadrevu et al. | Maxs: Scaling malware execution with sequential multi-hypothesis testing | |
CN111324890B (zh) | 可移植的执行体文件的处理方法、检测方法及装置 | |
WO2016194752A1 (ja) | 情報分析システム、情報分析方法 | |
CN108229168B (zh) | 一种嵌套类文件的启发式检测方法、系统及存储介质 | |
Grégio et al. | Tracking memory writes for malware classification and code reuse identification | |
US20210168121A1 (en) | Generation method, generation device, and recording medium | |
CN106372508B (zh) | 恶意文档的处理方法及装置 | |
JP2019175334A (ja) | 情報処理装置、制御方法、及びプログラム | |
Qi et al. | A Malware Variant Detection Method Based on Byte Randomness Test. |
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 |