发明内容
本申请实施例的目的在于提供一种恶意文档的静态特征提取方法及装置,用以解决现有的静态特征检测方法存在特征提取不够全面深入的问题。
本申请实施例提供的一种恶意文档的静态特征提取方法,包括:
获取文档的原始静态数据;原始静态数据的类别包括宏语言代码、动态数据交换指令、对象组件、嵌入文件、外部链接、类标识符、重复程序对象和闪存插件中的至少一种;文档包括恶意或良性的标签;
对每一类别的原始静态数据,进行恶意特征提取,获取恶意特征的特征名以及特征名对应的频次信息;
对每一恶意特征,根据恶意特征的特征名、特征名对应的频次信息和对应文档的标签,利用信息增益算法,计算恶意特征的信息增益值;
将信息增益值大于阈值的恶意特征,作为恶意文档的静态特征。
上述技术方案中,获取的文档的原始静态数据的类别包括宏语言代码、动态数据交换指令、对象组件、嵌入文件、外部链接、类标识符、重复程序对象和闪存插件,对每一类别的原始静态数据进行恶意特征提取,然后根据提取的所有恶意特征的信息增益值进行筛选,从而得到恶意特征的列表。因此,本实施例从文档的多种静态特征中进行恶意特征提取,实现了全面深入的恶意文档静态特征提取,再根据信息增益算法进行特征选择,过滤无关特征和噪声,有效降低了特征冗余度。通过本实施例的特征提取方法得到样本的特征值列表,为后续的恶意文档检测提供了重要基础。
在一些可选的实施方式中,获取文档的原始静态数据,包括:
根据文档的格式,确定原始静态数据的存储路径;文档的格式包括DOC、XLS、PPT、DOCX、XLSX或PPTX;
根据存储路径,获取原始静态数据。
上述技术方案中,特征提取方法适用于Office文档的多种格式文档,包括DOC、XLS、PPT、DOCX、XLSX和PPTX等格式文档,根据文档的格式来确定所需获取的原始静态数据的存储路径,再根据存储路径来获取这些原始静态数据,从而实现了恶意Office文档多种格式的统一静态特征提取方法。
在一些可选的实施方式中,原始静态数据包括宏语言代码;
对每一类别的原始静态数据,进行恶意特征提取,包括:
对宏语言代码中每一用于文档打开后自动执行的数据,提取关键字作为恶意特征的特征名;
和/或,对宏语言代码中每一用于转移进程控制权给另一进程的数据,提取关键字作为恶意特征的特征名。
上述技术方案中,在对宏语言代码进行恶意特征提取时,根据宏语言代码关键字可以确定相关代码段的主要功能,例如用于文档打开后自动执行的第一关键字,以及用于转移进程控制权给另一进程的第二关键字。因此,本实施例对宏语言代码进行恶意特征提取,包括但不限于:
若宏语言代码中出现第一关键字,则将第一关键字作为一个恶意特征的特征名,并统计在所有宏语言代码中出现第一关键字的频次信息。
若宏语言代码中出现第二关键字,则将第二关键字作为一个恶意特征的特征名,并统计在所有宏语言代码中出现第二关键字的频次信息。
在一些可选的实施方式中,原始静态数据包括动态数据交换指令;
对每一类别的原始静态数据,进行恶意特征提取,包括:
对动态数据交换指令中与动态数据交换指令关键词黑名单相关的数据,提取关键字作为恶意特征的特征名;其中,动态数据交换指令关键词黑名单中的动态数据交换指令关键词包括以下关键词中的至少一个:
指示打开命令脚本环境的关键词;
指示具有命令提示符的关键词;
指示具有可执行文件的关键词;
指示具有隐藏内容的关键词;
指示具有新的系统/网络/客户端的关键词;
指示远程下载线程的关键词;
指示不加载命令脚本环境配置文件,使用特定模式创建图形用户界面,并避免显示一个交互对话窗口的关键词;
指示具有函数的关键词;
指示远程下载文件的关键词;
指示具有超文本标记语言应用的关键词;
指示执行完命令后关闭命令窗口的关键词。
上述技术方案中,虽然动态数据交换指令作为正常功能在良性文档样本中也大量存在,甚至因其大量的数据交换需求,往往一次性会出现多条冗长的相关指令,但是,在恶意文档中的动态数据交换指令往往比较简短且具有特定的关键字,例如:指示打开命令脚本环境的第三关键词;指示具有命令提示符的第四关键词;指示具有可执行文件的第五关键词;指示具有隐藏内容的第六关键词;指示具有新的系统/网络/客户端的第七关键词;指示远程下载线程的第八关键词;指示不加载命令脚本环境配置文件,使用特定模式创建图形用户界面,并避免显示一个交互对话窗口的第九关键词;指示具有函数的第十关键词;指示远程下载文件的第十一关键词;指示具有超文本标记语言应用的第十二关键词;指示执行完命令后关闭命令窗口的第十三关键词。因此,本实施例对动态数据交换指令进行恶意特征提取,包括但不限于:
若动态数据交换指令中出现第三关键字,则将第三关键字作为一个恶意特征的特征名,并统计在所有动态数据交换指令中出现第三关键字的频次信息。
若动态数据交换指令中出现第四关键字,则将第四关键字作为一个恶意特征的特征名,并统计在所有动态数据交换指令中出现第四关键字的频次信息。
若动态数据交换指令中出现第五关键字,则将第五关键字作为一个恶意特征的特征名,并统计在所有动态数据交换指令中出现第五关键字的频次信息。
……
若动态数据交换指令中出现第十三关键字,则将第十三关键字作为一个恶意特征的特征名,并统计在所有动态数据交换指令中出现第十三关键字的频次信息。
在一些可选的实施方式中,原始静态数据包括嵌入文件;
对每一类别的原始静态数据,进行恶意特征提取,包括:
对嵌入文件中与嵌入文件格式黑名单相关的数据,提取嵌入文件格式作为恶意特征的特征名;嵌入文件格式黑名单中的嵌入文件格式包括EXE、TXT、LNK、CSV和ZIP中的至少一个。
上述技术方案中,考虑到良性文档中包含的嵌入文件大多是字节码全是0x00的文件或未知格式的二进制文件,而恶意文档则包含大量可执行文件或其它宏文档,例如EXE、TXT、LNK、CSV和ZIP格式的嵌入文件。因此,本实施例根据EXE、TXT、LNK、CSV和ZIP等嵌入文件格式,生成嵌入文件格式黑名单,若文档的原始静态数据中嵌入文件的格式符合嵌入文件格式黑名单中的任一格式,就将嵌入文件格式作为一个恶意特征的特征名,统计该嵌入文件格式的嵌入文件的数量作为恶意特征的频次信息。
在一些可选的实施方式中,原始静态数据包括对象组件;
对每一类别的原始静态数据,进行恶意特征提取,包括:
将对象组件中与对象组件类型黑名单相关的数据,提取对象组件类型作为恶意特征的特征名;对象组件类型黑名单中的对象组件类型包括以下类型中的至少一个:
本地对象组件数据包的对象组件;
宏语言项目的对象组件;
用于自动打开的对象组件;
用于自动关闭的对象组件;
用于加密打包的对象组件;
用于新建宏的对象组件;
对象类别扩充组件;
用于打开并读入基于网络数据流的对象组件。
上述技术方案中,文档中包含了大量的对象组件(例如OLE对象),部分类型对象组件与恶意行为联系紧密,例如对象组件涉及相关漏洞利用或恶意代码嵌入等,因此,此类对象组件可以作为静态的恶意特征。具体的,与恶意行为联系紧密的对象组件包括但不限于:本地对象组件数据包的对象组件;宏语言项目的对象组件;用于自动打开的对象组件;用于自动关闭的对象组件;用于加密打包的对象组件;用于新建宏的对象组件;对象类别扩充组件;用于打开并读入基于网络数据流的对象组件。根据上述的与恶意行为联系紧密的多种类型对象组件,生成对象组件类型黑名单,若文档的原始静态数据中对象组件的类型符合对象组件类型黑名单中的任一类型,就将对象组件类型作为一个恶意特征的特征名,统计该对象组件类型的对象组件的数量作为恶意特征的频次信息。
在一些可选的实施方式中,原始静态数据包括外部链接;
对每一类别的原始静态数据,进行恶意特征提取,包括:
对外部链接中与外部链接属性黑名单相关的数据,提取外部链接属性作为恶意特征的特征名;外部链接属性黑名单中的外部链接属性包括附加模板属性、对象组件属性和框架属性中的至少一个。
上述技术方案中,由于攻击者可以通过在文档中嵌入外部链接来引发攻击,这类外部链接往往指向某个恶意下载地址。具体可以根据外部链接的属性进行判断,在良性文档中,外部链接的属性大多为Hyperlink超链接,Hyperlink在本质上属于一个网页的一部分,它是一种允许我们同其他网页或站点之间进行连接的元素,各个网页链接在一起后,才能真正构成一个网站,在网页中用来超链接的对象,可以是一段文本或者是一个图片,当浏览者单击已经链接的文字或图片后,链接目标将显示在浏览器上,并且根据目标的类型来打开或运行。而,恶意文档中常见其他属性的外部链接,例如附加模板属性、对象组件属性和框架属性等。根据这些恶意文档中常见的外部链接的属性,生成外部链接属性黑名单,若文档的原始静态数据中外部链接的属性符合外部链接属性黑名单中的任一类型,就将外部链接属性作为一个恶意特征的特征名,统计该外部链接属性的外部链接的数量作为恶意特征的频次信息。
本申请实施例提供的一种恶意文档的静态特征提取装置,包括:
获取模块,用于获取文档的原始静态数据;原始静态数据的类别包括宏语言代码、动态数据交换指令、对象组件、嵌入文件、外部链接、类标识符、重复程序对象和闪存插件中的至少一种;文档包括恶意或良性的标签;
提取模块,用于对每一类别的原始静态数据,进行恶意特征提取,获取恶意特征的特征名以及特征名对应的频次信息;
计算模块,用于对每一恶意特征,根据恶意特征的特征名、特征名对应的频次信息和对应文档的标签,利用信息增益算法,计算恶意特征的信息增益值;
判断模块,用于将信息增益值大于阈值的恶意特征,作为恶意文档的静态特征。
上述技术方案中,利用获取模块,获取的文档的原始静态数据的类别包括宏语言代码、动态数据交换指令、对象组件、嵌入文件、外部链接、类标识符、重复程序对象和闪存插件;利用提取模块,对每一类别的原始静态数据进行恶意特征提取;利用计算模块来计算每一恶意特征的信息增益值;利用判断模块,根据提取的所有恶意特征的信息增益值进行筛选,从而得到恶意特征的列表。因此,本实施例从文档的多种静态特征中进行恶意特征提取,实现了全面深入的恶意文档静态特征提取,再根据信息增益算法进行特征选择,过滤无关特征和噪声,有效降低了特征冗余度。
本申请实施例提供的一种电子设备,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如以上任一所述的方法。
本申请实施例提供的一种计算机可读存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如以上任一所述的方法。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参照图1,图1为本申请实施例提供的一种恶意文档的静态特征提取方法步骤流程图,具体包括:
步骤100、获取文档的原始静态数据;原始静态数据的类别包括宏语言代码、动态数据交换指令、对象组件、嵌入文件、外部链接、类标识符、重复程序对象和闪存插件中的至少一种;文档包括恶意或良性的标签;
其中,文档的标签可通过人工标记或在虚拟环境中执行文档的动态检测方法自动标记等方式进行标记得到;
步骤200、对每一类别的原始静态数据,进行恶意特征提取,获取恶意特征的特征名以及特征名对应的频次信息;
其中,对原始静态数据进行恶意特征提取,具体为根据原始静态数据的某一关键词或某一类型数据提取特征名,并统计该关键词或该类型数据出现的频次;
步骤300、对每一恶意特征,根据恶意特征的特征名、特征名对应的频次信息和对应文档的标签,利用信息增益算法,计算恶意特征的信息增益值;
其中,由于对于处理后的特征,尽管进行了冗余合并等操作,但特征数量依然很多,且部分特征同样大量存在于良性文档中,会对后续的恶意检测造成干扰,属于无关特征或噪声。因此,输入所有样本的多类特征值及标签(恶意和良性两个标签),使用信息增益算法计算所有特征的信息增益值。具体做法是:在得到所有样本多方面特征的数值表示后,首先计算在所有样本中每个特征在两个标签(恶意、良性)里分别出现的频率,和整个特征集合的熵,其次计算每个特征的条件熵,最后两者作差计算得到全部特征的信息增益值。步骤400、将信息增益值大于阈值的恶意特征,作为恶意文档的静态特征。
本申请实施例中,获取的文档的原始静态数据的类别包括宏语言代码、动态数据交换指令、对象组件、嵌入文件、外部链接、类标识符、重复程序对象和闪存插件,对每一类别的原始静态数据进行恶意特征提取,然后根据提取的所有恶意特征的信息增益值进行筛选,从而得到恶意特征的列表。因此,本实施例从文档的多种静态特征中进行恶意特征提取,实现了全面深入的恶意文档静态特征提取,再根据信息增益算法进行特征选择,过滤无关特征和噪声,有效降低了特征冗余度。
需明确的是,本申请的静态特征提取方法适用于Office文档中的静态特征提取,同样也适用于其他文档,例如WPS、PDF等。本申请的以下一个或多个实施例中,将以Office文档中的静态特征提取为例进行说明。
在一些可选的实施方式中,步骤100中,获取文档的原始静态数据,具体包括:
步骤110、根据文档的格式,确定原始静态数据的存储路径;文档的格式包括DOC、XLS、PPT、DOCX、XLSX或PPTX;
步骤120、根据存储路径,获取原始静态数据。
本申请实施例中,特征提取方法适用于Office文档的多种格式文档,包括DOC、XLS、PPT、DOCX、XLSX和PPTX等格式文档,根据文档的格式来确定所需获取的原始静态数据的存储路径,其原因是不同格式的文档存储这些原始静态数据的路径是不同的,但同一格式的文档存储这些静态数据的路径是相同的,再根据存储路径来获取这些原始静态数据,从而实现了恶意Office文档多种格式的统一静态特征提取方法。其中,DOC、XLS和PPT是微软Office系列中低版本(2007及更低的版本)的文件后缀,分别对应着word文档、excel文档、演示文稿,而DOCX、XLSX和PPTX是它们基于xml组织的构建的升级版本,体积更小,方便对外数据交换。
在一些可选的实施方式中,原始静态数据包括宏语言代码,此时,对应的在步骤200中,对每一类别的原始静态数据,进行恶意特征提取,包括但不限于:
对宏语言代码中每一用于文档打开后自动执行的数据,提取关键字作为恶意特征的特征名;
对宏语言代码中每一用于转移进程控制权给另一进程的数据,提取关键字作为恶意特征的特征名。
本申请实施例中,在对宏语言代码进行恶意特征提取时,根据宏语言代码关键字可以确定相关代码段的主要功能,例如用于文档打开后自动执行的第一关键字,以及用于转移进程控制权给另一进程的第二关键字。因此,本实施例对宏语言代码进行恶意特征提取,包括但不限于:
若宏语言代码中出现第一关键字,则将第一关键字作为一个恶意特征的特征名,并统计在所有宏语言代码中出现第一关键字的频次信息。
若宏语言代码中出现第二关键字,则将第二关键字作为一个恶意特征的特征名,并统计在所有宏语言代码中出现第二关键字的频次信息。
具体地,宏语言代码包括VBA代码,VBA(Visual Basic for Applications)是一种宏语言,用于在Microsoft Office程序中进行自动化操作。它基于Visual Basic编程语言,并被设计用于在Microsoft Office中创建宏。VBA是一种强大的工具,可以用来自动化一系列的操作。比如,可以在Excel中使用VBA来处理数据、创建复杂的函数,甚至可以用来开发自定义的界面。
对于VBA来说,代码关键字就可以锁定相关代码段的主要功能,例如,“auto_open”关键字表示该代码在文档打开后自动执行,“Call”关键字表示将此进程控制权转移给另一个进程,均涉及恶意行为。所以在提取和分析VBA代码特征时,可以通过其关键字来表征,从而省略掉代码其余部分的分析。VBA代码关键字种类丰富,涉及自动执行代码、创建对象、加载函数等功能,本实施例使用OLETools.olevba相关方法初步提取出文档中的VBA代码关键字。但是在部分恶意DOCM和XLSM格式样本(该类文档默认包含宏)中,使用该工具并未检测到VBA代码,然而动态沙箱检测到了恶意VBA的运行。通过对该工具源代码和该类恶意样本进行分析后发现,此工具只对常规的VBA代码嵌入位置——VBAproject.bin二进制文件进行了检测。而近年来,攻击者为躲避检测,会将VBA代码嵌入在其它非常规位置。为检测此类攻击,本实施例还补充了对DOCM和XLSM文档的word/和xl/文件夹下xml文件和macrosheets相关文件夹的检测,扩大了检测范围,尽可能提取出文档中所有的VBA代码关键字。除此之外,还对提取出的VBA代码关键字进行了冗余合并,例如:所有“.exe”“.dll”结尾的关键字统一为“exe”“dll”;所有与文档自动打开关闭有关的关键字如“Document_Open”“Workbook_Open”“Auto_Close”“Auto_Open”“AutoOpen”等统一为“autoexec”。最后,统计所有关键字出现的次数。
在一些可选的实施方式中,原始静态数据包括动态数据交换指令,此时,对应的在步骤200中,对每一类别的原始静态数据,进行恶意特征提取,包括:
对动态数据交换指令中与动态数据交换指令关键词黑名单相关的数据,提取关键字作为恶意特征的特征名;其中,动态数据交换指令关键词黑名单中的动态数据交换指令关键词包括以下关键词中的至少一个:
指示打开命令脚本环境的关键词,以下称为第三关键词;
指示具有命令提示符的关键词,以下称为第四关键词;
指示具有可执行文件的关键词,以下称为第五关键词;
指示具有隐藏内容的关键词,以下称为第六关键词;
指示具有新的系统/网络/客户端的关键词,以下称为第七关键词;
指示远程下载线程的关键词,以下称为第八关键词;
指示不加载命令脚本环境配置文件,使用特定模式创建图形用户界面,并避免显示一个交互对话窗口的关键词,以下称为第九关键词;其中,特定模式包括STA模式,其是指Wi-Fi工作在无线终端模式,通过连接AP热点连接到网络;
指示具有函数的关键词,以下称为第十关键词;
指示远程下载文件的关键词,以下称为第十一关键词;
指示具有超文本标记语言应用的关键词,以下称为第十二关键词;
指示执行完命令后关闭命令窗口的关键词,以下称为第十三关键词。
本申请实施例中,虽然动态数据交换指令作为正常功能在良性文档样本中也大量存在,甚至因其大量的数据交换需求,往往一次性会出现多条冗长的相关指令,但是,在恶意文档中的动态数据交换指令往往比较简短且具有特定的关键字。因此,本实施例对动态数据交换指令进行恶意特征提取,包括但不限于:
若动态数据交换指令中出现第三关键字,则将第三关键字作为一个恶意特征的特征名,并统计在所有动态数据交换指令中出现第三关键字的频次信息。
若动态数据交换指令中出现第四关键字,则将第四关键字作为一个恶意特征的特征名,并统计在所有动态数据交换指令中出现第四关键字的频次信息。
若动态数据交换指令中出现第五关键字,则将第五关键字作为一个恶意特征的特征名,并统计在所有动态数据交换指令中出现第五关键字的频次信息。
……
若动态数据交换指令中出现第十三关键字,则将第十三关键字作为一个恶意特征的特征名,并统计在所有动态数据交换指令中出现第十三关键字的频次信息。
具体地,动态数据交换指令包括DDE指令,DDE是Dynamic Data Exchange的简称,是一种进程间通信机制,最早是随着Windows由微软提出的,当前大部分软件仍旧支持DDE。恶意文档中的DDE指令往往比较简短,且具有特殊的关键字,通常指示“打开powershell”、“远程下载文件”等攻击命令,可以明显区分于良性样本,通过收集这类特征关键字即可区分恶意与良性指令。基于此本实施例建立了上述的动态数据交换指令关键词黑名单,在一个实施例中判断指令恶意性的方法为:包含动态数据交换指令关键词黑名单中的至少2个关键字就判定为恶意DDE指令。
命令脚本环境包括PowerShell,PowerShell是微软发布的一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用.NET Framework的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了用户在Windows命令提示符和Windows ScriptHost环境中获得的知识和创建的脚本。PowerShell是Windows平台下的脚本语言,它定义好了一堆命令用来与操作系统、特别是与文件系统交互,能够启动并操控应用程序。PowerShell还可以通过管道将几个命令组合起来放到文件里执行,实现文件级的重用。另外,PowerShell也能够充分利用.NET类型和COM对象与各种系统交互,完成各种复杂的、自动化的操作。PowerShell不区分大小写,其脚本后缀为.ps1,可以在磁盘上执行,也可直接在内存中运行。
在一些可选的实施方式中,原始静态数据包括嵌入文件,此时,对应的在步骤200中,对每一类别的原始静态数据,进行恶意特征提取,包括:
对嵌入文件中与嵌入文件格式黑名单相关的数据,提取嵌入文件格式作为恶意特征的特征名;嵌入文件格式黑名单中的嵌入文件格式包括EXE、TXT、LNK、CSV和ZIP中的至少一个。
本申请实施例中,考虑到良性文档中包含的嵌入文件大多是字节码全是0x00的文件或未知格式的二进制文件,而恶意文档则包含大量可执行文件或其它宏文档,例如EXE、TXT、LNK、CSV和ZIP格式的嵌入文件。因此,本实施例根据EXE、TXT、LNK、CSV和ZIP等嵌入文件格式,生成嵌入文件格式黑名单,若文档的原始静态数据中嵌入文件的格式符合嵌入文件格式黑名单中的任一格式,就将嵌入文件格式作为一个恶意特征的特征名,统计该嵌入文件格式的嵌入文件的数量作为恶意特征的频次信息。
具体地,Office文档的特性决定了用户被允许在其中嵌入其它类型文件。良性Office文档中包含的文件大多是字节码全是0x00的文件或未知格式的二进制文件,而恶意文档则包含大量可执行文件或其它宏文档。借助OLETools.oleobj中的process_file方法可以将Office文档中的嵌入文件提取出来,但还需要对提取出的文件类型做进一步判断。ExifTool工具是一个跨平台的,可以读取、编辑多种类型文件元数据的命令行工具。同时,pyExifTool库是一个提供调用该工具接口的Python第三方库,本实施例使用该工具判断提取出的嵌入文件格式。通过对一万个恶意Office样本的嵌入文件进行检测和格式分类,发现EXE、TXT、LNK、CSV、ZIP格式文件数量明显较多,而这些类型在一万个良性样本中几乎没有出现,因此将这些类型文件出现的数量作为一项恶意特征。
在一些可选的实施方式中,原始静态数据包括对象组件,此时,对应的在步骤200中,对每一类别的原始静态数据,进行恶意特征提取,包括:
将对象组件中与对象组件类型黑名单相关的数据,提取对象组件类型作为恶意特征的特征名;对象组件类型黑名单中的对象组件类型包括以下类型中的至少一个:
本地对象组件数据包的对象组件;
宏语言项目的对象组件;
用于自动打开的对象组件;
用于自动关闭的对象组件;
用于加密打包的对象组件;
用于新建宏的对象组件;
对象类别扩充组件;
用于打开并读入基于网络数据流的对象组件。
本申请实施例中,文档中包含了大量的对象组件,部分类型对象组件与恶意行为联系紧密,例如对象组件涉及相关漏洞利用或恶意代码嵌入等,因此,此类对象组件可以作为静态的恶意特征。具体的,与恶意行为联系紧密的对象组件包括但不限于:本地对象组件数据包的对象组件;宏语言项目的对象组件;用于自动打开的对象组件;用于自动关闭的对象组件;用于加密打包的对象组件;用于新建宏的对象组件;对象类别扩充组件;用于打开并读入基于网络数据流的对象组件。根据上述的与恶意行为联系紧密的多种类型对象组件,生成对象组件类型黑名单,若文档的原始静态数据中对象组件的类型符合对象组件类型黑名单中的任一类型,就将对象组件类型作为一个恶意特征的特征名,统计该对象组件类型的对象组件的数量作为恶意特征的频次信息。
具体地,对象组件包括OLE对象,OLE对象是利用Object Linking and Embedding(OLE)技术,将不同类型的数据(如文字、点阵图像和矢量图形、声音、注解和录像剪辑等)组合成一个复合文档。Office文档包含了大量OLE对象,包括本地OLE文件、公式对象等,部分类型对象涉及相关漏洞利用或恶意代码嵌入等,与恶意行为联系比较紧密,故此类对象类型数量可以作为一项静态特征。使用OLETools.oleobj中的find_ole方法将Office文档中多种类型的OLE对象提取出来,经过对各一万良性及恶意样本的对比发现,部分可疑OLE对象数量存在明显差别。
在一些可选的实施方式中,原始静态数据包括外部链接,此时,对应的在步骤200中,对每一类别的原始静态数据,进行恶意特征提取,包括:
对外部链接中与外部链接属性黑名单相关的数据,提取外部链接属性作为恶意特征的特征名;外部链接属性黑名单中的外部链接属性包括附加模板属性、对象组件属性和框架属性中的至少一个。
本申请实施例中,由于攻击者可以通过在文档中嵌入外部链接来引发攻击,这类外部链接往往指向某个恶意下载地址。具体可以根据外部链接的属性进行判断,在良性文档中,外部链接的属性大多为Hyperlink超链接,Hyperlink在本质上属于一个网页的一部分,它是一种允许我们同其他网页或站点之间进行连接的元素,各个网页链接在一起后,才能真正构成一个网站,在网页中用来超链接的对象,可以是一段文本或者是一个图片,当浏览者单击已经链接的文字或图片后,链接目标将显示在浏览器上,并且根据目标的类型来打开或运行。而,恶意文档中常见其他属性的外部链接,例如附加模板属性、对象组件属性和框架属性等。根据这些恶意文档中常见的外部链接的属性,生成外部链接属性黑名单,若文档的原始静态数据中外部链接的属性符合外部链接属性黑名单中的任一类型,就将外部链接属性作为一个恶意特征的特征名,统计该外部链接属性的外部链接的数量作为恶意特征的频次信息。
具体地,攻击者可以通过在Office文档中嵌入外部链接来引发攻击,这类链接往往指向某个恶意下载地址。以DOCX文档为例,在其文件夹word/_rels中除document.xml.rels之外的rels文件里包含了文档嵌入的外部链接,储存在<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">标签下,且其TargetMode属性为External。通过使用OLETools.oleobj中的find_external_relationships方法对外部链接进行提取,并发现并不是所有外部链接都暗示恶意行为,并可以通过Type属性进一步筛选。在良性文档中,外部链接大多为Hyperlink超链接,而恶意文档中常见其它链接类型,包括attachedTemplate、oleObject和frame,故将此类链接数量作为一项恶意特征。
此外,原始静态数据的类别还包括类标识符、重复程序对象和闪存插件。
其中,类标识符包括CLSID(Class Identifier,类标识符),其与某些漏洞和脆弱性相关,在OLETools.common的clsid.py中收集了大量已知的CLSID及其相关漏洞信息,并且结合Cuckoo沙箱等提供的信息不断更新。经过对大量黑白样本进行扫描后发现,这类CLSID在恶意样本中出现的频率大概是良性样本的20倍,故将这类特殊CLSID作为一项恶意特征。
重复程序对象包括ActiveX控件,ActiveX控件是Microsoft的ActiveX技术的一部分,创建它的主要技术是Microsoft的ActiveX技术,其中主要是组件对象模型(COM)。ActiveX控件可以以小程序下载装入网页,也可以用在一般的Windows和Macintosh应用程序环境中。ActiveX控件也是Office的一项威胁来源,攻击者可以通过嵌入恶意指令来利用这一漏洞。以使用ActiveX控件的DOCX文档为例,在word/目录下,存在一个activeX文件夹,包含activeX1.bin、activeX1.xml等相关文件,通过对该位置文件进行扫描发现ActiveX控件的使用情况,并将ActiveX控件数量作为一项恶意特征。
闪存插件包括Flash插件,Office文档支持插入Flash文件即.swf格式文件,攻击者也可以插入带有病毒的Flash文件。通过使用OLETools.pyxswf方法检测Office文档中是否嵌入Flash文件,并将相关文件的数量作为恶意特征。
在一些可选的实施方式中,步骤400、将信息增益值大于阈值的恶意特征,作为恶意文档的静态特征,也可以是:将信息增益值从大到小排列,选取前面固定数量的恶意特征作为恶意文档的静态特征,并得到特征列表。需明确的是,根据信息增益值进行特征筛选的方式可以有多种,并不局限上述方式。本实施例的上述所有可选技术方案,可以采用可以结合的方式任意组合形成本发明的可选技术方案,在此不再一一举例。
请参照图2,图2为本申请实施例提供的一种恶意文档的静态特征提取装置功能模块图,包括获取模块1、提取模块2、计算模块3和判断模块4。
其中,获取模块1,用于获取文档的原始静态数据;原始静态数据的类别包括宏语言代码、动态数据交换指令、对象组件、嵌入文件、外部链接、类标识符、重复程序对象和闪存插件中的至少一种;文档包括恶意或良性的标签;提取模块2,用于对每一类别的原始静态数据,进行恶意特征提取,获取恶意特征的特征名以及特征名对应的频次信息;计算模块3,用于对每一恶意特征,根据恶意特征的特征名、特征名对应的频次信息和对应文档的标签,利用信息增益算法,计算恶意特征的信息增益值;判断模块4,用于将信息增益值大于阈值的恶意特征,作为恶意文档的静态特征。
本申请实施例中,利用获取模块1,获取的文档的原始静态数据的类别包括宏语言代码、动态数据交换指令、对象组件、嵌入文件、外部链接、类标识符、重复程序对象和闪存插件;利用提取模块2,对每一类别的原始静态数据进行恶意特征提取;利用计算模块3来计算每一恶意特征的信息增益值;利用判断模块4,根据提取的所有恶意特征的信息增益值进行筛选,从而得到恶意特征的列表。因此,本实施例从文档的多种静态特征中进行恶意特征提取,实现了全面深入的恶意文档静态特征提取,再根据信息增益算法进行特征选择,过滤无关特征和噪声,有效降低了特征冗余度。
本实施例的静态特征提取装置,还通过采用上述模块实现恶意文档的静态特征提取方法与上述相关方法实施例的实现机制相同,详细可以参考上述实施例的记载,在此不再赘述。
本实施例的静态特征提取装置具体可以设置在浏览器客户端侧,作为浏览器的一个引擎装置来使用。还可以设置在一个电子设备中,单独执行其功能。
图3是本发明实施例提供的一种电子设备结构示意图。参见图3,该电子设备可以用于实施上述实施例中提供的恶意文档的静态特征提取方法。
具体来讲:
电子设备可以包括通信单元110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(wirelessfidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图3中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
通信单元110可用于收发信息或通话过程中,信号的接收和发送,该通信单元110可以为RF(RadioFrequency,射频)电路、路由器、调制解调器等网络通信设备。特别地,当通信单元110为RF电路时,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,作为通信单元的RF电路包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,通信单元110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global Systemof Mobile communication,全球移动通讯系统)、GPRS(General PacketRadio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband Code Division Multiple Access,宽带码分多址)、LTE(Long TermEvolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图3中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
电子设备还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在电子设备移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器,传声器可提供用户与电子设备之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一电子设备,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与电子设备的通信。
为了实现无线通信,该电子设备上可以配置有无线通信单元170,该无线通信单元170可以为WiFi模块。WiFi属于短距离无线传输技术,电子设备通过无线通信单元170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图3示出了无线通信单元170,但是可以理解的是,其并不属于电子设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是电子设备的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行电子设备的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
电子设备还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备的显示单元是触摸屏显示器,电子设备还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:获取文档的原始静态数据;原始静态数据的类别包括宏语言代码、动态数据交换指令、对象组件、嵌入文件、外部链接、类标识符、重复程序对象和闪存插件中的至少一种;文档包括恶意或良性的标签;对每一类别的原始静态数据,进行恶意特征提取,获取恶意特征的特征名以及特征名对应的频次信息;对每一恶意特征,根据恶意特征的特征名、特征名对应的频次信息和对应文档的标签,计算恶意特征的信息增益值;将信息增益值大于阈值的恶意特征,作为恶意文档的静态特征。
可选地,该存储器还用于存储以下指令:根据文档的格式,确定原始静态数据的存储路径;文档的格式包括DOC、XLS、PPT、DOCX、XLSX或PPTX;根据存储路径,获取原始静态数据。
可选地,该存储器还用于存储以下指令:对宏语言代码中每一用于文档打开后自动执行的数据,提取关键字作为恶意特征的特征名。
可选地,该存储器还用于存储以下指令:对宏语言代码中每一用于转移进程控制权给另一进程的数据,提取关键字作为恶意特征的特征名。
可选地,该存储器还用于存储以下指令:对动态数据交换指令中与动态数据交换指令关键词黑名单相关的数据,提取关键字作为恶意特征的特征名;其中,动态数据交换指令关键词黑名单中的动态数据交换指令关键词包括以下关键词中的至少一个:指示打开命令脚本环境的关键词;指示具有命令提示符的关键词;指示具有可执行文件的关键词;指示具有隐藏内容的关键词;指示具有新的系统/网络/客户端的关键词;指示远程下载线程的关键词;指示不加载命令脚本环境配置文件,使用特定模式创建图形用户界面,并避免显示一个交互对话窗口的关键词;指示具有函数的关键词;指示远程下载文件的关键词;指示具有超文本标记语言应用的关键词;指示执行完命令后关闭命令窗口的关键词。
可选地,该存储器还用于存储以下指令:对嵌入文件中与嵌入文件格式黑名单相关的数据,提取嵌入文件格式作为恶意特征的特征名;嵌入文件格式黑名单中的嵌入文件格式包括EXE、TXT、LNK、CSV和ZIP中的至少一个。
可选地,该存储器还用于存储以下指令:将对象组件中与对象组件类型黑名单相关的数据,提取对象组件类型作为恶意特征的特征名;对象组件类型黑名单中的对象组件类型包括以下类型中的至少一个:本地对象组件数据包的对象组件;宏语言项目的对象组件;用于自动打开的对象组件;用于自动关闭的对象组件;用于加密打包的对象组件;用于新建宏的对象组件;对象类别扩充组件;用于打开并读入基于网络数据流的对象组件。
可选地,该存储器还用于存储以下指令:对外部链接中与外部链接属性黑名单相关的数据,提取外部链接属性作为恶意特征的特征名;外部链接属性黑名单中的外部链接属性包括附加模板属性、对象组件属性和框架属性中的至少一个。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。