发明内容
基于上述问题,本发明提出一种基于调用依赖关系识别攻击同源的方法及***,能够识别无网络行为且无法确认网络行为的恶意代码的同源性,快速对离散的恶意代码进行攻击者同源判定。
本发明通过如下方法实现:
一种基于调用依赖关系识别攻击同源的方法,包括:
建立调用依赖关系特征库;
分析未知攻击组织的恶意代码;
提取未知攻击组织的恶意代码的调用依赖关系;
将提取的调用依赖关系与调用依赖关系特征库进行关联分析;
获取关联分析结果,并进行解析,获取与未知攻击组织的恶意代码具有依赖调用关系的已知攻击组织的恶意代码,若所述已知攻击组织的恶意代码调用了所述未知攻击组织的恶意代码,则所述未知攻击组织的恶意代码与已知攻击组织的恶意代码同源;
所述调用依赖关系包括:API调用依赖、下载调用依赖、进程调用依赖及加载调用依赖。
所述的方法中,所述建立调用依赖关系特征库具体为:
分析已知攻击组织的恶意代码;
提取恶意代码的调用依赖关系,包括:
提取API调用依赖关系:对恶意代码结构的导出导入表进行解析,提取非***API函数名称列表;
提取下载调用依赖关系:对恶意代码下载操作函数进行解析,提取恶意代码下载的文件名称列表;
提取进程调用依赖关系:对恶意代码的进程操作函数进行解析,提取恶意代码操作进程时调用的文件名称列表;
提取加载调用依赖关系:对恶意代码加载操作函数进行解析,提取恶意代码加载第三方模块的模块名称列表;
将上述提取的调用依赖关系存储在调用依赖关系特征库中;所述调用依赖关系特征库中还包括:攻击组织信息。因此所述调用依赖关系特征库中包括:攻击组织信息、恶意代码调用的导出、导入函数名列表、下载的文件名称列表、操作进程调用的文件名列表及加载的模块名称列表。
所述的方法中,所述分析已知攻击组织的恶意代码,具体为:
对已知攻击组织的恶意代码进行静态分析,按照恶意代码结构进行内容遍历,解析出恶意代码的所有可用结构或字段的信息。
所述的方法中,分析未知攻击组织的恶意代码,具体为:
对未知攻击组织的恶意代码进行静态分析,按照恶意代码结构进行内容遍历,解析出恶意代码的所有可用结构或字段的信息。
本发明还提出一种基于调用依赖关系识别攻击同源的***,包括:
特征库模块,建立调用依赖关系特征库;
分析模块,分析未知攻击组织的恶意代码;
提取模块,提取未知攻击组织的恶意代码的调用依赖关系;
关联分析模块,将提取的调用依赖关系与调用依赖关系特征库进行关联分析;
解析模块,获取关联分析结果,并进行解析,获取与未知攻击组织的恶意代码具有依赖调用关系的已知攻击组织的恶意代码,若所述已知攻击组织的恶意代码调用了所述未知攻击组织的恶意代码,则所述未知攻击组织的恶意代码与已知攻击组织的恶意代码同源;所述调用依赖关系包括:API调用依赖、下载调用依赖、进程调用依赖及加载调用依赖。
所述的***中,所述建立调用依赖关系特征库具体为:
分析已知攻击组织的恶意代码;
提取恶意代码的调用依赖关系,包括:
提取API调用依赖关系:对恶意代码结构的导出导入表进行解析,提取非***API函数名称列表;
提取下载调用依赖关系:对恶意代码下载操作函数进行解析,提取恶意代码下载的文件名称列表;
提取进程调用依赖关系:对恶意代码的进程操作函数进行解析,提取恶意代码操作进程时调用的文件名称列表;
提取加载调用依赖关系:对恶意代码加载操作函数进行解析,提取恶意代码加载第三方模块的模块名称列表;
将上述提取的调用依赖关系存储在调用依赖关系特征库中;所述调用依赖关系特征库中还包括:攻击组织信息。因此所述调用依赖关系特征库中包括:攻击组织信息、恶意代码调用的导出、导入函数名列表、下载的文件名称列表、操作进程调用的文件名列表及加载的模块名称列表。
所述的***中,所述分析已知攻击组织的恶意代码,具体为:
对已知攻击组织的恶意代码进行静态分析,按照恶意代码结构进行内容遍历,解析出恶意代码的所有可用结构或字段的信息。
所述的***中,分析未知攻击组织的恶意代码,具体为:
对未知攻击组织的恶意代码进行静态分析,按照恶意代码结构进行内容遍历,解析出恶意代码的所有可用结构或字段的信息。
一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的任一基于调用依赖关系识别攻击同源的方法。
对于没有网络行为、且无法确认网络行为的恶意代码是无法通过网络行为中所使用的基础设施(IP、域名等)是否为同一攻击者所有来判定攻击者同源性。但这些恶意代码在代码结构层面存在依赖调用关系。本发明方法通过对恶意代码之间的调用依赖关系进行分析判定。通过构建攻击者所使用的恶意代码的调用依赖关系建立特征库,来快速对攻击者未知的离散的恶意代码进行调用依赖关系分析,自动关联离散恶意代码的攻击者。利用恶意代码之间的依赖调用关系来判别攻击者的同源性。如某个攻击者未知的恶意代码的导出函数被某个已确认组织的恶意代码所调用,则可判定二者具有攻击组织同源性。
本发明优势在于:无需动态虚拟执行恶意代码,仅通过静态深入分析恶意代码,提取调用依赖关系即可进行攻击组织同源判定;通过建立海量调用依赖关系特征库,可自动化关联离散样本,快速准确判定攻击组织,为人工分析节省劳力和时间成本。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。
一种基于调用依赖关系识别攻击同源的方法,如图1所示,包括:
S101:建立调用依赖关系特征库;
S102:分析未知攻击组织的恶意代码;
S103:提取未知攻击组织的恶意代码的调用依赖关系,包括但不限于API调用依赖、下载调用依赖、进程调用依赖及加载调用依赖;
S104:将提取的调用依赖关系与调用依赖关系特征库进行关联分析;
S105:获取关联分析结果,并进行解析:获取与未知攻击组织的恶意代码具有依赖调用关系的已知攻击组织的恶意代码,则所述未知攻击组织的恶意代码与已知攻击组织的恶意代码同源。如两个程序之间存在相互调用依赖关系,比如程序A调用程序B,则A和B具有调用依赖关系,即可判定A与B来自于同一个攻击组织,具有攻击组织同源性。
所述的方法中,所述调用依赖关系包括:API调用依赖,即调用的导出导入函数名列表;下载调用依赖,即下载的文件名称;进程调用依赖,即操作进程对应的文件名称;加载调用依赖,及加载的模块名称。
所述的方法中,所述建立调用依赖关系特征库,如图2所示,具体为:
S201:分析已知攻击组织的恶意代码;
S202:提取恶意代码的调用依赖关系,包括:
S203:提取API调用依赖关系:对恶意代码结构的导出导入表进行解析,提取非***API函数名称列表;
S204:提取下载调用依赖关系:对恶意代码下载操作函数进行解析,提取恶意代码下载的文件名称列表;
S205:提取进程调用依赖关系:对恶意代码的进程操作函数进行解析,提取恶意代码操作进程时调用的文件名称列表;
S206:提取加载调用依赖关系:对恶意代码加载操作函数进行解析,提取恶意代码加载第三方模块的模块名称列表;
S207:将上述提取的调用依赖关系存储在调用依赖关系特征库中;所述调用依赖关系特征库中还包括:攻击组织信息。
因此所述调用依赖关系特征库中包括:攻击组织信息、恶意代码调用的导出、导入函数名列表、下载的文件名称列表、操作进程调用的文件名列表及加载的模块名称列表等一切调用依赖关系的列表。
所述的方法中,所述分析已知攻击组织的恶意代码,具体为:
对已知攻击组织的恶意代码进行静态分析,按照恶意代码结构进行内容遍历,解析出恶意代码的所有可用结构或字段的信息。
所述的方法中,分析未知攻击组织的恶意代码,具体为:
对未知攻击组织的恶意代码进行静态分析,按照恶意代码结构进行内容遍历,解析出恶意代码的所有可用结构或字段的信息。
以API调用依赖关系判定攻击者同源性为例:假设已知恶意代码1,2都使用了文件4导出的函数d009,而未知恶意代码3也是使用了文件4的导出函数d009,所以文件1,2,3与4具有相互依赖调用关系,说明1,2,3来自同一攻击者,具有攻击者同源性。以上只是列举了利用API调用依赖判定攻击者同源性的示例,对于下载调用依赖、进程调用依赖、加载调用依赖均可以用来判定攻击者同源性。
本发明通过对已知攻击者的恶意代码进行深度分析,建立海量的恶意代码调用依赖关系特征库,对攻击者未知的离散样本提取调用依赖关系列表,然后在恶意代码调用依赖关系特征库进行关联分析,最后确定离散恶意代码的攻击者。
本发明还提出一种基于调用依赖关系识别攻击同源的***,如图3所示,包括:
特征库模块301,建立调用依赖关系特征库;
分析模块302,分析未知攻击组织的恶意代码;
提取模块303,提取未知攻击组织的恶意代码的调用依赖关系;
关联分析模块304,将提取的调用依赖关系与调用依赖关系特征库进行关联分析;
解析模块305,获取关联分析结果,并进行解析,获取与未知攻击组织的恶意代码具有依赖调用关系的已知攻击组织的恶意代码,则所述未知攻击组织的恶意代码与已知攻击组织的恶意代码同源。
所述的***中,所述调用依赖关系包括:API调用依赖、下载调用依赖、进程调用依赖及加载调用依赖。
所述的***中,所述建立调用依赖关系特征库具体为:
分析已知攻击组织的恶意代码;
提取恶意代码的调用依赖关系,包括:
提取API调用依赖关系:对恶意代码结构的导出导入表进行解析,提取非***API函数名称列表;
提取下载调用依赖关系:对恶意代码下载操作函数进行解析,提取恶意代码下载的文件名称列表;
提取进程调用依赖关系:对恶意代码的进程操作函数进行解析,提取恶意代码操作进程时调用的文件名称列表;
提取加载调用依赖关系:对恶意代码加载操作函数进行解析,提取恶意代码加载第三方模块的模块名称列表;
将上述提取的调用依赖关系存储在调用依赖关系特征库中;所述调用依赖关系特征库中还包括:攻击组织信息。因此所述的***中,所述调用依赖关系特征库中包括:攻击组织信息、恶意代码调用的导出、导入函数名列表、下载的文件名称列表、操作进程调用的文件名列表及加载的模块名称列表。
所述的***中,所述分析已知攻击组织的恶意代码,具体为:
对已知攻击组织的恶意代码进行静态分析,按照恶意代码结构进行内容遍历,解析出恶意代码的所有可用结构或字段的信息。
所述的***中,分析未知攻击组织的恶意代码,具体为:
对未知攻击组织的恶意代码进行静态分析,按照恶意代码结构进行内容遍历,解析出恶意代码的所有可用结构或字段的信息。
一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的任一基于调用依赖关系识别攻击同源的方法。
对于没有网络行为、且无法确认网络行为的恶意代码是无法通过网络行为中所使用的基础设施(IP、域名等)是否为同一攻击者所有来判定攻击者同源性。但这些恶意代码在代码结构层面存在依赖调用关系。本发明方法通过对恶意代码之间的调用依赖关系进行分析判定。通过构建攻击者所使用的恶意代码的调用依赖关系建立特征库,来快速对攻击者未知的离散的恶意代码进行调用依赖关系分析,自动关联离散恶意代码的攻击者。利用恶意代码之间的依赖调用关系来判别攻击者的同源性。如某个攻击者未知的恶意代码的导出函数被某个已确认组织的恶意代码所调用,则可判定二者具有攻击组织同源性。
本发明优势在于:无需动态虚拟执行恶意代码,仅通过静态深入分析恶意代码,提取调用依赖关系即可进行攻击组织同源判定;通过建立海量调用依赖关系特征库,可自动化关联离散样本,快速准确判定攻击组织,为人工分析节省劳力和时间成本。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。