进程解析装置、进程解析方法和进程解析程序与流程

文档序号:11162050阅读:185来源:国知局
进程解析装置、进程解析方法和进程解析程序与制造工艺

本发明涉及对由信息处理装置执行的进程进行解析并提取进程中利用的加密函数或解密函数等加密逻辑的进程解析装置。



背景技术:

近年来,作为新的安全威胁,瞄准特定组织而顽强地进行攻击的被称作Advanced Persistent Threat(APT)的“标的型攻击”日渐显现。在APT中,通过邮件使作为标的的组织的终端感染恶意软件,感染的恶意软件与外部的攻击者的服务器进行通信,进行新的攻击程序的下载和组织系统内的机密信息的发送。为了尽早检测这种安全事件的发生并防止损失的扩大,需要进行监视网络设备的各种日志并检测可疑前兆的Security Operation Center(SOC)服务。另一方面,在判明了事件的发生的情况下,组织必须进行事件的原因和损失的调查、对应策略的研究、服务的恢复、再次发生防止策略的实施等事件回应。进而,对于组织的顾客和合作伙伴来说,组织需要明确机密信息的哪部分泄漏,哪部分没有泄漏。

在组织进行事件的原因和损失的调查时,对个人电脑、服务器、网络设备等生成的日志以及网络上记录的分组进行解析并调查恶意软件的侵入路径、感染终端、访问的信息、来自攻击者的命令、向外部发送的信息等的网络取证发挥重要作用。但是,最近的恶意软件活用加密技术来隐匿通信。因此,即使组织进行了网络取证,也很难追踪到从攻击者发出的命令是什么以及向外部发送了什么样的信息。

为了应对该问题,需要发现恶意软件在通信的隐匿中利用的加密逻辑和密钥,对加密后的通信进行解密。一般情况下,该作业需要对恶意软件的程序的二进制进行解析。在现有的多数加密逻辑提取手法中,例如如专利文献1公开的恶意软件解析系统那样,根据执行了恶意软件时的执行轨迹,搜索加密逻辑中经常出现的特征,由此进行加密逻辑和密钥的确定。并且,作为对恶意软件的程序的二进制进行解析的技术,公知有非专利文献1~9公开的技术。

现有技术文献

专利文献

专利文献1:日本特开2013-114637号公报

非专利文献

非专利文献1:Noe Lutz,Towards Revealing Attacker's Intent by Automatically Decrypting Network Traffic,Master Thesis MA-2008-08.

非专利文献2:Zhi Wang,Xuxian Jiang,Weidong Cui,Xinyuan Wang and Mike Grace,ReFormat:automatic reverse engineering of encrypted messages,Proceedings of the 14th European Conference on Research in Computer Security.

非专利文献3:Felix Matenaar,Andre Wichmann,Felix Leder and Elmar Gerhards-Padilla,CIS:The Crypto Intelligence System for Automatic Detection and Localization of Cryptographic Functions in Current Malware,Proceedings of the 7th and Unwanted Software(Malware 2012).

非专利文献4:Xin Li,Xinyuan WaInternational Conference on Malicious ng,Wentao Chang,CipherXRay:Exposing Cryptographic Operations and Transient Secrets from Monitored Binary Execution,IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING(preprint)2012.

非专利文献5:Felix Grobert,Carsten Willems,and Thorsten Holz,Automated Identification of Cryptographic Primitives in Binary Programs,Proceedings of the 14th International Conference on Recent Advances in Intrusion Detection.

非专利文献6:Joan Calvet,Jose M.Fernandez,Jean-Yves Marion,Aligot:Cryptographic Function Identification in Obfuscated Binary Programs,Proceedings of the 19th ACM Conference on Computer and Communications Security,CCS 2012.

非专利文献7:Intel,Pin-A Dynamic Binary Instrumentation Tool,https://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool

非专利文献8:Bitblaze,TEMU:The BitBlaze Dynamic Analysis Component,http://bitblaze.cs.berkeley.edu/temu.html

非专利文献9:Jordi Tubella and Antonio Gonzalez,Control Speculation in Multithreaded Processors through Dynamic Loop Detection,In Proceedings of the Fourth International Symposium on High-Performance Computer Architecture,pp.14-23,1998.



技术实现要素:

发明要解决的课题

在以专利文献1为代表的现有技术中,作为加密逻辑的候选,提取多个无关的逻辑。恶意软件解析者必须通过手动作业将无关的逻辑除外,存在需要大量劳力和时间这样的课题。因此,需要抑制提取无关的逻辑的、高精度的加密逻辑提取手法。

本发明正是为了解决上述课题而完成的,其目的在于,根据对文件或通信进行加密的恶意软件利用的加密逻辑的特征对恶意软件的执行轨迹进行解析,由此,高精度地确定恶意软件使用的加密逻辑。

用于解决课题的手段

为了解决上述课题,本发明的进程解析装置具有:执行轨迹取得部,其取得作为解析对象的进程的执行轨迹;块提取部,其从所述执行轨迹中提取作为表示循环构造的处理单位的块;块信息提取部,其从所述块中提取包含输入信息和输出信息的块信息;以及块信息解析部,其使用所述块信息的所述输入信息或所述输出信息生成用于判定所述块的输入输出关系的特征的特征判定信息,利用该特征判定信息对所述块的输入输出关系进行解析,将表示加密函数或解密函数的输入输出关系的特征的块判定为加密逻辑。

发明效果

根据本发明,生成用于判定从执行轨迹中提取出的块的输入输出关系的特征的特征判定信息,利用该特征判定信息对块的输入输出关系进行解析,将表示加密函数或解密函数的输入输出关系的特征的块判定为加密逻辑,由此,具有能够高精度地确定恶意软件使用的加密逻辑这样的效果。

附图说明

图1是示出实施方式1的进程解析装置的一个结构例的结构图。

图2是示出实施方式1的进程解析装置的进程解析处理的流程的流程图。

图3是示出定义列表105的一例的图。

图4是说明存储输入信息和输出信息的数据形式的一例的图。

图5是示出加密函数的输入输出信息包含的可打印字符串的特征的图。

图6是示出实施例1的进程解析装置的一个结构例的结构图。

图7是示出实施例1的字符串比例判定部160的字符串比例判定处理的流程的流程图。

图8是示出字符代码表DB162中存储的字符代码表的例子的图。

图9是示出恶意软件的加密函数的使用方法的一例(其一)的图。

图10是示出实施例2的进程解析装置的一个结构例的结构图。

图11是示出实施例2的数据解码部170的解码判定处理的流程的流程图。

图12是示出恶意软件的加密函数的使用方法的一例(其二)的图。

图13是示出实施例3的进程解析装置的一个结构例的结构图。

图14是示出实施例3的数据解压缩部180的数据解压缩判定处理的流程的流程图。

图15是说明加密的基本定义的图。

图16是示出实施例4的进程解析装置的一个结构例的结构图。

图17是示出实施例4的虚拟执行部190的虚拟执行判定处理的流程的流程图。

图18是示出实施例4的虚拟执行部190的虚拟执行解析的处理流程(前半部分)的流程图。

图19是示出实施例4的虚拟执行部190的虚拟执行解析的处理流程(后半部分)的流程图。

具体实施方式

实施方式1

图1是示出实施方式1的进程解析装置的一个结构例的结构图。

在图1中,进程解析装置100具有执行轨迹取得部110、块提取部120、块信息提取部130、块信息解析部140和解析结果输出部150。

进程解析装置100是用于对恶意软件的程序的二进制进行解析的设备,例如,通过CPU(Central Processing Unit)经由总线而与ROM、RAM、通信板、显示器、键盘、鼠标、磁盘装置等硬件器件连接的计算机,构成进程解析装置100。并且,在进程解析装置100中,在CPU上具有虚拟机,具有能够执行恶意软件的程序的执行环境。

执行轨迹取得部110在虚拟机的执行环境上执行作为解析对象的执行文件101,取得所执行的处理的日志信息即执行轨迹102和与所执行的进程有关的各种信息即进程信息103。

块提取部120从由执行轨迹取得部110取得的执行轨迹102中提取作为构成程序的基本结构要素的块,输出所提取出的多个块的列表即块列表104。并且,块提取部120从执行轨迹102的各行中提取后述块信息解析处理所需要的信息,输出定义列表105。

块信息提取部130从执行轨迹102、块列表104、定义列表105中提取包含由块执行的输入输出信息的块信息,输出块信息列表106。

块信息解析部140使用块信息提取部130输出的块信息列表106,对解析对象块是否是加密逻辑进行解析,输出解析结果列表107。

解析结果输出部150将块信息解析部140解析出的解析结果列表107的内容输出到例如显示器并显示给解析者。

接着,使用图2的流程图对进程解析装置100的进程解析处理进行说明。

图2是示出实施方式1的进程解析装置的进程解析处理的流程的流程图。

首先,在步骤S110中,执行轨迹取得部110在虚拟机等解析环境上执行作为解析对象的执行文件101的程序。执行轨迹取得部110监视所执行的程序的进程,记录该进程的执行轨迹102。关于由执行轨迹102记录的信息,例如记录以下信息。

·所执行的命令的地址

·所执行的命令的地址(操作代码、操作数)

·被访问的寄存器及其值

·被访问的存储器的地址、存储器的值、存储器的模式(READ/WRITE)

作为取得执行轨迹的方法,例如有非专利文献7记载的使用Pin等的Dynamic Instrumentation Tool的方法、非专利文献8记载的使用TEMU这样的模拟器的方法。在执行轨迹取得部110中,根据这些现有的方法取得执行轨迹。

并且,执行轨迹取得部110在取得执行轨迹102的同时,提取与取得了执行轨迹102的进程加载的DLL或函数有关的信息作为进程信息103。在进程信息103中例如记录以下信息。

·进程的基地址

·进程加载的DLL的名称、地址、大小

·DLL导出的API的名称、地址

另外,作为进程信息103的容易理解的实例,是存储器中加载的进程的PE头。

接着,在步骤S120中,块提取部120从执行轨迹102中提取作为构成程序的基本结构要素的块。这里所说的块是函数、循环、连结的循环等,具有表现它们所需要的以下信息。

·块ID

·块的种类

·块的开始地址

·块的结束地址

·块内的命令列(从进程的存储图像取得)

块提取部120针对提取出的多个块,将上述块的信息作为块列表104进行管理。

下面,对表现块的各信息进行说明。

块ID在块列表中设定唯一的值。块的种类设定构成块的最外侧的逻辑(函数、循环、连结的循环)。块的开始地址表示块从进程利用的存储器上的第几号地址开始。块的结束地址表示块在进程利用的存储器上的第几号地址结束。块内的命令列是在进程利用的存储器上存在于开始地址与结束地址的范围内的命令序列。

块提取部120通过在执行轨迹102上追踪call等函数调用命令和ret等返回命令的关系,确定函数。并且,块提取部120通过在执行轨迹上追踪命令模式的重复和后方跳跃(Backward Jump),确定循环。并且,块提取部120通过在执行轨迹上追踪循环间的输入输出关系,确定连结的循环。另外,关于块列表104的提取,例如能够活用非专利文献5、6、9公开的技术。

进而,在步骤S120中,作为后述步骤中需要的信息,生成定义列表105。

图3是示出定义列表105的一例的图。

如图3所示,定义列表105是在块提取部120逐行读出执行轨迹102的过程中记录有以下信息的表。

·执行轨迹的行编号

·存在该行中执行的命令的地址

·该行中被变更的存储区域(寄存器、存储器)

·新的值

·值的大小

接着,在步骤S130中,块信息提取部130从执行轨迹102和块(块列表104、定义列表105)中提取块信息,输出块信息列表106。在这里所说的块信息列表106中登记具有以下所示的信息的块信息作为要素。

·块ID

·输入信息

·输出信息

·上下文

下面,对表现块信息的各信息进行说明。

块ID是用于与块列表104中登记的块对应起来的信息。

输入信息是在执行轨迹102中满足以下条件的信息。

·块的执行前定义的信息

·在块的执行中被覆盖之前读出的信息

输出信息是在执行轨迹102中满足以下条件的信息。

·在存储区域(寄存器、存储器)中,在块执行中最后写入该存储区域中的信息

上下文是用于表示在执行轨迹102中在哪个时刻执行块的信息。

下面,对输入信息、输出信息、上下文的提取处理进行详细说明。

首先,如下所述进行输入信息的提取。

块信息提取部130逐行对执行轨迹102进行解析。设关注的执行轨迹102的命令地址包含在块列表104中登记的任意块B1的开始地址与结束地址的范围内。设块信息提取部130进一步对执行轨迹102进行解析,在位于块B1的范围内的地址X执行命令,通过该命令对某个存储区域进行READ。然后,块信息提取部130对定义列表105进行解析,确认是否通过块B1的范围内且比地址X靠前执行的命令对该存储区域进行了WRITE。在未进行WRITE的情况下,将该存储区域作为输入信息。

另外,在执行轨迹102上,通过相同地址的相同命令对相邻的存储器区域进行了READ的情况下,该存储器区域作为缓存被访问的可能性较高,因此,将该存储器区域统一作为输入信息。即,作为输入信息,由该存储器区域的开头地址、大小、所存储的字节列构成。并且,作为输入信息的种类,还记录是“缓存”。并且,通过相同地址的命令进行READ,但是,关于值是向上计数还是向下计数的输入信息,将输入信息的种类设为“计数器”。将循环中在循环的结束条件中使用的输入信息和在计数器的初始值中使用的输入信息的种类设为“结束条件”。

接着,如下所述进行输出信息的提取。

设块信息提取部130对某个块B1的执行轨迹102进行解析。设块信息提取部130进一步对执行轨迹102进行解析,轨迹超出了块B1的范围。此时,设块信息提取部130通过对定义列表105进行解析,将通过在该块的范围内执行的命令进行WRITE后的信息作为输出信息。并且,在相同存储区域内进行了多次WRITE的情况下,将执行轨迹102的行编号较大的信息即最新的信息作为输出信息。

另外,与输入信息同样,在执行轨迹102上,通过相同地址的相同命令对相邻的存储器区域进行了WRITE的情况下,作为缓存被访问的可能性较高,因此,将该存储器区域统一作为输出信息。即,作为输出信息,由该存储器区域的开头地址、大小、所存储的字节列构成。并且,作为输出信息的种类,还记录是“缓存”。并且,通过相同地址的命令进行WRITE,但是,关于值是向上计数还是向下计数的输出信息,将输出信息的种类设为“计数器”。将循环中在循环的结束条件中使用的输出信息和在计数器的初始值中使用的输出信息的种类设为“结束条件”。

接着,对存储输入信息和输出信息的数据形式进行说明。

图4是说明存储输入信息和输出信息的数据形式的一例的图。

在图4中,关于与输入信息和输出信息有关的信息,存储有存储区域(开始地址)、值(字节列)、大小(字节)、信息的种类。

接着,如下所述进行上下文的提取。

上下文用于表现块的调用关系(嵌套关系)。例如,将B1、B2、B3、B4、B5、B6、B7、B8设为块。此时,设在B1的执行结束后执行B2,在B2中执行B3和B4,在B2的执行结束后执行B5。进而,设在B5中执行B6,在B6中执行B7。然后,设在B7、B6的执行结束后执行B8。

在上述的块的调用关系的情况下,将B1、B2、B5、B8的上下文分别表现为1、2、3、4。并且,将B2中执行的B3、B4的上下文分别表现为2.1、2.2。同样,将B5中执行的B6的上下文表现为3.1。进而,将B6中执行的B7的上下文表现为3.1.1。通过这样表现上下文,即使是相同块(相同块ID)的调用,也能够根据调用场所进行区分。

另外,上下文的表现形式只要是能够表现块的调用关系(嵌套关系)的表现形式即可,可以是任意的表现形式。

并且,块信息提取部130在对执行轨迹102进行解析的过程中,如下所述判断是块结束还是在块中新调用了块。

·在对某个块的执行轨迹102进行解析的过程中,在通过函数调用(例如call或enter)以外的命令(例如jmp、jne、ret)向块的范围外跳跃的情况下,意味着该块的结束。

·在对某个块的执行轨迹102进行解析的过程中,在通过函数调用(例如call或enter)命令向块的范围外跳跃的情况下,设为该块未结束而在该块中新调用了块。

·在对某个块的执行轨迹102进行解析的过程中,在上述以外的情况下,在执行轨迹102超出了块的范围的情况下,意味着该块的结束。

接着,返回图2的流程图的说明。

在步骤S140中,块信息解析部140对块信息列表106的块信息进行解析,确定加密逻辑。在块信息的解析中,块信息解析部140使用块信息的输入信息或输出信息生成用于判定块的输入输出关系的特征的特征判定信息,利用该特征判定信息对块的输入输出关系进行解析,将表示加密函数或解密函数的输入输出关系的特征的块判定为加密逻辑。关于块信息解析部140生成的特征判定信息和利用特征判定信息的加密逻辑的判定方法,在后述实施例1~实施例4中进行详细说明。块信息解析部140对块信息进行解析后,输出包含加密逻辑的判定结果的解析结果列表107。

最后,在步骤S150中,解析结果输出部150根据块列表104、块信息列表106、解析结果列表107对解析结果进行整理,输出以下信息。

·加密逻辑的开始地址

·输入信息(存储区域、值、大小)

·输出信息(存储区域、值、大小)

·解密逻辑的开始地址

如上所述,在本实施方式1的发明中,生成用于判定从执行轨迹中提取出的块的输入输出关系的特征的特征判定信息,利用该特征判定信息对块的输入输出关系进行解析,将表示加密函数或解密函数的输入输出关系的特征的块判定为加密逻辑,由此,具有能够高精度地确定恶意软件使用的加密逻辑这样的效果。

接着,下面对具体实现本实施方式1的实施例1~实施例4进行说明。

实施例1

加密函数的输入通常为明文。另一方面,加密函数的输出为随机的字节列。因此,发现如下特征:在加密函数的输入中可打印字符串的比例较多,在输出中可打印字符串的比例较少。

图5是示出加密函数的输入输出信息包含的可打印字符串的特征的图。

在图5中,所输入的“你好”是可打印字符串,并且,所输出的信息中的“哑”是可打印字符串,“·”表示不可打印字符串。在实施例1中,对在特征判定信息中利用这种加密函数的输入输出信息包含的可打印字符串的特征来确定加密逻辑的实施例进行说明。

图6是示出实施例1的进程解析装置的一个结构例的结构图。

在图6中,块信息解析部140具有字符串比例判定部160、字符代码判定算法数据库(数据库以下记载为DB)161、字符代码表DB162。块信息解析部140被输入块信息列表106,进行字符串比例判定处理,输出解析结果列表107。并且,字符串比例判定部160针对从块信息解析部140输入的块信息的输入信息判定可打印字符串比例,确定加密逻辑,将包含已确定的加密逻辑的加密逻辑列表1(163)输出到块信息解析部140。

另外,字符串比例判定部160、字符代码判定算法DB161、字符代码表DB162也可以构成为设置在块信息解析部140的内部。

接着,参照图7对实施例1的字符串比例判定处理的流程进行说明。

图7是示出实施例1的字符串比例判定部160的字符串比例判定处理的流程的流程图。

首先,在步骤S1601中,字符串比例判定部160对加密逻辑列表1(163)进行初始化。加密逻辑列表1(163)是存储由字符串比例判定部160判定为加密逻辑候选的块信息的块信息列表106。

接着,在步骤S1602中,字符串比例判定部160确认在块信息列表106中是否存在下一个要素(块信息)。如果不存在下一个要素的块信息,则进入“否”的分支,结束处理。另一方面,如果存在下一个要素的块信息,则在步骤S1603中选择下一个要素Bi。

接着,在步骤S1604中,字符串比例判定部160判定块信息的输入信息的可打印字符串的比例。这里,可打印字符串是由在换行回车字符或空字符(null字符)处结束的c个字符的连锁构成的可打印的字符串。字符串比例判定部160针对在信息的种类中设定了“缓存”的输入信息,进行值中设定的字节列的字符代码判定。在该字符代码判定中,使用字符代码判定算法DB161中登记的算法,执行字符代码判定。如果能够判定字符代码,则从字符代码表DB162取得对应的字符代码表,能够确认可打印的字符。

图8是示出字符代码表DB162中存储的字符代码表的例子的图。

在图8中,示出针对字符“あ”~字符“ぱ”对应地存储字符代码的例子。

字符串比例判定部160通过将从输入信息的字节列得到的可打印字符串的字符串长度的总和除以该字节列长度,计算可打印字符串比例。另外,将多字节字符作为2字节来计算字符串长度。

接着,在步骤S1605中,字符串比例判定部160判定块信息的输出信息的可打印字符串的比例。这里的处理顺序与步骤S1604相同。

接着,在步骤S1606中,字符串比例判定部160计算输入的可打印字符串比例-输出的打印字符串比例,作为输入与输出的可打印字符串的比例的差分。

接着,在步骤S1607中,如果在步骤S1606中计算出的差分为阈值θ以上,则字符串比例判定部160在加密逻辑列表1(163)中追加该块信息Bi。另外,上述c和θ是可调整的参数。

另外,在步骤S1604中,还可以进行输入信息的文件类型检查。如果输入是WORD或PDF等已知文件形式的文件,则按照该文件形式提取文本信息,仅针对该文本信息计算可打印字符串比例。由此,即使以特殊形式对WORD或PDF等文本进行编码的类型的文件是输入信息,也能够适当地计算输入信息的可打印字符串比例。文件类型检查能够利用已知的工具。

实施例2

恶意软件等不正当程序有时将被加密后的数据编码(例如Base64编码)成可打印数据后,发送到因特网上。

图9是示出恶意软件的加密函数的使用方法的一例(其一)的图。

在图9中,示出如下例子:恶意软件对通过加密函数对消息进行加密后的密文进行Base64编码,然后通过HTTP发送而发送到因特网上。因此,使用已知的解码器(例如Base64解码器)对某个块的输出信息进行解码,在解码成功的情况下,能够将具有与解码后的值相等的输出信息的块作为加密逻辑的候选。在实施例2中,对在特征判定信息中利用这种加密函数的输入输出信息包含的编码的特征来确定加密逻辑的实施例进行说明。

图10是示出实施例2的进程解析装置的一个结构例的结构图。

在图10中,块信息解析部140具有数据解码部170、编码/解码算法DB171。块信息解析部140被输入块信息列表106,进行解码判定处理,输出解析结果列表107。并且,数据解码部170对从块信息解析部140输入的块信息的输出信息进行解码,在解码成功的情况下,将具有与解码后的值相等的输出信息的块作为加密逻辑的候选,将包含作为候选的加密逻辑的加密逻辑列表2(172)输出到块信息解析部140。

另外,数据解码部170和编码/解码算法DB171也可以构成为设置在块信息解析部140的内部。

接着,参照图11对实施例2的解码判定处理的流程进行说明。

图11是示出实施例2的数据解码部170的解码判定处理的流程的流程图。

首先,在步骤S1701中,数据解码部170对加密逻辑列表2(172)进行初始化。加密逻辑列表2(172)是存储由数据解码部170判定为加密逻辑的候选的块信息的块信息列表106。

接着,在步骤S1702中,数据解码部170确认在块信息列表106中是否存在下一个要素(块信息)。如果不存在下一个要素的块信息,则进入“否”的分支,结束处理。另一方面,如果存在下一个要素的块信息,则在步骤S1703中选择下一个要素Bi。

接着,在步骤S1704中,数据解码部170应用已知的解码算法对块信息的输出信息进行解码。已知的解码算法被存储在编码/解码算法DB171中。数据解码部170对信息的种类为“缓存”的输出信息进行解码。

接着,在步骤S1705中,数据解码部170判定解码是否成功。数据解码部170在利用编码/解码算法DB171中存储的任意解码算法解码成功的情况下,保持该解码结果,通过“是”的分支而进入步骤S1707。

接着,在步骤S1707中,数据解码部170从块信息列表106中搜索具有与在步骤S1705中保持的解码结果一致的输出信息的块。另外,为了处理的高效化,也可以限定成比块Bi的上下文更早的上下文的块,作为检索对象。数据解码部170在检索块信息列表106的结果是发现了具有与解码结果一致的输出信息的块Bj(i≠j)的情况下,在步骤S1708中,在加密逻辑候选列表2(172)中追加块Bj的块信息。

实施例3

恶意软件等不正当程序有时在对数据进行加密之前对该数据进行压缩。

图12是示出恶意软件的加密函数的使用方法的一例(其二)的图。

在图12中,示出如下例子:恶意软件在消息被输入到加密函数之前,通过压缩函数对消息进行压缩,将通过加密函数对该压缩数据进行加密后的密文,通过HTTP发送而发送到因特网上。因此,针对某个块的输入信息,利用已知的解压缩算法(例如zip、lzh)尝试解压缩,在解压缩成功的情况下,能够将该块作为加密逻辑的候选。在实施例3中,对在特征判定信息中利用这种加密函数的输入输出信息包含的压缩处理的特征来确定加密逻辑的实施例进行说明。

图13是示出实施例3的进程解析装置的一个结构例的结构图。

在图13中,块信息解析部140具有数据解压缩部180、压缩/解压缩算法DB181。块信息解析部140被输入块信息列表106,进行数据解压缩判定处理,输出解析结果列表107。并且,数据解压缩部180对从块信息解析部140输入的块信息的输入信息进行解压缩,在解压缩成功的情况下,将该块作为加密逻辑的候选,将包含作为候选的加密逻辑的加密逻辑列表3(182)输出到块信息解析部140。

另外,数据解压缩部180和压缩/解压缩算法DB181也可以构成为设置在块信息解析部140的内部。

接着,参照图14对实施例3的数据解压缩判定处理的流程进行说明。

图14是示出实施例3的数据解压缩部180的数据解压缩判定处理的流程的流程图。

首先,在步骤S1801中,数据解压缩部180对加密逻辑列表3(182)进行初始化。加密逻辑列表3(182)是存储由数据解压缩部180判定为加密逻辑的候选的块信息的块信息列表106。

接着,在步骤S1802中,数据解压缩部180确认在块信息列表106中是否存在下一个要素(块信息)。如果不存在下一个要素的块信息,则进入“否”的分支,结束处理。另一方面,如果存在下一个要素的块信息,则在步骤S1803中选择下一个要素Bi。

接着,在步骤S1804中,数据解压缩部180应用已知的解压缩算法对块信息的输入信息进行解压缩。已知的解压缩算法被存储在压缩/解压缩解码算法DB181中。数据解压缩部180对信息的种类为“缓存”的输入信息进行解压缩。

接着,在步骤S1805中,数据解压缩部180判定解压缩是否成功。数据解压缩部180在利用压缩/解压缩解码算法DB181中存储的任意解压缩算法解压缩成功的情况下,通过“是”的分支而进入步骤S1806。

接着,在步骤S1806中,数据解压缩部180在加密逻辑候选列表3(182)中追加块Bj的块信息。

实施例4

根据加密的基本定义,可知当对通过某个密钥对某个消息(明文)进行加密而得到的密文利用相同密钥进行解密时,得到原来的消息。即,在设加密函数、解密函数、密钥、明文分别为Enc、Dec、k、m的情况下,m=Dec(k、Enc(k、m))成立。

图15是说明加密的基本定义的图。

在图15中,示出通过某个密钥对明文“你好”进行加密而得到密文“…哑·”的情况下,利用相同密钥对密文“…哑·”进行解密,得到原来的消息的明文“你好”。

根据这种加密的基本定义,将某个块f的输出的一部分(假设为密文)作为不同块g的输入的一部分来执行g的处理,如果g的输出与f的输入(假设为明文)一致,则f是加密函数、g是解密函数的可能性较高。因此,选择某个块的对,如果针对这些块的输入信息和输出信息进行利用上述加密的基本定义的处理,则能够将该块的对作为加密逻辑的候选。在实施例4中,对如下实施例进行说明:在特征判定信息中利用基于这种加密的基本定义的输入输出信息的特征,通过找出加密的基本定义的关系成立的块的对来确定加密逻辑。

图16是示出实施例4的进程解析装置的一个结构例的结构图。

在图16中,块信息解析部140具有虚拟执行部190。

块信息解析部140被输入块信息列表106,进行虚拟执行判定处理,输出解析结果列表107。并且,虚拟执行部190利用从块信息解析部140输入的块信息的输入信息和输出信息,针对块的对进行利用加密的基本定义的虚拟执行,在虚拟执行成功的情况下,将该块的对作为加密/解密函数对的候选,将包含作为候选的加密/解密函数对的加密/解密函数对列表191输出到块信息解析部140。

另外,虚拟执行部190也可以构成为设置在块信息解析部140的内部。

接着,参照图17对实施例4的虚拟执行判定处理的流程进行说明。

图17是示出实施例4的虚拟执行部190的虚拟执行判定处理的流程的流程图。

首先,在步骤S1901中,虚拟执行部190合并已经提取出的加密逻辑候选,生成加密逻辑列表4。作为已经提取出的加密逻辑候选,例如使用实施例1~实施例3中判定出的加密逻辑候选即加密逻辑列表1~3。另外,在生成加密逻辑列表4时,在存在重复的加密逻辑候选的情况下,统一成一个。

接着,在步骤S1902中,虚拟执行部190对解析结果列表107进行初始化。解析结果列表107是由虚拟执行部190判定为加密逻辑和解密逻辑的对的块信息的对构成的列表。

接着,在步骤S1903中,虚拟执行部190确认在加密逻辑列表4中是否存在下一个要素(块信息)。如果不存在下一个要素的块信息,则进入“否”的分支,结束处理。另一方面,如果存在下一个要素的块信息,则在步骤S1904中选择下一个要素Bi。

接着,在步骤S1905中,虚拟执行部190利用下一个要素Bi的输出信息,进行利用加密的基本定义的虚拟执行解析。虚拟执行解析的处理在后面详细叙述。

接着,在步骤S1906中,虚拟执行部190判定虚拟执行解析结果是否是Null。如果虚拟执行解析结果不是Null,则通过“否”的分支而进入步骤S1907。

接着,在步骤S1907中,虚拟执行部190将虚拟执行解析结果登记在解析结果列表107中。

接着,参照图18和图19对步骤S1905的虚拟执行解析的流程进行详细说明。

图18是示出实施例4的虚拟执行部190的虚拟执行解析的处理流程(前半部分)的流程图。

图19是示出实施例4的虚拟执行部190的虚拟执行解析的处理流程(后半部分)的流程图。

在步骤S1905的虚拟执行解析中,对虚拟执行部190赋予块信息Bi和作为解析对象的执行文件,作为自变量。

首先,在步骤S201中,虚拟执行部190对加密/解密函数对列表进行初始化。

接着,在步骤S202中,虚拟执行部190在虚拟环境上执行作为解析对象的执行文件101,起动进程,在经过一定期间后,暂停该进程。

接着,在步骤S203中,虚拟执行部190生成该进程的快照。将其称作快照1。

接着,在步骤S204中,虚拟执行部190确认在块信息列表106中是否存在下一个要素(块信息)。如果不存在下一个要素的块信息,则进入“否”的分支,在步骤S222中,返回加密/解密函数对列表,结束处理。另一方面,如果存在下一个要素的块信息,则在步骤S205中选择下一个要素Bi。另外,也可以确认块Bi和块Bj的上下文,选择不是嵌套关系的块Bj。

接着,在步骤S206中,虚拟执行部190还原进程的快照1。

接着,在步骤S207中,虚拟执行部190在进程中注入构成块Bj的命令列。具体而言,从块列表104中检索与块信息Bj的块ID对应的要素,取得块的命令列和开始地址。然后,从该进程的该开始地址注入该命令列。

接着,在步骤S208中,虚拟执行部190生成该进程的快照。将其称作快照2。

接着,在步骤S209中,虚拟执行部190取得Bj的输入信息。

接着,在步骤S210中,虚拟执行部190根据Bj的输入信息和Bi的输出信息生成输入快照Iss。输入快照是成为要执行的块的输入的信息。如下所述进行输入快照Iss的生成。设块Bi具有n个输出信息,利用O={O1~On}表示。另一方面,设块Bj具有m个输入信息,利用I={I1~Im}表示。设为Oi∈O,设将I的第j个要素替换成Oi而得到的输入信息为Iss。设替换的信息是输入输出信息的种类为“缓存”的信息彼此。除此之外,还能够优先选择大小接近的信息彼此进行替换。针对值和大小进行替换。并且,进行替换使得不会两次生成相同的Iss。

接着,在步骤S211中,虚拟执行部190判定是否生成了新的Iss。在未生成新的Iss的情况下,进入“否”的分支,执行步骤S204。另一方面,在生成了新的Iss的情况下,处理进入步骤S212,虚拟执行部190还原进程的快照2,在步骤S213中,使Iss反映到该进程中。在Iss的反映中,在适当的存储区域(寄存器、存储器)中设定位于Iss内的全部输入信息的值。

接着,在步骤S214中,虚拟执行部190在指令寄存器中设置所注入的命令列的开头地址,在步骤S215中,恢复进程。

接着,在步骤S216中,虚拟执行部190监视进程的执行地址,确认执行地址是否超出块Bj的范围。

接着,在步骤S217中,虚拟执行部190判定块的执行是否结束。虚拟执行部190在所监视的执行地址超出了块Bj的范围的情况下,判定为块Bj的执行结束,在步骤S218中,暂停进程。

接着,在步骤S219中,虚拟执行部190对所执行的块Bj的输出信息和块Bi的输入信息进行比较。根据块Bj的输出信息的开始地址,从暂停中的进程的存储器中提取执行块Bj而得到的输出信息。

接着,在步骤S220中,虚拟执行部190判定块Bj的输出信息和块Bi的输入信息是否一致,在一致的情况下,通过“是”的分支而进入步骤S221,将块Bi和块Bj作为加密逻辑和解密逻辑的对登记在加密/解密函数对列表中。

另外,在步骤S207中,也可以不注入块的命令列而在块的开始地址之前执行进程。该情况下,在步骤S214中不进行该步骤的处理,仅在步骤S215中恢复进程即可。

如上所述,在实施例1~实施例4的发明中,生成用于判定从执行轨迹中提取出的块的输入输出关系的特征的特征判定信息,利用该特征判定信息对块的输入输出关系进行解析,将表示加密函数或解密函数的输入输出关系的特征的块判定为加密逻辑,由此,具有能够高精度地确定恶意软件使用的加密逻辑这样的效果。

标号说明

100:进程解析装置;101:执行文件;102:执行轨迹;103:进程信息;104:块列表;105:定义列表;106:块信息列表;107:解析结果列表;110:执行轨迹取得部;120:块提取部;130:块信息提取部;140:块信息解析部;150:解析结果输出部;160:字符串比例判定部;161:字符代码判定算法DB;162:字符代码表DB;163:加密逻辑列表1;170:数据解码部;171:编码/解码算法DB;172:加密逻辑列表2;180:数据解压缩部;181:压缩/解压缩算法DB;182:加密逻辑列表3;190:虚拟执行部;191:加密/解密函数对列表。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1