CN108256325A - 一种恶意代码变种的检测的方法和装置 - Google Patents
一种恶意代码变种的检测的方法和装置 Download PDFInfo
- Publication number
- CN108256325A CN108256325A CN201611249503.8A CN201611249503A CN108256325A CN 108256325 A CN108256325 A CN 108256325A CN 201611249503 A CN201611249503 A CN 201611249503A CN 108256325 A CN108256325 A CN 108256325A
- Authority
- CN
- China
- Prior art keywords
- malicious code
- sample
- family
- behavior characteristics
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 121
- 238000001514 detection method Methods 0.000 title claims abstract description 21
- 230000035772 mutation Effects 0.000 title abstract 4
- 238000004458 analytical method Methods 0.000 claims abstract description 117
- 230000003068 static effect Effects 0.000 claims abstract description 57
- 230000008569 process Effects 0.000 claims description 85
- 238000010586 diagram Methods 0.000 claims description 31
- 238000012544 monitoring process Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 16
- 230000003542 behavioural effect Effects 0.000 abstract description 5
- 230000006399 behavior Effects 0.000 description 138
- 230000006870 function Effects 0.000 description 20
- 238000004590 computer program Methods 0.000 description 7
- 238000002347 injection Methods 0.000 description 7
- 239000007924 injection Substances 0.000 description 7
- 238000007726 management method Methods 0.000 description 5
- 239000000243 solution Substances 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
-
- 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/561—Virus type analysis
-
- 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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
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)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种恶意代码变种的检测的方法,所述方法包括:对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征;对未知样本进行静态分析和动态行为分析,得到所述未知样本的行为特征;计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度,得出至少一个相似度值;所得出的所有相似度值的和大于相似度阈值时,确定所述未知样本为对应家族恶意代码的一个变种。本发明实施例还公开了一种恶意代码变种的检测的装置。
Description
技术领域
本发明涉及网络安全技术领域,尤其涉及一种恶意代码变种的检测的方法和装置。
背景技术
随着信息技术的快速发展,互联网已经进入到人们生活的方方面面,随之而来的是大量的互联网安全问题。其中,恶意代码便是威胁互联网安全最大的元凶之一,恶意代码的种类、传播速度、感染数量和影响范围都在逐渐增强,同时互联网的开发也加快了恶意代码的传播,恶意代码是利用互联网系统软件和应用的漏洞,故意编制或设置从而对互联网实施破坏的程序。
目前,恶意代码是基于现有程序而开发的,随着恶意代码更新速度的加快,产生了大量的变种恶意代码,这些变种恶意代码对互联网的攻击方式更加复杂和隐蔽,为检测和清除带来了极大的困难。变种恶意代码可以通过改变自身的代码结构或执行流程,逃避传统的基于特征签名的检测。
当前变种恶意代码的检测方法多基于代码特征值匹配的方式,通过提取程序中有效的代码段,利用HASH等算法,生成唯一标识该恶意代码的特征值序列,产生签名特征库,以此对未知样本进行匹配检测,从而判定未知样本是否为恶意代码。此类方法需要预先建立特征库,训练已知样本并不断更新,当提取出未知样本的特征值之后,将特征值与预先建立的特征库进行匹配,如果特征库存在与未知样本相同的特征值,则表明该未知样本为恶意代码。但由于加壳、变形等混淆技术的广泛使用,恶意代码隐藏了代码特征,造成了代码结构特征不明显,同一个类恶意代码可能会提取出不同的特征值,导致无法准确的判断恶意代码种类,因此特征值的提取存在很大的困难。随着当前恶意代码变种的大量增加,特征库规模随之增大,检测处理速度和识别准确率受到严重影响。
发明内容
为解决上述技术问题,本发明实施例期望提供一种恶意代码变种的检测的方法和装置,实现了对恶意代码的类别划分,识别出恶意代码归属的家族,提高了恶意代码的识别准确率和检测速度。
本发明的技术方案是这样实现的:
本发明实施例提供了一种恶意代码变种的检测的方法,包括:
对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征;
对未知样本进行静态分析和动态行为分析,得到所述未知样本的行为特征;
计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度,得出至少一个相似度值;
所得出的所有相似度值的和大于相似度阈值时,确定所述未知样本为对应家族恶意代码的一个变种。
上述方案中,所述对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征,包括:通过对同一家族中每一个恶意代码样本进行静态分析,建立对应的调用关系图;在虚拟机VM中动态执行每一个恶意代码样本,并对恶意代码样本的执行过程进行进程监控,得到对应的恶意代码样本的动态行为特征;基于每个恶意代码样本的调用关系图和动态行为特征,得出对应恶意代码样本的行为特征;
所述对未知样本进行静态分析和动态行为分析,得到所述未知样本的行为特征,包括:对所述未知样本进行静态分析,建立对应的调用关系图;在VM中动态执行未知样本,并对未知样本的执行过程进行进程监控,得到对应的未知样本的动态行为特征;基于未知样本的调用关系图和动态行为特征,得出对应未知样本的行为特征。
上述方案中,在计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度前,所述方法还包括:
利用同一家族每个恶意代码样本的调用关系图和动态行为特征,生成每个恶意代码样本对应的控制流图,建立控制流图集合,所述控制流图集合包含对应家族各个恶意代码样本对应的控制流图;
利用未知样本的调用关系图和动态行为特征,生成未知样本对应的控制流图;
所述未知样本的行为特征与对应家族第i个恶意代码样本的行为特征的相似度为:所述未知样本对应的控制流图与对应家族第i个恶意代码样本对应的控制流图的相似度,i取1至N的整数,N表示对应家族的恶意代码样本数。
上述方案中,所述动态行为特征用于表示以下至少一项:扫描系统状态、获取系统权限、注册表操作、自删除操作、加解密、进程/线程行为、文件操作、网络访问行为。
上述方案中,所得出的所有相似度值的和小于等于相似度阈值时,确定所述未知样本不是对应家族恶意代码的变种。
本发明实施例还提供了一种恶意代码变种的检测的装置,包括:第一分析模块、第二分析模块、处理模块和确定模块;其中,
第一分析模块,用于对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征;
第二分析模块,用于对未知样本进行静态分析和动态行为分析,得到所述未知样本的行为特征;
处理模块,用于计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度,得出至少一个相似度值;
确定模块,用于在所得出的所有相似度值的和大于相似度阈值时,确定所述未知样本为对应家族恶意代码的一个变种。
上述方案中,所述第一分析模块,具体用于通过对同一家族中每一个恶意代码样本进行静态分析,建立对应的调用关系图;在虚拟机VM中动态执行每一个恶意代码样本,并对恶意代码样本的执行过程进行进程监控,得到对应的恶意代码样本的动态行为特征;基于每个恶意代码样本的调用关系图和动态行为特征,得出对应恶意代码样本的行为特征;
所述第二分析模块,具体用于对所述未知样本进行静态分析,建立对应的调用关系图;在VM中动态执行未知样本,并对未知样本的执行过程进行进程监控,得到对应的未知样本的动态行为特征;基于未知样本的调用关系图和动态行为特征,得出对应未知样本的行为特征。
上述方案中,所述第一分析模块,还用于利用同一家族每个恶意代码样本的调用关系图和动态行为特征,生成每个恶意代码样本对应的控制流图,建立控制流图集合,所述控制流图集合包含对应家族各个恶意代码样本对应的控制流图;
所述第二分析模块,还用于利用未知样本的调用关系图和动态行为特征,生成未知样本对应的控制流图;
所述未知样本的行为特征与对应家族第i个恶意代码样本的行为特征的相似度为:所述未知样本对应的控制流图与对应家族第i个恶意代码样本对应的控制流图的相似度,i取1至N的整数,N表示对应家族的恶意代码样本数。
上述方案中,所述动态行为特征用于表示以下至少一项:扫描系统状态、获取系统权限、注册表操作、自删除操作、加解密、进程/线程行为、文件操作、网络访问行为。
上述方案中,所述确定模块,还用于在所得出的所有相似度值的和小于等于相似度阈值时,确定所述未知样本不是对应家族恶意代码的变种。
本发明实施例中,对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征;对未知样本进行静态分析和动态行为分析,得到所述未知样本的行为特征;计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度,得出至少一个相似度值;所得出的所有相似度值的和大于相似度阈值时,确定所述未知样本为对应家族恶意代码的一个变种。如此,实现了对恶意代码的类别划分,识别出恶意代码归属的家族,提高了恶意代码的识别准确率和检测速度。
附图说明
图1为本发明恶意代码变种的检测的方法的第一实施例的流程图;
图2为本发明实施例中恶意样本的静态分析流程图;
图3为本发明实施例中API HOOK拦截注入实现的流程图;
图4为本发明实施例中恶意代码变种的检测的总体结构图;
图5为本发明恶意代码变种的检测的方法的第二实施例的流程图;
图6为本发明实施例恶意代码变种的检测的装置的组成结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
图1为本发明恶意代码变种的检测的方法的第一实施例的流程图,如图1所示,该方法包括:
步骤100:对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征。
在实际实施时,通过对同一家族中每一个恶意代码样本进行静态分析,建立对应的调用关系图;在虚拟机VM中动态执行每一个恶意代码样本,并对恶意代码样本的执行过程进行进程监控,得到对应的恶意代码样本的动态行为特征;基于每个恶意代码样本的调用关系图和动态行为特征,得出对应恶意代码样本的行为特征。
这里,静态分析方法是指在不执行二进制程序的条件下进行分析,如反汇编分析、源代码分析、二进制统计分析、反编译等,属于逆向工程分析方法。静态分析是采用反汇编等非实际执行恶意代码的分析方法对恶意代码进行分析,目前常用的静态分析工具有交互式反汇编器专业版(Interactive Disassembler Professional,IDA Pro)、HIEW、W32DASM等。
图2为本发明实施例中恶意样本的静态分析流程图,如图2所示,对恶意代码样本进行静态分析的过程包括:首先对恶意代码样本进行逆向反汇编,获得恶意代码汇编程序结构;其次分析恶意代码汇编程序中函数之间的调用关系和数据流等,建立调用关系集合G{h1,h2,r1},h1和h2表示两个不同的函数,r1表示h1→h2之间的函数调用关系;最后通过得到的调用关系集合,产生调用关系图,并将调用关系图中的无用关系删除精简执行过程;这里,可以利用调用关系图跟踪恶意代码的函数调用过程和数据流等。
需要说明的是,由于系统中相同的应用程序编程接口(Application ProgrammingInterface,API)调用序列S出现在源代码M和变种代码M′中时,即使M′使用代码混淆等技术改变代码结构,变种代码M′的调用关系跟源代码M之间仍然存在一定的相关性。
示例性的,函数Hi和Hk代表两个不同的节点,Ri代表两者之间存在的关系,则G{Hi,Hk,Rj}等价于Hi→Hk之间有调用关系Ri,i≠k∈N。则可描述为两节点之间存在有向边,通过转换,能够获取源程序的控制流流向,构建源程序的调用关系图。
可以理解的是,多个函数间可以是一对一映射,也可以是一对多映射,调用关系图完整的描绘出程序中的调用过程。由于程序中存在大量的冗余操作、循环判断等,可利用归一化的原则精简调用过程。当函数返回、程序执行结束或者是超过最大执行时间时终止程序。
这里,动态分析方法是指恶意代码执行的情况下利用程序调试工具对恶意代码实施跟踪和观察,确定恶意代码的工作过程对静态分析结果进行验证。
可选的,在虚拟机(Virtual Machine,VM)中动态执行恶意代码,监视运行过程中的状态变化,利用HOOK拦截系统中关键事件的操作。这里,HOOK是Windows系统消息传递的重要载体,HOOK函数提供消息调用的接口,拦截事件间的调用过程,处理后转发给对应的API接口。此时,在操作系统中设置用户定义的HOOK,监控系统行为,实现动态监控。API拦截的主要目的是在其他应用程序调用API之前将其拦截,由拦截者先处理传递的参数数据,然后决定是否再调用原来的API。
图3为本发明实施例中API HOOK拦截注入实现的流程图,如图3所示,为了实现API拦截,需要将拦截函数地址导入可执行文件进程内即程序主体内。由于系统运行过程中,是通过动态链接库(Dynamic Link Library,DLL)进行事件调用,因此可通过DLL实施注入拦截。利用自定义的拦截函数,在恶意代码程序执行时,将其API调用导入预定义地址,执行HOOK,以此来获得可执行文件的行为操作。
本发明实施例中,具体的拦截注入操作可以包括以下:利用Create_Remote_Threads()进行DLL形式的动态代码注入技术,要在其他的进程中注入DLL就要求能够在目标进程中调用Load_Library()。而应用程序进程通过加载库调用DLL时,通常情况下,由于线程是进程的最小单元,因此可以利用远程线程调用的方式,获取Load_Library库的调用执行情况,进而实施导入。设计远程方法Create_Remote_Threads(),用于建立进程中的线程。由于传给函数Create_Remote_Threads()的指针W_API ThreadProcess(LP_VoidParam)和LoadLibrary()的指针相同,可将LoadLibrary()设置为远程线程函数的参数。实现过程为首先使用Get_Process_Addr获取到LoadLibrary()的内存地址;然后通过指针传递给Create_Remote_Threads();此时远程线程开始执行,通过参数调用,将HOOK驱动导入到Load_Library库中,完成拦截注入。
基于以上讨论,本发明实施例提出了一种API进程的HOOK方案。为了保证进程正常执行,并实现动态监控,本方案将进程拦截分成两个主要部分:进程管理和进程监视。
其中,进程管理主要用于在选定进程的执行过程中管理进程状态,由于恶意代码进程在执行时,可能会遇到意外关闭的情况,为了解决此问题,设计了进程管理策略,具体的管理操作如下:
A1:初始化。
A2:判定执行条件是否成立,如果是,执行步骤A3;如果否,继续执行步骤A2。
A3:进程创建成功。
A4:判断进程是否执行,如果是,执行步骤A6;如果否,执行步骤A5。
A5:关闭,处理。
A6:返回结果。
可以理解的是,当进程在执行过程中遇到意外关闭的情况时,可以获得进程关闭提醒,从而及时处理当前进程的关闭操作;在进程执行完毕时返回执行结果。
相应地,进程监视在进程启动后就开始工作,根据预定义指标动态监控进程的执行情况。进程在执行过程中,判断执行条件,保存行为调用记录,直至指定进程结束。具体的监视操作如下:
B1:获取指定进程信息;
B2:设置快照最小间隔,保存初始状态;
B3:判断当前进程是否为指定进程,如果是,执行步骤B4;如果否,执行步骤B5。
B4:进程执行结束,记录进程运行时间。
B5:获取下一个进程信息。并继续执行步骤B2。
通过以上进程监控方法,可以获得进程执行过程中固定快照间隔的进程信息,从而获得恶意代码的动态行为特征。
步骤101:对未知样本进行静态分析和动态行为分析,得到未知样本的行为特征。
在实际实施时,对未知样本进行静态分析,建立对应的调用关系图;在VM中动态执行未知样本,并对未知样本的执行过程进行进程监控,得到对应的未知样本的动态行为特征;基于未知样本的调用关系图和动态行为特征,得出对应未知样本的行为特征。
本发明实施例中,动态行为特征可以用于表示以下至少一项:扫描系统状态、获取系统权限、注册表操作、自删除操作、加解密、进程/线程行为、文件操作、网络访问行为。
步骤102:计算未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度,得出至少一个相似度值。
本步骤中,在计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度前,包括:
利用同一家族每个恶意代码样本的调用关系图和动态行为特征,生成每个恶意代码样本对应的控制流图,建立控制流图集合,所述控制流图集合包含对应家族各个恶意代码样本对应的控制流图;利用未知样本的调用关系图和动态行为特征,生成未知样本对应的控制流图。
可选的,未知样本的行为特征与对应家族第i个恶意代码样本的行为特征的相似度为:所述未知样本对应的控制流图与对应家族第i个恶意代码样本对应的控制流图的相似度,i取1至N的整数,N表示对应家族的恶意代码样本数。
在实际实施时,可以根据上述静态分析结果和动态行为分析建立行为特征集Mi,Mi={F0,F1,F2,F3,F4,F5,F6,F7,F8,F9},Mi用来描述恶意代码的行为特征,其中F0代表通过静态分析得到API调用关系图,F1→F9代表通过动态分析得到的不同行为操作。具体的含义如下:
F0:API调用关系图;
F1:扫描系统状态;
F2:获取系统权限;
F3:注册表操作;
F4:自删除操作;
F5:加解密;
F6:进程/线程行为;
F7:文件操作;
F8:网络访问行为;
F9:其它行为。
利用行为特征集Mi中包含的恶意代码样本动态行为特征F1→F9标记恶意代码样本的静态特征F0,生成恶意代码样本对应的控制流图。
行为特征集包含了应用程序在系统中的操作行为。一般来说,由于恶意可执行文件与正常文件的系统行为有很大的差异,恶意代码与系统交互更多,经常伴随着提升执行权限、修改自启动、加密和解密、建立反向连接、开启系统服务等行为。因此,行为特征集中的这些特征能够很好地反映出恶意代码本质和具有同源性恶意代码之间的相似性,同时对于不同来源的恶意代码样本具有明显的区分。
步骤103:所得出的所有相似度值的和大于相似度阈值时,确定未知样本为对应家族恶意代码的一个变种
可以理解的是,所得出的所有相似度值的和小于等于相似度阈值时,确定未知样本不是对应家族恶意代码的变种。
在实际实施时,对同一家族的恶意代码样本可以生成对应的控制流图集合{T1,T2,...,Tk,...,Tn},Tk代表本家族中第k个恶意代码样本对应的控制流图,对当前未知样本生成对应的控制流图Tx。计算Tx与{T1,T2,...,Tk,...,Tn}中每一个控制流图的相似度值si。
进一步的,计算所有相似度值的累加和sx再与相似度阈值比较,判断未知样本是否属于该恶意代码家族的变种。
图4为本发明实施例中恶意代码变种的检测的总体结构图,如图4所示,在进行未知样本检测时,首先生成已知的恶意代码家族对应的控制流图集合;具体地,对同一家族的恶意代码家族进行静态分析和动态行为分析,提取行为特征,将获得的动态行为特征依据行为规则建立行为特征集,利用行为特征集标记对应的静态特征即恶意代码的调用关系图,生成同一家族恶意代码样本对应的控制流图集合;其次生成待检测未知样本对应的控制流图,具体地,对未知样本进行静态分析和动态行为分析,提取行为特征,利用动态行为特征标记对应的静态特征,生成待检测未知样本对应的控制流图;最后,对未知样本和恶意代码家族进行相似性分析,判断该未知样本是否属于当前恶意代码家族的变种恶意代码。
根据上述描述的技术方案,本发明实施例通过对已知恶意代码家族和未知样本进行静态结构分析,建立调用关系图用于描述各个代码段的功能,并设计了API HOOK方案,获取动态行为中关键的函数调用,建立动态行为特征集,用于量化分析某些关键的函数调用,为计算恶意代码的相似度值提供依据。通过计算行为特征的相似度,对未知样本与已知恶意代码家族进行相似性匹配分析,发现恶意代码变种。
本发明实施例中,对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征;对未知样本进行静态分析和动态行为分析,得到所述未知样本的行为特征;计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度,得出至少一个相似度值;所得出的所有相似度值的和大于相似度阈值时,确定所述未知样本为对应家族恶意代码的一个变种。
现有的恶意代码变种检测方法是基于代码特征值的匹配,依赖于恶意代码的静态单一特征,无法应对未知的恶意代码。而本发明实施例基于静态分析与动态行为分析结合的检测方式,更好的应对恶意代码变种,识别率高;相对于现有的技术方案处理速度更快,由于预先建立已知恶意代码家族对应的行为特征集合,可将不同家族的恶意代码进行类别划分,在面对大量未知样本时,通过相似度计算,能够快速发现与不同家族的一致性特征,从而进行分类检测与判定。
第二实施例
为了能更加体现本发明的目的,在本发明第一实施例的基础上,进行进一步的举例说明。
图5为本发明恶意代码变种的检测的方法的第二实施例的流程图,该方法包括:
步骤500:对一个已知的恶意代码家族进行静态分析和动态行为分析,获得对应的行为特征集。
本步骤中,已知的恶意代码家族的行为特征集为Mi,包括静态分析得到的调用关系图和动态分析得到的不同行为操作集合。
可选的,在对恶意代码家族进行动态行为分析时,采用的进程管理方法描述如下:
A1:初始化;
A2:while(true);
A3:CreateProc(para1,para2,…))==false;
A4:判断进程是否执行wait_for_single_obj();
A5:关闭线程close_handle(h_threads),关闭进程close_handle(h_procs);
A6:返回。
步骤501:利用恶意代码家族的动态行为特征集标记调用关系图,生成恶意代码家族的控制流图集合。
本步骤中,利用行为特征集Mi中包含的恶意代码样本动态行为特征集{F1,F2,F3,F4,F5,F6,F7,F8,F9}标记恶意代码样本的静态特征F0中的关键信息与关键的函数调用,生成恶意代码样本对应的控制流图。对同一恶意代码家族生成对应的控制流图集合为{T1,T2,...,Tk,...,Tn},Tk代表本家族中第k个恶意代码样本对应的控制流图。
在实际实施时,控制流图可以是包含恶意代码静态调用关系和动态行为特征的二叉树。
步骤502:对未知样本进行静态分析和动态行为分析,获得对应的调用关系图和行为特征集。
步骤503:利用未知样本的动态行为特征标记调用关系图,生成未知样本的控制流图。
根据上述生成恶意代码家族对应的控制流图的方法,生成未知样本的控制流图Tx。
步骤504:根据恶意代码家族的控制流图集合和未知样本的控制流图,计算未知样本与恶意代码家族的相似度值。
本步骤中,计算未知样本与恶意代码家族的相似度值的具体步骤包括:
利用循环递归的方法,依次比较未知样本的控制流图Tx的左右子图与恶意代码家族的控制流图集合{T1,T2,...,Tk,...,Tn}中每一个控制流图Tk的相似度程度,得到对应的相似度值si,其中,fi为恶意代码家族中一个已知的恶意代码样本的控制流图中的特征基准值,fx为未知样本的控制流图的特征偏差值,fx是基于fi的离散样本,利用最小距离算法计算出特征值的偏离程度。
需要说明的是,在计算Tx与每一个控制流图Tk的相似度值si时,由于控制流图Tk的不同,导致Tx与某些控制流图Tk无法得到有效的相似度值,因此在计算总的相似度值即所有相似度值的累加和时,m取小于等于n的整数。
步骤505:判断相似度值是否大于相似度阈值,如果是,执行步骤506;如果否,执行步骤507。
步骤506:确定未知样本属于当前恶意代码家族的变种。
步骤507:对下一个恶意代码家族进行静态分析和动态行为分析,生成对应的控制流图集合后,执行步骤504。
可以理解的是,所得出的所有相似度值的和小于等于相似度阈值时,确定未知样本不属于当前恶意代码家族的变种恶意代码,则继续判断未知样本是否属于下一个恶意代码家族的变种恶意代码;如果未知样本与所有已知的恶意代码家族均进行匹配分析后,未确定出未知样本的恶意代码类型,可以进一步的判断该未知样本是否属于新的恶意代码变种。
利用上述相似度值的计算方法,计算出未知样本与已知恶意代码家族的相似度值,发现未知样本的一致性特征,识别出未知样本的恶意代码类型。
第三实施例
针对本发明实施例的方法,本发明实施例还提供了一种恶意代码变种的检测的装置。图6为本发明实施例恶意代码变种的检测的装置的组成结构示意图,如图6所示,该装置包括:第一分析模块600、第二分析模块601、处理模块602和确定模块603;其中,
第一分析模块600,用于对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征;
第二分析模块601,用于对未知样本进行静态分析和动态行为分析,得到所述未知样本的行为特征;
处理模块602,用于计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度,得出至少一个相似度值;
确定模块603,用于在所得出的所有相似度值的和大于相似度阈值时,确定所述未知样本为对应家族恶意代码的一个变种。
优选地,第一分析模块600,具体用于通过对同一家族中每一个恶意代码样本进行静态分析,建立对应的调用关系图;在虚拟机VM中动态执行每一个恶意代码样本,并对恶意代码样本的执行过程进行进程监控,得到对应的恶意代码样本的动态行为特征;基于每个恶意代码样本的调用关系图和动态行为特征,得出对应恶意代码样本的行为特征;
第二分析模块601,具体用于对所述未知样本进行静态分析,建立对应的调用关系图;在VM中动态执行未知样本,并对未知样本的执行过程进行进程监控,得到对应的未知样本的动态行为特征;基于未知样本的调用关系图和动态行为特征,得出对应未知样本的行为特征。
优选地,第一分析模块600,还用于利用同一家族每个恶意代码样本的调用关系图和动态行为特征,生成每个恶意代码样本对应的控制流图,建立控制流图集合,所述控制流图集合包含对应家族各个恶意代码样本对应的控制流图;
第二分析模块601,还用于利用未知样本的调用关系图和动态行为特征,生成未知样本对应的控制流图;
未知样本的行为特征与对应家族第i个恶意代码样本的行为特征的相似度为:所述未知样本对应的控制流图与对应家族第i个恶意代码样本对应的控制流图的相似度,i取1至N的整数,N表示对应家族的恶意代码样本数。
优选地,所述动态行为特征用于表示以下至少一项:扫描系统状态、获取系统权限、注册表操作、自删除操作、加解密、进程/线程行为、文件操作、网络访问行为。
优选地,确定模块603,还用于在所得出的所有相似度值的和小于等于相似度阈值时,确定所述未知样本不是对应家族恶意代码的变种。
在实际应用中,第一分析模块600、第二分析模块601、处理模块602和确定模块603均可由位于终端设备中的中央处理器(Central Processing Unit,CPU)、微处理器(MicroProcessor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种恶意代码变种的检测的方法,其特征在于,所述方法包括:
对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征;
对未知样本进行静态分析和动态行为分析,得到所述未知样本的行为特征;
计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度,得出至少一个相似度值;
所得出的所有相似度值的和大于相似度阈值时,确定所述未知样本为对应家族恶意代码的一个变种。
2.根据权利要求1所述的方法,其特征在于,所述对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征,包括:通过对同一家族中每一个恶意代码样本进行静态分析,建立对应的调用关系图;在虚拟机VM中动态执行每一个恶意代码样本,并对恶意代码样本的执行过程进行进程监控,得到对应的恶意代码样本的动态行为特征;基于每个恶意代码样本的调用关系图和动态行为特征,得出对应恶意代码样本的行为特征;
所述对未知样本进行静态分析和动态行为分析,得到所述未知样本的行为特征,包括:对所述未知样本进行静态分析,建立对应的调用关系图;在VM中动态执行未知样本,并对未知样本的执行过程进行进程监控,得到对应的未知样本的动态行为特征;基于未知样本的调用关系图和动态行为特征,得出对应未知样本的行为特征。
3.根据权利要求2所述的方法,其特征在于,在计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度前,所述方法还包括:
利用同一家族每个恶意代码样本的调用关系图和动态行为特征,生成每个恶意代码样本对应的控制流图,建立控制流图集合,所述控制流图集合包含对应家族各个恶意代码样本对应的控制流图;
利用未知样本的调用关系图和动态行为特征,生成未知样本对应的控制流图;
所述未知样本的行为特征与对应家族第i个恶意代码样本的行为特征的相似度为:所述未知样本对应的控制流图与对应家族第i个恶意代码样本对应的控制流图的相似度,i取1至N的整数,N表示对应家族的恶意代码样本数。
4.根据权利要求2所述的方法,其特征在于,所述动态行为特征用于表示以下至少一项:扫描系统状态、获取系统权限、注册表操作、自删除操作、加解密、进程/线程行为、文件操作、网络访问行为。
5.根据权利要求1所述的方法,其特征在于,所得出的所有相似度值的和小于等于相似度阈值时,确定所述未知样本不是对应家族恶意代码的变种。
6.一种恶意代码变种的检测的装置,其特征在于,所述装置包括:第一分析模块、第二分析模块、处理模块和确定模块;其中,
第一分析模块,用于对同一家族的恶意代码样本进行静态分析和动态行为分析,得到本家族的所有恶意代码样本的行为特征;
第二分析模块,用于对未知样本进行静态分析和动态行为分析,得到所述未知样本的行为特征;
处理模块,用于计算所述未知样本的行为特征与对应家族的各个恶意代码样本的行为特征的相似度,得出至少一个相似度值;
确定模块,用于在所得出的所有相似度值的和大于相似度阈值时,确定所述未知样本为对应家族恶意代码的一个变种。
7.根据权利要求6所述的装置,其特征在于,所述第一分析模块,具体用于通过对同一家族中每一个恶意代码样本进行静态分析,建立对应的调用关系图;在虚拟机VM中动态执行每一个恶意代码样本,并对恶意代码样本的执行过程进行进程监控,得到对应的恶意代码样本的动态行为特征;基于每个恶意代码样本的调用关系图和动态行为特征,得出对应恶意代码样本的行为特征;
所述第二分析模块,具体用于对所述未知样本进行静态分析,建立对应的调用关系图;在VM中动态执行未知样本,并对未知样本的执行过程进行进程监控,得到对应的未知样本的动态行为特征;基于未知样本的调用关系图和动态行为特征,得出对应未知样本的行为特征。
8.根据权利要求7所述的装置,其特征在于,所述第一分析模块,还用于利用同一家族每个恶意代码样本的调用关系图和动态行为特征,生成每个恶意代码样本对应的控制流图,建立控制流图集合,所述控制流图集合包含对应家族各个恶意代码样本对应的控制流图;
所述第二分析模块,还用于利用未知样本的调用关系图和动态行为特征,生成未知样本对应的控制流图;
所述未知样本的行为特征与对应家族第i个恶意代码样本的行为特征的相似度为:所述未知样本对应的控制流图与对应家族第i个恶意代码样本对应的控制流图的相似度,i取1至N的整数,N表示对应家族的恶意代码样本数。
9.根据权利要求7所述的装置,其特征在于,所述动态行为特征用于表示以下至少一项:扫描系统状态、获取系统权限、注册表操作、自删除操作、加解密、进程/线程行为、文件操作、网络访问行为。
10.根据权利要求6所述的装置,其特征在于,所述确定模块,还用于在所得出的所有相似度值的和小于等于相似度阈值时,确定所述未知样本不是对应家族恶意代码的变种。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611249503.8A CN108256325A (zh) | 2016-12-29 | 2016-12-29 | 一种恶意代码变种的检测的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611249503.8A CN108256325A (zh) | 2016-12-29 | 2016-12-29 | 一种恶意代码变种的检测的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108256325A true CN108256325A (zh) | 2018-07-06 |
Family
ID=62721703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611249503.8A Pending CN108256325A (zh) | 2016-12-29 | 2016-12-29 | 一种恶意代码变种的检测的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108256325A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110472415A (zh) * | 2018-12-13 | 2019-11-19 | 成都亚信网络安全产业技术研究院有限公司 | 一种恶意程序的确定方法及装置 |
CN110674497A (zh) * | 2019-09-27 | 2020-01-10 | 厦门安胜网络科技有限公司 | 一种恶意程序相似度计算的方法和装置 |
CN110990058A (zh) * | 2019-11-28 | 2020-04-10 | 中国人民解放军战略支援部队信息工程大学 | 软件相似性度量方法及装置 |
CN111027069A (zh) * | 2019-11-29 | 2020-04-17 | 暨南大学 | 恶意软件家族检测方法、存储介质和计算设备 |
CN111339531A (zh) * | 2020-02-24 | 2020-06-26 | 南开大学 | 恶意代码的检测方法、装置、存储介质及电子设备 |
CN112035836A (zh) * | 2019-06-04 | 2020-12-04 | 四川大学 | 一种恶意代码家族api序列挖掘方法 |
CN113918951A (zh) * | 2021-12-16 | 2022-01-11 | 北京微步在线科技有限公司 | 基于抽象语法树的恶意代码检测方法、装置及电子设备 |
CN114064012A (zh) * | 2022-01-18 | 2022-02-18 | 北京汇元网科技股份有限公司 | 一种动静结合的接口代码生成方法、系统及电子设备 |
US20230004645A1 (en) * | 2019-11-28 | 2023-01-05 | Nippon Telegraph And Telephone Corporation | Labeling device and labeling program |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054149A (zh) * | 2009-11-06 | 2011-05-11 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
CN102314561A (zh) * | 2010-07-01 | 2012-01-11 | 电子科技大学 | 基于api hook的恶意代码自动分析方法和系统 |
CN103839005A (zh) * | 2013-11-22 | 2014-06-04 | 北京智谷睿拓技术服务有限公司 | 移动操作系统的恶意软件检测方法和恶意软件检测系统 |
CN103839003A (zh) * | 2012-11-22 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 恶意文件检测方法及装置 |
CN105488409A (zh) * | 2014-12-31 | 2016-04-13 | 哈尔滨安天科技股份有限公司 | 一种检测恶意代码家族变种及新家族的方法及系统 |
CN105512555A (zh) * | 2014-12-12 | 2016-04-20 | 哈尔滨安天科技股份有限公司 | 基于文件字符串聚类的划分同源家族和变种的方法及系统 |
-
2016
- 2016-12-29 CN CN201611249503.8A patent/CN108256325A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054149A (zh) * | 2009-11-06 | 2011-05-11 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
CN102314561A (zh) * | 2010-07-01 | 2012-01-11 | 电子科技大学 | 基于api hook的恶意代码自动分析方法和系统 |
CN103839003A (zh) * | 2012-11-22 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 恶意文件检测方法及装置 |
CN103839005A (zh) * | 2013-11-22 | 2014-06-04 | 北京智谷睿拓技术服务有限公司 | 移动操作系统的恶意软件检测方法和恶意软件检测系统 |
CN105512555A (zh) * | 2014-12-12 | 2016-04-20 | 哈尔滨安天科技股份有限公司 | 基于文件字符串聚类的划分同源家族和变种的方法及系统 |
CN105488409A (zh) * | 2014-12-31 | 2016-04-13 | 哈尔滨安天科技股份有限公司 | 一种检测恶意代码家族变种及新家族的方法及系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110472415B (zh) * | 2018-12-13 | 2021-08-10 | 成都亚信网络安全产业技术研究院有限公司 | 一种恶意程序的确定方法及装置 |
CN110472415A (zh) * | 2018-12-13 | 2019-11-19 | 成都亚信网络安全产业技术研究院有限公司 | 一种恶意程序的确定方法及装置 |
CN112035836A (zh) * | 2019-06-04 | 2020-12-04 | 四川大学 | 一种恶意代码家族api序列挖掘方法 |
CN110674497A (zh) * | 2019-09-27 | 2020-01-10 | 厦门安胜网络科技有限公司 | 一种恶意程序相似度计算的方法和装置 |
CN110674497B (zh) * | 2019-09-27 | 2021-07-02 | 厦门安胜网络科技有限公司 | 一种恶意程序相似度计算的方法和装置 |
CN110990058A (zh) * | 2019-11-28 | 2020-04-10 | 中国人民解放军战略支援部队信息工程大学 | 软件相似性度量方法及装置 |
US20230004645A1 (en) * | 2019-11-28 | 2023-01-05 | Nippon Telegraph And Telephone Corporation | Labeling device and labeling program |
CN111027069A (zh) * | 2019-11-29 | 2020-04-17 | 暨南大学 | 恶意软件家族检测方法、存储介质和计算设备 |
CN111027069B (zh) * | 2019-11-29 | 2022-04-08 | 暨南大学 | 恶意软件家族检测方法、存储介质和计算设备 |
CN111339531A (zh) * | 2020-02-24 | 2020-06-26 | 南开大学 | 恶意代码的检测方法、装置、存储介质及电子设备 |
CN111339531B (zh) * | 2020-02-24 | 2023-12-19 | 南开大学 | 恶意代码的检测方法、装置、存储介质及电子设备 |
CN113918951A (zh) * | 2021-12-16 | 2022-01-11 | 北京微步在线科技有限公司 | 基于抽象语法树的恶意代码检测方法、装置及电子设备 |
CN114064012A (zh) * | 2022-01-18 | 2022-02-18 | 北京汇元网科技股份有限公司 | 一种动静结合的接口代码生成方法、系统及电子设备 |
CN114064012B (zh) * | 2022-01-18 | 2022-03-29 | 北京汇元网科技股份有限公司 | 一种动静结合的接口代码生成方法、系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108256325A (zh) | 一种恶意代码变种的检测的方法和装置 | |
Ding et al. | Asm2vec: Boosting static representation robustness for binary clone search against code obfuscation and compiler optimization | |
Poudyal et al. | A framework for analyzing ransomware using machine learning | |
Feng et al. | A novel dynamic android malware detection system with ensemble learning | |
Ficco | Malware analysis by combining multiple detectors and observation windows | |
Zhang et al. | Peeping Tom in the Neighborhood: Keystroke Eavesdropping on Multi-User Systems. | |
Bao et al. | {BYTEWEIGHT}: Learning to recognize functions in binary code | |
Zhang et al. | Program logic based software plagiarism detection | |
Xu et al. | A sharper sense of self: Probabilistic reasoning of program behaviors for anomaly detection with context sensitivity | |
US20160021174A1 (en) | Computer implemented method for classifying mobile applications and computer programs thereof | |
D’Angelo et al. | Association rule-based malware classification using common subsequences of API calls | |
CN108123956B (zh) | 基于Petri网的密码误用漏洞检测方法及系统 | |
EP3350741B1 (en) | Detecting software attacks on processes in computing devices | |
TW201629832A (zh) | 一種識別病毒變種的方法及裝置 | |
US9721120B2 (en) | Preventing unauthorized calls to a protected function | |
Nguyen et al. | Detecting repackaged android applications using perceptual hashing | |
CN105760787A (zh) | 用于检测随机存取存储器中的恶意代码的系统及方法 | |
Faruki et al. | Droidolytics: robust feature signature for repackaged android apps on official and third party android markets | |
CN103559438A (zh) | 进程识别方法及系统 | |
Guerra-Manzanares et al. | In-depth Feature Selection and Ranking for Automated Detection of Mobile Malware. | |
CN109241706B (zh) | 基于静态胎记的软件抄袭检测方法 | |
CN113127872B (zh) | 一种判别对抗网络的恶意应用检测方法和系统 | |
Malik | Android system call analysis for malicious application detection | |
CN114416464A (zh) | 一种可信进程的监管方法及存储介质 | |
US12001545B2 (en) | Detecting stack pivots using stack artifact verification |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180706 |