CN112035836B - 一种恶意代码家族api序列挖掘方法 - Google Patents

一种恶意代码家族api序列挖掘方法 Download PDF

Info

Publication number
CN112035836B
CN112035836B CN201910480642.9A CN201910480642A CN112035836B CN 112035836 B CN112035836 B CN 112035836B CN 201910480642 A CN201910480642 A CN 201910480642A CN 112035836 B CN112035836 B CN 112035836B
Authority
CN
China
Prior art keywords
api
frequent
sequence
family
api sequence
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
CN201910480642.9A
Other languages
English (en)
Other versions
CN112035836A (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.)
Sichuan University
Original Assignee
Sichuan University
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 Sichuan University filed Critical Sichuan University
Priority to CN201910480642.9A priority Critical patent/CN112035836B/zh
Publication of CN112035836A publication Critical patent/CN112035836A/zh
Application granted granted Critical
Publication of CN112035836B publication Critical patent/CN112035836B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F21/563Static detection by source code analysis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明是运用模式挖掘技术挖掘恶意代码家族的家族最大频繁API序列,并将其作为家族行为特征。同一恶意代码家族的恶意行为模式具有相同或相似的行为模式,恶意行为的实现必然包含关键API调用的组合,本发明用于挖掘恶意代码家族的公共频繁API序列特征,最大频繁API序列可以恢复出所有频繁API序列,同时本发明将家族内部行为演化性考虑在内,根据最大API序列在其频繁时间段的支持率进行挖掘,可以挖掘出更全面的家族API序列。

Description

一种恶意代码家族API序列挖掘方法
技术领域
本发明主要运用序列模式挖掘技术对恶意代码家族的家族API序列。首先提出一种挖掘家族样本动态API序列集的最大频繁API序列的方法,然后根据家族内部特征存在演化性,将样本的时间特征考虑在内,根据最大频繁API序列在其频繁时间段的支持率进行挖掘,可以挖掘出更全面的家族API序列。
背景技术
新增恶意代码中的绝大多数都是有家族性的,它们虽然有不同的代码,但它们在恶意行为模式上比较固定,拥有相同的行为模式,这说明它们中很多具有相同的目的和源。恶意代码开发者越来越趋向团队合作,通过不断更新恶意代码家族的代码来逃避杀毒软件和对抗新的分析技术,恶意代码家族内部存在演化性,其恶意行为特征也随时间在发生变化。 基于API调用序列特征并通过机器学习方法可以对恶意代码进行分类或者聚类,如何挖掘出恶意代码中具有代表性的恶意行为特征是这类方法的关键。
针对当前绝大多数新增恶意代码属于已知家族这一特点,基于家族特征的恶意代码检测是一种很不错的方法。当前基于家族特征的恶意代码检测方法虽然具有较好的效果,但是大多数挖掘家族特征的方法没有重视家族内部行为特征的演化性,所以可以进一步优化。如果能考虑到家族内部特征的差异性,能按照时间段进行区分,可以挖掘出更全面的家族API序列。本发明在传统的方法上提出改进,能够挖掘出更好的家族特征。
发明内容
本发明是通过Cuckoo恶意代码动态分析系统得到家族样本集的动态分析结果,提取样本动态API序列,最后得到家族样本的动态API序列集。提出从家族样本动态API序列集中挖掘出最大频繁API序列的方法,该方法不考虑API函数的连续性,注重的是它们之间的顺序组合关系,其不仅适用于不连续的API序列集,同时也适用于不同长度的API序列集,并且保留了原API序列中API函数的顺序性。在最大频繁API序列的基础上考虑时间因素,进一步提出本文的家族API序列挖掘方法。
采用cuckoo动态分析系统获取家族动态API序列集,使用cuckoo动态分析系统分析家族样本,得到包含API调用的动态分析记录文件;从分析记录文件中按照调用顺序提取API调用序列,得到动态API序列;提取样本的创建时间pe_timestamp,为动态API序列进行时间标记;在进行模式挖掘之前,需要为每个动态API序列进行剪枝;本发明通过去重、筛选、去重三步对动态API序列完成剪枝。
从家族样本的动态API序列集中挖掘出家族近似频繁API序列,从动态API序列集中找出所有支持度大于初始阈值Supmin的最大API序列。
根据其频繁时间段支持率,从家族最大近似频繁API序列集中找出所有支持率大于或等于最小支持率阈值RateOfSupmin的,即为本发明挖掘的家族API序列。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明提供的家族API序列挖掘的框架图。
图2是本发明提供的动态API序列剪枝的流程图。
图3是本发明提供的搜索可扩展项的示意图。
图4是本发明提供的最大频繁API序列挖掘的流程图。
图5是本发明提供的一个简单的去离群时间点的示意图。
图6是本发明提供的家族API序列挖掘的流程图。
具体实施方式
为了使本发明的实施目的、技术方案以及优点更加清晰,下面将结合本发明的说明书附图,对本发明进行简要的描述。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
请参照图1,图1是本发明的系统框架图。主要分为家族最大频繁API序列挖掘、家族API序列挖掘两大模块列,三大模块分别在图1的虚线框中。
动态API序列提取:基于虚拟机的Cuckoo恶意代码动态分析系统是通过挂钩的方法得到分析文件的函数调用。Cuckoo是一种沙盒分析技术,它在隔离控制环境中自动地动态执行软件程序,并提取其运行过程中的进程行为、网络行为、文件行为等动态行为。Cuckoo客户端程序主要是执行并监控待分析文件,得到文件的分析报告,分析报告里包含API调用和创建时间等关键信息。将分析的记录文件报告传回Cuckoo的管理端。
动态API序列剪枝:图2展示了动态API序列剪枝的流程。由于恶意软件的动态API序列往往较长,其执行过程中会有循环迭代这种函数存在,如while、for这些函数。动态API序列常常存在大量连续重复出现的API子序列,恶意代码要完成恶意行为必须执行关键的API函数,而恶意代码常常会插入无关API函数来对检测进行干扰,这些都会造成在模式挖掘过程中会产生大量冗余且无益的序列,大大增加特征挖掘过程的时间消耗,为了避免家族恶意样本动态API序列中大量连续重复出现的API子序列对家族关键API函数判定造成影响,分三步对动态API序列进行剪枝。
步骤一,对家族中所有动态API序列进行去重,只需要保留连续重复出现的API子序列中的一个子序列。
步骤二,筛选出重后动态API序列中的非关键的API函数保留关键API函数,然后从去重后的家族动态API序列集中统计出家族所有的API函数调用并组成集合,计算出每个API函数调用ak与该恶意代码家族f的相关性R(ak,f),筛选出该家族中R(ak,f)>0.5的关键API函数调用并存储在一个集合里,即家族关键API调用函数集合,遍历该家族所以样本动态API序列中,删除每个动态API序列中不属于家族关键API函数调用集合里的API函数,得到筛选后的动态API序列集。
步骤三,再一次用与第一步同样的去重方法对筛选后API序列中连续重复出现的API子序列进行去重,即可得到最终剪枝后的动态API序列。
设计了一种家族最大频繁API序列挖掘算法MFSM(Maximum Frequent SequencesMining)。为了减少存储空间并降低算法复杂度,本文采用字典来记录家族i-项频繁API序列的可扩展项信息,字典名为家族名,以{可扩展项:{S:address1, S2:address2, …, Sj:addressj}, …}的形式存储其信息,Sj与addressj分别指包含该可扩展项的动态API序列和其在对应动态API序列中的位置信息。例如家族字典f = {可扩展项:{2:234, 8:56, 9:89}, …}中的可扩展项在动态API序列编号为2、8和9中,分别在第234、第56和第89个API函数位置。算法MFSM采用深度优先搜索的方法来遍历序列模式的搜索空间,图3展示了搜索可扩展项的示意图。下面对搜索过程进行介绍。
首先遍历家族f的动态API序列集找出所有的1-项频繁API序列,它们都为API函数,记为家族频繁API函数,所有的i-项频繁API序列必然这些函数组成。从家族频繁API函数中搜索所有1-项频繁API子序列对应的扩展项并将其信息存储于家族字典f。
然后以同样的方法搜索2-项频繁API序列的可扩展项并存储其信息。
最后按照深度优先搜索的顺序迭代搜索出所有i-项频繁API序列,直到可扩展项为“∅”,时就停止搜索。搜索过程中可扩展项“∅”频繁API子序列即为最大频繁API序列,将最大频繁API序列及其信息存储于字典f′,以{最大频繁API序列:[所有包含该最大频繁API序列的动态API序列], …}的形式存储其信息,在存储之前需要对每个最大频繁API序列进行过滤检测,在当前字典f′中是否存在超集和子序列。图4展示了最大频繁API序列挖掘算法的流程。
为每个家族动态API序列标注时间,根据Cuckoo恶意代码动态分析系统得到的恶意样本分析报告中的pe_timestamp可以知道家族中每个样本文件的创建时间,从报告中提取创建时间信息,以字符串的形式表示,如2005年5月3号标注为20050503,时间只精确到天,并按照时间大小顺序进行编号(编号为1, 2, 3…),为每个动态API序列标注时间字符串。
挖掘最大近似频繁API序列并确定其频繁时段,通过使用家族最大频繁API序列算法并降低支持度阈值Supmin,先挖掘出家族最大近似频繁序列并将其信息存储于字典f′,然后用一个s_list记录包含相应家族最大近似频繁API序列的每个动态API序列的时间信息,并顺序存储这些动态API序列的时间信息。
去掉每个时间序列两端离散的时间点,即离群时间点,去除离群时间点之后可以认为s频繁出现在s_list第一个时间点到最后一个时间点之间,即前后两个时间端点确定的时间段为家族最大近似频繁API序列的频繁时段。设计一种去时间序列两端离群时间点的方法,其步骤为:首先求出时间序列中相邻两个时间点间的距离并用一个Td_list进行记录。然后计算出Td_list中时间距离的平均值,然后从时间序列左端点开始向中间依次删除节点直到端点与其右相邻的时间点距离不大于平均值时停止删除左端点,用同样的方法从时间序列的右端去离群点。图5展示了一个简单的去离群时间点的示意图。
使用最大频繁API序列挖掘算法,通过降低阈值Supmin挖掘出家族最大近似频繁API序列。
以最大频繁API序列在其频繁出现的时间段中的支持率RateOfSup来对其频繁性进行判定。挖掘最大近似频繁API序列并确定其频繁时段,首先求出时间序列中相邻两个时间点间的距离并用一个Td_list进行记录。然后计算出Td_list中时间距离的平均值,然后从时间序列左端点开始向中间依次删除节点直到端点与其右相邻的时间点距离不大于平均值时停止删除左端点,用同样的方法从时间序列的右端去离群点,即可得到其频繁时间段。
最大频繁API序列s在恶意代码家族样本集f中的频繁区间支持率为RateOfSup。删除家族最大近似频繁API序列中所有支持率小于最小支持率阈值RateOfSupmin的API序列,剩下的即为本文要挖掘的家族最大频繁API序列,即家族API序列。
家族API序列也是家族最大的频繁API序列,其可以恢复出所有的频繁API序列,根据API序列在频繁时段中的支持率进行挖掘可以更完整地保留家族不同时间段独有的最大频繁API序列信息。为家族API序列挖掘的流程图,其中支持率RateOfSup指对家族最大近似频繁API序列去离群点后在其频繁时间段的支持率。家族API序列挖掘模块是在家族最大近似频繁API序列的基础上进行筛选的。

Claims (4)

1.一种恶意代码家族API序列挖掘方法,其特征在于以下步骤:
步骤一:用Cuckoo动态分析系统得到恶意代码家族样本集的动态API序列及时间信息;
步骤二:对动态API序列进行剪枝;
步骤三:从剪枝后的动态API序列集中挖掘出最大近似频繁API序列;
步骤四:确定最大近似频繁API序列的频繁区间;
步骤五:根据最大近似频繁API序列在其频繁区间的支持率挖掘出家族API序列;
所述步骤三和步骤四具体包括:
设计了一种家族最大频繁API序列挖掘算法MFSM,首先遍历家族f的动态API序列集找出所有的1-项频繁API序列,从家族频繁API函数中搜索所有1-项频繁API子序列对应的扩展项并将其信息存储于家族字典f;
然后以同样的方法搜索2-项频繁API序列的可扩展项并存储其信息;
最后按照深度优先搜索的顺序迭代搜索出所有i-项频繁API序列,直到可扩展项为
Figure FDA0004119411740000011
时就停止搜索,搜索过程中可扩展项
Figure FDA0004119411740000012
频繁API子序列即为最大频繁API序列,将最大频繁API序列及其信息存储于字典f′,以{最大频繁API序列:[所有包含该最大频繁API序列的动态API序列],…}的形式存储其信息;
挖掘最大近似频繁API序列并确定其频繁时段,通过使用家族最大频繁API序列算法并降低支持度阈值Supmin,先挖掘出家族最大近似频繁序列并将其信息存储于字典f′,然后用一个s_list记录包含相应家族最大近似频繁API序列的每个动态API序列的时间信息,并顺序存储这些动态API序列的时间信息;
去掉每个时间序列两端离散的时间点,即离群时间点,去除离群时间点之后可以认为s频繁出现在s_list第一个时间点到最后一个时间点之间,即前后两个时间端点确定的时间段为家族最大近似频繁API序列的频繁时段。
2.根据权利要求1所述的一种恶意代码家族API序列挖掘方法,其特征在于步骤一中Cuckoo动态分析系统的搭建,提取分析报告的API序列和时间信息。
3.根据权利要求1所述的一种恶意代码家族API序列挖掘方法,其特征在于步骤二中对动态API序列中重复出现的API子序列进行去重和关键API函数的筛选。
4.根据权利要求1所述的一种恶意代码家族API序列挖掘方法,其特征在于步骤五中按照最大近似频繁API序列在其频繁区间中的支持率进行频繁性判断,保留支持率大于最小支持率阈值RateOfSup min的最大近似频繁API序列。
CN201910480642.9A 2019-06-04 2019-06-04 一种恶意代码家族api序列挖掘方法 Active CN112035836B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910480642.9A CN112035836B (zh) 2019-06-04 2019-06-04 一种恶意代码家族api序列挖掘方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910480642.9A CN112035836B (zh) 2019-06-04 2019-06-04 一种恶意代码家族api序列挖掘方法

Publications (2)

Publication Number Publication Date
CN112035836A CN112035836A (zh) 2020-12-04
CN112035836B true CN112035836B (zh) 2023-04-14

Family

ID=73576575

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910480642.9A Active CN112035836B (zh) 2019-06-04 2019-06-04 一种恶意代码家族api序列挖掘方法

Country Status (1)

Country Link
CN (1) CN112035836B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104866765A (zh) * 2015-06-03 2015-08-26 康绯 基于行为特征相似性的恶意代码同源性分析方法
CN106384050A (zh) * 2016-09-13 2017-02-08 哈尔滨工程大学 一种基于最大频繁子图挖掘的动态污点分析方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9032544B2 (en) * 2010-12-22 2015-05-12 Private Access, Inc. System and method for controlling communication of private information over a network
CN105138916B (zh) * 2015-08-21 2018-02-02 中国人民解放军信息工程大学 基于数据挖掘的多轨迹恶意程序特征检测方法
CN106682515B (zh) * 2016-12-15 2019-10-18 中国人民解放军国防科学技术大学 恶意代码分析中行为能力的度量方法
CN108256325A (zh) * 2016-12-29 2018-07-06 中移(苏州)软件技术有限公司 一种恶意代码变种的检测的方法和装置
CN106951780B (zh) * 2017-02-08 2019-09-10 中国科学院信息工程研究所 重打包恶意应用的静态检测方法和装置
CN107169355B (zh) * 2017-04-28 2020-05-08 北京理工大学 一种蠕虫同源性分析方法和装置
CN107180191A (zh) * 2017-05-03 2017-09-19 北京理工大学 一种基于半监督学习的恶意代码分析方法和系统
CN109190653B (zh) * 2018-07-09 2020-06-05 四川大学 基于半监督密度聚类的恶意代码家族同源性分析方法
CN109190372B (zh) * 2018-07-09 2021-11-12 四川大学 一种基于字节码的JavaScript恶意代码检测方法
CN109284296A (zh) * 2018-10-24 2019-01-29 北京云睿科技有限公司 一种大数据pb级分布式信息存储与检索平台
CN109753800B (zh) * 2019-01-02 2023-04-07 重庆邮电大学 融合频繁项集与随机森林算法的Android恶意应用检测方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104866765A (zh) * 2015-06-03 2015-08-26 康绯 基于行为特征相似性的恶意代码同源性分析方法
CN106384050A (zh) * 2016-09-13 2017-02-08 哈尔滨工程大学 一种基于最大频繁子图挖掘的动态污点分析方法

Also Published As

Publication number Publication date
CN112035836A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
CN109190653B (zh) 基于半监督密度聚类的恶意代码家族同源性分析方法
CN106126543B (zh) 一种关系型数据库到MongoDB的模型转换和数据迁移方法
CN111722984B (zh) 告警数据处理方法、装置、设备及计算机存储介质
CN109376196B (zh) 一种redo日志批量同步方法及装置
CN107291858B (zh) 一种基于字符串后缀的数据索引方法
CN112347767B (zh) 一种文本处理方法、装置及设备
CN106203631B (zh) 描述型多维度事件序列的并行频繁情节挖掘方法与系统
CN112287118B (zh) 事件模式频繁子图挖掘与预测方法
CN110134663B (zh) 组织结构数据处理方法、装置、电子设备
CN115001753A (zh) 一种关联告警的分析方法、装置、电子设备及存储介质
CN111831785A (zh) 敏感词检测方法、装置、计算机设备及存储介质
CN106844553B (zh) 基于样本数据的数据探测和扩充方法及装置
US11580101B2 (en) Method and apparatus for generating context category dataset
CN112035836B (zh) 一种恶意代码家族api序列挖掘方法
CN115114627B (zh) 一种恶意软件检测方法及装置
CN108664499B (zh) 数据存储的方法、装置及设备
CN110598408B (zh) 一种基于函数层编码的App克隆检测方法及系统
CN115827716A (zh) 信息挖掘方法、装置、设备及可读存储介质、程序产品
CN104516978B (zh) 用于数据库入侵检测领域的压缩中间候选频繁项集的方法
US11809440B2 (en) Universal pre-processor for extracting and joining data
CN111144471B (zh) 一种检测方法、装置、设备及存储介质
CN115622802B (zh) 攻击溯源方法、装置、设备和存储介质
CN118689532A (zh) 基于漏洞补丁的代码克隆漏洞检测方法及系统
JP5735326B2 (ja) It障害検知・検索装置及びプログラム
CN109766367B (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