一种描述文件在沙箱中运行轨迹图的方法转让专利

申请号 : CN201710855521.9

文献号 : CN107729748B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 沈伟范渊李凯莫金友

申请人 : 杭州安恒信息技术股份有限公司

摘要 :

本发明涉及恶意代码检测领域,旨在提供一种描述文件在沙箱中运行轨迹图的方法。该种描述文件在沙箱中运行轨迹图的方法包括步骤:将文件置于沙箱中进行检测,将HOOK到的行为、检测到的异常行为抓取下来,并保存运行过程中释放的文件;分析HOOK到的行为,确认是否有风险;静态扫描释放的文件,区分是否安全;将检测到的风险和提取出的行为进行关联,将上述行为按照所在进程进行分类,并将同一进程产生的行为进行排序,依次描述该进程的行为及其相关进程,形成运行轨迹图。本发明能够清晰直观的看到文件在沙箱中运行的轨迹,可以快速理清进程之间的关系,每个进程的具体行为以及产生恶意行为的具体进程。

权利要求 :

1.一种描述文件在沙箱中运行轨迹图的方法,其特征在于,包括下述步骤:步骤A:将文件置于沙箱中进行检测,同时进行API HOOK,将HOOK到的行为和检测到的异常行为抓取下来,同时保存运行过程中释放的文件,并记录释放的文件在虚拟机上完整路径和产生方式;

所述HOOK到的行为是记录文件在沙箱中运行时,产生调用API函数的时间、参数、返回值和调用的进程;

所述检测到的异常行为是指样本在沙箱运行过程中存在的对抗行为,包括躲避沙箱检测、注入系统进程和破坏系统正常运行;

所述释放的文件是指沙箱运行文件时产生的中间文件、创建的新文件、从网络下载的文件、修改的文件和删除的文件;

步骤B:分析HOOK到的行为,对每个API函数调用的参数、返回值以及数个API之间的关系进行联合检测,确认是否有风险,并保存检测到的风险的名称、相关的API信息、风险的描述、产生风险的进程和产生风险时的时间;

步骤C:对步骤A中保存下来的释放的文件进行静态扫描,区分安全的文件和不安全的文件,并保存不安全文件的详细信息;

步骤D:从HOOK到的行为中提取出进程行为、注册表行为、网络行为和服务创建行为;

所述进程行为包括父子进程的创建关系、远程线程注入的进程和APC线程注入的进程;

所述注册表行为包括新增注册表、修改注册表和删除注册表;

所述网络行为包括DNS解析的域名,TCP/UDP连接的IP、端口、接收发送的数据量以及TCP/UDP连接是否成功,以及HTTP访问的IP、域名、URL、接收发送的数据和数据是否发送成功;

所述服务创建行为包括创建的服务、启动的服务和删除的服务;

步骤E:将步骤B检测到的风险和步骤D提取出的行为进行关联:

如果步骤B有检测到风险,将检测到的风险与步骤D提取出的行为进行关联,通过关联能直观地看到这些风险对应的具体行为,并能使用更加醒目的颜色对这些行为进行标注;

如果步骤B没有检测到风险,则直接继续执行步骤F;

步骤F:将步骤A记录的释放的文件、步骤B检测到的风险、步骤C对释放文件的检测结果和步骤D提取的行为按照所在进程进行分类,并将同一进程产生的行为按照在沙箱中运行的相对时间进行排序;

步骤G:从最开始的进程开始,根据时间先后,依次描述该进程的行为,之后对子进程、注入的进程和孙子进程进行相同的描述操作;

步骤H:将步骤G的描述结果使用画图工具产生样本在沙箱中的运行轨迹图,并将样本在沙箱中的运行轨迹图嵌入沙箱报告中进程展示。

2.根据权利要求1所述的一种描述文件在沙箱中运行轨迹图的方法,其特征在于,所述步骤A进行API HOOK时,HOOK进程线程操作、网络访问、文件操作和注册表操作相关的API函数并记录调用函数的进程,同时在沙箱中检测是否存在试图绕过沙箱的行为,并对直接或间接干预的进程也进行相同的API HOOK操作。

3.根据权利要求1所述的一种描述文件在沙箱中运行轨迹图的方法,其特征在于,所述步骤G中,所述描述操作具体是指:不同类型的行为使用不同的形式图标和颜色来作为节点,每个节点描述具体的行为,节点之间使用有向线,线上标注具体类型;对于有关联的风险,风险与具体信息之间增加连线;对于不安全的行为使用鲜艳的颜色标注。

说明书 :

一种描述文件在沙箱中运行轨迹图的方法

技术领域

[0001] 本发明是关于恶意代码检测领域,特别涉及一种描述文件在沙箱中运行轨迹图的方法。

背景技术

[0002] 近年来,人们越来越多地使用沙箱来对可疑文件进行动态检测。通过可疑文件在虚拟机中运行,并使用API HOOK等方法有效抓取样本在运行过程中的行为,通过这些行为判断被检测的可疑文件使用是恶意文件。最后通过沙箱报告等形式展现文件检测结果。
[0003] 在使用沙箱对可疑文件进行检测后,如何展现文件在沙箱中的运行情况,最常用的是将文件的基本信息、可疑行为、进程创建的行为、网络行为、文件行为、注册表行为、截屏信息等通过沙箱报告的形式展现出来。但这样展现文件运行轨迹不够直观,所以需要使用图的形式将这些行为进行展现。

发明内容

[0004] 本发明的主要目的在于克服现有技术中的不足,提供一种通过描述样本在沙箱中运行轨迹图,以更直观展现文件行为的方法。为解决上述技术问题,本发明的解决方案是:
[0005] 提供一种描述文件在沙箱中运行轨迹图的方法,包括下述步骤:
[0006] 步骤A:将文件置于沙箱中进行检测,同时进行API HOOK,将HOOK到的行为、检测到的异常行为抓取下来,同时保存运行过程中释放的文件,并记录释放的文件在虚拟机上完整路径和产生方式;
[0007] 所述HOOK到的行为是记录文件在沙箱中运行时,产生调用API函数的时间、参数、返回值和调用的进程;
[0008] 所述检测到的异常行为是指样本在沙箱运行过程中存在的对抗行为,包括躲避沙箱检测、注入系统进程和破坏系统正常运行;
[0009] 所述释放的文件是指沙箱运行文件时产生的中间文件、创建的新文件、从网络下载的文件、修改的文件和删除的文件;
[0010] 步骤B:分析HOOK到的行为,对每个API函数调用的参数、返回值以及数个API之间的关系进行联合检测,确认是否有风险,并保存检测到的风险的名称、相关的API信息、风险的描述、产生风险的进程和产生风险时的时间;
[0011] 步骤C:对步骤A中保存下来的释放的文件进行静态扫描(对于一些不确定的文件可再次进行沙箱检测,但须注意控制深度,不要对释放文件的释放文件一直扫描下去),区分安全的文件和不安全的文件,并保存不安全文件的详细信息;
[0012] 步骤D:从HOOK到的行为中提取出进程行为、注册表行为、网络行为、服务创建行为;
[0013] 所述进程行为包括父子进程的创建关系、远程线程注入的进程和APC线程注入的进程;
[0014] 所述注册表行为包括新增注册表、修改注册表和删除注册表(尤其需要关注自启动相关的注册表);
[0015] 所述网络行为包括DNS解析的域名,TCP/UDP连接的IP、端口、接收发送的数据量以及是否成功,以及HTTP访问的IP、域名、URL、接收发送的数据、是否发送成功;
[0016] 所述服务创建行为包括创建的服务、启动的服务和删除的服务;
[0017] 步骤E:将步骤B检测到的风险和步骤D提取出的行为进行关联:
[0018] 如果步骤B有检测到风险,将检测到的风险与步骤D提取出的行为进行关联,通过关联能直观地看到这些风险对应的具体行为,并能使用更加醒目的颜色对这些行为进行标注;
[0019] 如果步骤B没有检测到风险,则直接继续执行步骤F;
[0020] 步骤F:将步骤A记录的释放的文件、步骤B检测到的风险、步骤C对释放文件的检测结果、步骤D提取的行为(进程行为、注册表行为、网络行为、服务创建行为)按照所在进程进行分类,并将同一进程产生的行为按照在沙箱中运行的相对时间进行排序;
[0021] 步骤G:从最开始的进程开始,根据时间先后,依次描述该进程的行为,之后对子进程、注入的进程、孙子进程进行相同的描述操作;
[0022] 步骤H:将步骤G的描述结果使用画图工具产生样本在沙箱中的运行轨迹图,并将样本在沙箱中的运行轨迹图嵌入沙箱报告中进程展示。
[0023] 在本发明中,所述步骤A进行API HOOK时,HOOK进程线程操作、网络访问、文件操作、注册表操作相关的API函数并记录调用函数的进程,同时在沙箱中检测是否存在试图绕过沙箱的行为,并对(创建的子进程以及通过线程注入等方式)直接或间接干预的进程也进行相同的API HOOK操作。
[0024] 在本发明中,所述步骤G中,所述描述操作具体是指:不同类型的行为使用不同的形式图标、颜色来作为节点,每个节点描述具体的行为,节点之间使用有向线,线上标注具体类型;对于有关联的风险,风险与具体信息之间增加连线;对于(释放带病毒木马的文件、线程注入、检测到的风险等)不安全的行为使用鲜艳的颜色标注。
[0025] 与现有技术相比,本发明的有益效果是:
[0026] 本发明和传统的展示方法相比,能够清晰直观的看到文件在沙箱中运行的轨迹,可以快速理清进程之间的关系,每个进程的具体行为以及产生恶意行为的具体进程。
[0027] 本发明大大增加了沙箱报告的可读性,加快对样本行为的理解。

附图说明

[0028] 图1为本发明描述文件在沙箱中运行轨迹图的流程图。

具体实施方式

[0029] 首先需要说明的是,本发明涉及恶意代码检测领域,是计算机技术在信息安全技术领域的一种应用。申请人认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明。凡本发明申请文件提及的均属此范畴,申请人不再一一列举。
[0030] 下面结合附图与具体实施方式对本发明作进一步详细描述:
[0031] 如图1所示的一种描述文件在沙箱中运行轨迹图的方法,具体包括下述步骤:
[0032] 步骤一:沙箱运行文件,记录行为。
[0033] 将文件置于沙箱中进行检测,同时HOOK进程线程操作、网络访问、文件操作、注册表操作等相关的API函数并记录调用函数的进程,函数调用的时间、参数、返回值等信息,同时在沙箱中检测是否存在试图绕过沙箱的行为。并对创建的子进程以及通过线程注入等方式直接或间接干预的进程也进行相同的API HOOK操作。并且保存文件运行过程中产生的中间文件、释放的新文件、从网络下载的文件、修改的文件以及删除的文件。
[0034] 步骤二:获取沙箱记录的行为。
[0035] 将沙箱HOOK到的API函数调用信息转换成Bson格式,然后使用tcp协议将bson格式数据下载下来,并解析成json格式。
[0036] Bson是由10gen开发的一种数据格式,是mongoDB的数据存储格式,是一种类json的二进制形式存储格式,具有轻量型、可遍历性、高效性的特点。
[0037] 步骤三:获取释放的文件。
[0038] 用TCP协议从虚拟机上将沙箱运行文件时释放出的文件下载下来,所述释放出的文件包括运行过程中产生的中间文件、创建的新文件、从网络下载的文件、修改的文件、删除的文件等,并记录文件在虚拟机上完整路径和产生方式。
[0039] 有些病毒木马会将恶意部分进行压缩等形式以躲过杀毒软件等静态扫描工具的查杀,但在运行过程中会重新解压释放出来。也有些恶意文件本身不具备病毒木马特性,但它会通过回连C&C服务器,然后下载病毒木马。也有些病毒木马会复制感染系统中其他文件。所以需要对运行过程中释放出的文件进行进一步检测。
[0040] 需要注意的是删除的文件需要在删除前下载下来,部分文件会因为受到权限保护,需要修改权限后才能下载下来。
[0041] 步骤四:行为特征检测。
[0042] 分析HOOK到的API调用行为。对每个API函数调用的参数、返回值以及数个API之间的关系进行联合检测,确认是否有风险。保存检测到的风险的名称、相关的API信息、风险的描述、产生风险的进程和产生风险时的时间等信息。
[0043] 步骤五:检测释放的文件。
[0044] 对步骤三中保存下来的文件进行静态扫描,对于一些不确定的文件可再次进行沙箱检测(但须注意控制深度,不要对释放文件的释放文件一直扫描下去)。区分安全的文件和不安全的文件,并保存不安全文件的详细信息。
[0045] 步骤六:提取进程关系。
[0046] 从HOOK到的行为中分析进程创建、远程线程注入、APC注入等进程相关的API函数,找到并罗列出父子进程创建关系以及进程之间的注入关系。
[0047] 所述远程线程注入是一个进程在另一个进程中创建一个线程来运行自己所希望运行的代码。病毒和木马经常会使用远程线程注入来让其他进程(甚至包括系统进程)来帮他执行部分恶意代码,从而隐藏自身。具体步骤如下:
[0048] ①:进程A调用VirtualAllocEx等函数在另一个进程B中申请一块内存。
[0049] ②:使用WriteProcessMemory等函数将要注入的dll路径等写入进程B的内存中。
[0050] ③:使用GetProcAddress获取LoadLibraryA()等函数的地址。
[0051] ④:使用CreateRemoteThread等函数在进程B内创建一个线程来加载要注入的dll,从而达到在另一个进程中运行自己所希望运行的代码的目的。
[0052] 所述APC注入也是一个进程在另一个进程中创建一个线程来运行自己所希望运行的代码。区别是所用的原理不同。当程序的某个线程执行到sleep等会等待的函数时会出现一个软中断,当程序再次被唤醒时,此线程会首先执行APC队列中被注册的函数。利用QueueUserAPC()函数插入LoadLibraryA()等函数指针来达到注入。在步骤上相比远程线程注入,就是把最后一步的CreateRemoteThread换成QueueUserAPC。
[0053] 步骤七:提取网络行为。
[0054] 从HOOK到的行为中分析网络相关的API函数,统计DNS请求的域名,TCP/UDP连接的IP、端口、接收发送的数据、是否成功,以及使用HTTP访问的IP、域名、URL、发送的内容、是否成功等信息。
[0055] 很多病毒木马会通过回连C&C服务器,进行下载新的病毒木马、接收指令或者上传获取到的信息。也有些C&C服务器为了防止域名被屏蔽会使用DGA域名生成算法产生域名,这种算法会产生很多杂乱无章或者具有一定相似性的域名进行DNS请求。
[0056] 所述DGA域名生成算法是一种随机域名生成算法,病毒木马通过这种算法每天生成数百甚至数万不同的域名。黑客每天会选取其中的几个甚至上百个域名进行注册使用。而病毒木马则对这些产生的域名进行逐个DNS请求,一旦请求的域名正好是黑客注册使用了的就会通过HTTP等方式进行C&C域名的回连访问。通过这种算法,C&C服务器可以成功逃过基于域名名单库的检测方法。
[0057] 步骤八:提取注册表信息。
[0058] 从HOOK到的行为中分析注册表相关的API函数,找到新建、修改和删除的注册表,尤其是自启动相关的注册表信息。恶意程序常常会通过修改注册表的方式实现随系统自启动,已达到长期控制或者驻留系统的目的。恶意程序也可能会通过删除服务相关的注册表项卸载驱动程序,以达到破坏系统正常功能的目的。
[0059] 步骤九:提取服务信息。
[0060] 从HOOK到的行为中分析服务相关的API函数,找到创建、启动和删除的服务。恶意程序会通过启动系统服务来达到长期控制或驻留系统的目的,可能通过启动远程桌面服务以达到为攻击者通过远程桌面连接并控制电脑做准备,可能通过创建恶意服务来执行恶意代码,可能通过删除杀毒软件等服务是杀毒软件瘫痪。
[0061] 步骤十:风险关联。
[0062] 如果步骤四有检测到风险,将检测到的风险与步骤五到步骤九提取的具体行为信息进行关联。通过关联可以更直观的看到这些风险对应的具体行为,而且可以使用更加醒目的颜色对这些行为进行标注,使更被人关注。
[0063] 步骤十一:对提取的行为进行划分排序。
[0064] 将步骤一记录的释放文件、步骤四检测到的风险、步骤五对释放文件的检测结果、步骤六提取的进程关系、步骤七提取的网络行为、步骤八提取的注册表信息、步骤九提取的服务信息按照所在进程进行划分。因为图空间有限,太多的行为反而影响阅读,所以当行为比较多的时候,需要适当去掉一部分不重要的,比如没有匹配到风险的注册表操作,释放的安全文件等。之后对同一进程中的行为按照时间顺序进行排序。
[0065] 步骤十二:行为描绘。
[0066] 从最初的进程开始,按照画图工具所需格式,将该进程中产生的行为按照发生时间顺序依次进行描述,不同类型的行为使用不同的形式图标、颜色来作为节点,每个节点描述具体的行为,节点之间使用有向线,线上标注具体类型。对于有关联的风险,风险与具体信息之间增加连线;对于释放带病毒木马的文件、线程注入、检测到的风险等不安全的行为可以使用鲜艳的颜色使更加明显。之后对创建的子进程、注入的进程、孙子进程等也进行相同的描述。
[0067] 步骤十三:完成画图,进行展示。
[0068] 使用画图工具将步骤十二产生的描述结果使用画图工具产生样本在沙箱中的运行轨迹图,然后将样本在沙箱中的运行轨迹图嵌入沙箱报告中进行统一展示。
[0069] 最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。