进程解析装置、进程解析方法和进程解析程序技术领域
本发明涉及对由信息处理装置执行的进程进行解析并提取进程中利用的加密函
数或解密函数等加密逻辑的进程解析装置。
背景技术
近年来,作为新的安全威胁,瞄准特定组织而顽强地进行攻击的被称作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:加密/解密函数对列表。