著录项信息
| 专利名称 | 一种恶意代码隐藏行为挖掘方法及系统 |
| 申请号 | CN201410058889.9 | 申请日期 | 2014-02-20 |
| 法律状态 | 授权 | 申报国家 | 中国 |
| 公开/公告日 | 2014-05-21 | 公开/公告号 | CN103810427A |
| 优先权 | 暂无 | 优先权号 | 暂无 |
| 主分类号 | G06F21/56 | IPC分类号 | G;0;6;F;2;1;/;5;6查看分类表>
|
| 申请人 | 中国科学院信息工程研究所 | 申请人地址 | 北京市海淀区闵庄路甲89号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
| 权利人 | 中国科学院信息工程研究所 | 当前权利人 | 中国科学院信息工程研究所 |
| 发明人 | 王蕊;林子敏;张道娟 |
| 代理机构 | 北京君尚知识产权代理事务所(普通合伙) | 代理人 | 余长江 |
摘要
本发明涉及一种恶意代码隐藏行为挖掘方法及系统,其步骤包括:在虚拟环境中运行恶意代码;判断恶意代码执行的指令信息和函数信息中是否有隐藏行为路径相关的指令和函数;若检测到延时隐藏相关的执行信息,通过结束相应的延时行为使恶意代码继续执行其后续指令和函数;若检测到条件判断隐藏相关的执行信息,根据其条件判断分类,通过满足其不同路径的执行条件,发掘恶意代码的可能执行路径;将分析完成的恶意代码执行的多种行为路径信息生成恶意代码行为路径树。本发可有效挖掘恶意代码通过延时隐藏和条件判断隐藏的方式躲避分析的隐藏行为,有效发现其可能存在的多种隐藏行为路径,提高恶意代码的隐藏行为分析和挖掘能力。
1.一种恶意代码隐藏行为挖掘方法,其步骤包括:
1)在虚拟环境中运行恶意代码,逐条监控恶意代码执行的指令信息和函数信息;
2)判断恶意代码执行的指令信息和函数信息中是否有隐藏行为路径相关的指令和函数,所述隐藏行为包含延时隐藏和条件判断隐藏两类;
3)若检测到延时隐藏相关的执行信息,通过结束相应的延时行为使恶意代码继续执行其后续指令和函数;
4)若检测到条件判断隐藏相关的执行信息,根据其条件判断分类,通过满足其不同路径的执行条件,发掘恶意代码的可能执行路径;
5)将动态分析完成的恶意代码执行的多路径行为信息以树的形式表示,生成恶意代码行为路径树。
2.如权利要求1所述的方法,其特征在于:所述延时隐藏包含调用sleep函数延时和循环延时两种。
3.如权利要求2所述的方法,其特征在于,所述延时隐藏的处理方法是:当检测到sleep函数被调用时,读取堆栈中的延时时间,然后将硬件模拟器的时间调整到相应的延时时间之后,使条件满足,从而使恶意代码进一步执行后续行为;当检测到循环存在时,分析识别出循环控制流向前转移的指令,当再次执行到该转移指令时,通过将虚拟CPU中的EFLAGS寄存器相应的标志位至其反位的方式使循环结束,从而使恶意代码开始执行后续行为。
4.如权利要求1所述的方法,其特征在于:所述条件判断隐藏包括用户交互条件和独立条件判断两大类,其中用户交互条件是指判断是否有用户输入事件,独立条件是在执行过程中判断各类不需人工干预的各类系统及网络条件。
5.如权利要求4所述的方法,其特征在于:所述用户输入事件包括鼠标和键盘事件。
6.如权利要求5所述的方法,其特征在于,检测到条件判断语句时的处理方法是:分析其判断的条件,出现用户交互条件判断时,记录相应的系统映像,通过调用鼠标接口函数do_mouse和键盘接口函数do_send_key发送相应的鼠标和键盘消息以满足后续行为的执行条件,在分析完此路径之后,退回到此映像,分析另一条没有满足交互时的行为信息;对于独立判断条件,分析判断语句并保存当前系统映像和判断条件,获取其可能的不同后续分支路径,执行完一条路径后,回到相应的系统映像执行不同的条件分支,从而挖掘恶意代码可能的不同行为路径。
7.如权利要求6所述的方法,其特征在于:在独立判断条件的分析过程中,如果在一条路径后续继续出现其他条件判断语句,则采用递归的方式逐层进行分析。
8.如权利要求7所述的方法,其特征在于:在分析过程中保存路径中所有的条件判断语句,在新的条件判断语句产生时,通过计算该路径所有的条件判断,只分析满足所有路径条件即实际可能的数据结果产生的真实潜在路径,以降低不可能路径的消耗。
9.如权利要求1所述的方法,其特征在于,所述恶意代码行为路径树的构造过程是:以恶意代码执行的第一条信息作为初始父节点开始生成行为树;此后,每执行的下一条信息作为子节点添加到该树;当检测到延时隐藏信息时,在相应执行信息节点标记延时条件,然后继续添加后续子节点;当检测到条件判断语句时,在相应的节点保存条件判断信息,然后根据不同的条件添加不同的子节点表示后续执行子树,即保存系统映像之后标记相应的节点,当分析玩一条路径后回到相应的节点添加其他子树,直到执行完毕。
10.一种恶意代码隐藏行为挖掘系统,其特征在于,包括:
硬件模拟器,用于虚拟执行环境以运行和监控恶意代码;
指令信息监控模块,集成在硬件模拟器的指令翻译模块中,用于在运行过程中监控并记录恶意代码执行的指令信息;
函数信息监控模块,集成在硬件模拟器中,并连接指令信息监控记录模块,用于在恶意代码运行过程中,通过判断指令跳转和模拟内存数据监控恶意代码执行的函数信息;
条件判断分析模块,连接指令信息监控模块和函数信息监控模块,用于检测恶意代码执行的指令和函数信息中的条件判断语句;
条件输入模块,连接条件判断分析模块和硬件模拟器的虚拟执行环境,用于产生在分析过程中使代码执行不同行为路径所需要的条件输入;
运行映像模块,连接硬件模拟器的虚拟执行环境、条件判断分析模块和条件输入模块,用于记录有多种可能执行路径时执行每条路径之前的系统及代码状态映像;
行为树构建模块,连接所述指令信息监控模块、函数信息监控模块、条件分析判断模块和条件输入模块,用于根据获取的恶意代码不同行为路径构建恶意代码行为路径树。
一种恶意代码隐藏行为挖掘方法及系统\n技术领域\n[0001] 本发明属于网络安全技术领域,具体涉及一种恶意代码隐藏行为挖掘方法及系统。\n背景技术\n[0002] 伴随着信息化不断推进以及技术的不断发展,其重要威胁之一的恶意代码技术也在不断的进步,为了躲避分析和检测,恶意代码的隐藏能力、变形能力和生存能力在不断地增强。恶意代码通过各种技术手段隐藏起自身的一些有害行为,导致普通的分析及检测工具无法及时地检测到其恶意行为,从而在需要的时候产生破坏威胁互联网及计算机系统的安全性。\n[0003] 目前,恶意代码的隐藏手段主要包括:(1)在系统中隐藏其踪迹,例如进程信息等。\n(2)自身包含正常行为路径和恶意行为路径,在一定条件下才实施恶意行为。例如在探测到分析及检测环境时便隐藏其恶意行为,从而躲避检测。传统的动态分析手段通常只能分析恶意代码当前执行的行为路径,不能很好地分析检测到隐藏行为及路径的存在。因此,提高恶意代码隐藏行为及路径的分析能力成为恶意代码防护中需要解决的一个重要问题。\n[0004] 已有恶意代码分析方法中,静态分析可全面分析恶意代码包含的所有路径,从而挖掘其可能存在的隐藏行为,但是,通常情况下,恶意代码的源代码无法获取,要想分析期待吗,只有依赖于反汇编反编译软件。但是恶意代码通常会使用一些混淆技术干扰这类软件,导致其很难准确还原代码。而动态分析虽然可以在恶意代码执行过程中获取其行为,但是局限于单一执行路径,即只能获取当前执行过程中展现出的一条行为路径。对于有多种行为路径的恶意代码,尤其是在多种无害行为路径中隐藏一条恶意行为路径的恶意代码,无法有效地开展分析。\n[0005] 随着恶意代码分析检测技术的发展,恶意代码开发者也不断更新其技术手段,为了躲避分析检测,目前已经出现了检测虚拟分析环境从而隐藏行为的方法,以及只有在特定条件下才实施其恶意行为的隐藏手段。为恶意代码分析及防范工作带来了巨大的挑战。\n[0006] 研究恶意代码隐藏行为的分析方法,从而全面、有效地分析恶意代码的隐藏行为,进一步有效指导恶意代码检测,是恶意代码防御工作中的重要基础问题。当前恶意代码隐藏行为分析方法中的主要问题有:动态分析只分析一段时间内恶意代码执行的行为,对于一些延时隐藏的行为容易漏报;动态分析过程只能分析当前执行的行为,无法对特定条件下才出现的隐性恶意行为路径实施有效地分析,对于探测运行环境及条件而隐藏恶意行为的恶意代码无法实施有效的分析;动态分析大多是追踪被动分析,缺少有效主动发掘恶意代码隐藏行为的方法。\n发明内容\n[0007] 本发明的目的在于提供一种恶意代码隐藏行为挖掘方法及系统,通过在动态运行过程中分析恶意代码执行代码中可能存在的延时和条件控制语句,为其提供满足其可能执行的行为路径的条件,主动触发其可能的潜在隐藏行为,从而主动发掘出恶意代码的隐藏行为,实现隐藏行为分析。\n[0008] 本发明的主要内容是:将待分析的恶意代码在可控环境中运行,监控其执行信息,针对延时执行和条件判断两种隐藏行为,通过监控相关的实现指令和函数,向其输入满足隐藏行为执行的相关条件,使其执行相关行为路径,实现隐藏行为的挖掘。\n[0009] 具体地,本发明采用的技术方案如下:\n[0010] 一种恶意代码隐藏行为挖掘方法,其步骤包括:\n[0011] 1)在虚拟环境中运行恶意代码,逐条监控恶意代码执行的指令信息和函数信息;\n[0012] 2)判断恶意代码执行的指令信息和函数信息中是否有隐藏行为路径相关的指令和函数,所述隐藏行为包含延时隐藏和条件判断隐藏两类;\n[0013] 3)若检测到延时隐藏相关的执行信息,通过结束相应的延时行为使恶意代码继续执行其后续指令和函数;\n[0014] 4)若检测到条件判断隐藏相关的执行信息,根据其条件判断分类,通过满足其不同路径的执行条件,发掘恶意代码的可能执行路径;\n[0015] 5)将分析完成的恶意代码执行的多种可能行为路径信息以树的形式表示,生成恶意代码行为路径树。\n[0016] 进一步地,步骤1)所述的恶意代码执行的指令信息和函数信息的监控方法为:将待分析的恶意代码运行于硬件模拟环境中,通过动态反汇编,监控恶意代码执行的指令序列;通过挂钩函数,监控相关函数信息。\n[0017] 进一步地,步骤2)所述的隐藏行为路径相关的指令和函数,可由用户根据需要自行定义,本发明中主要分为延时隐藏和条件判断隐藏两类。\n[0018] 进一步地,步骤2)所述的延时隐藏是指恶意代码通过一些手段延迟恶意行为的出现,以躲避有限分析事件的动态分析;所述的条件判断隐藏是指恶意代码在执行恶意行为之前,通过判断一些执行条件,例如系统及网络状态等,当一定条件满足时才执行恶意行为。\n[0019] 进一步地,步骤3)所述的延时隐藏主要包括通过sleep函数延时和循环延时两类常用延时隐藏行为。\n[0020] 进一步地,步骤3)所述的结束相应的延时行为的方法是:针对sleep函数,通过将硬件时间调整为其之后的时间结束该函数;针对循环延时,通过修改相应寄存器标志位结束循环的方法来实现。\n[0021] 进一步地,步骤4)所述的条件判断隐藏主要包括:用户交互条件和独立条件判断两大类,其中用户互动条件是指判断是否有用户输入事件(包括鼠标和键盘事件),独立判断条件只是在执行过程中判断各类不需人工干预的各类系统及网络条件等。\n[0022] 进一步地,步骤4)中所述的满足不同路径的执行条件的方法是:分析恶意代码执行过程中的条件判断语句,针对用户交互条件判断,当发现等待键盘和鼠标事件的条件判断语句时,启动相应的函数调用模块发送相应的键盘和鼠标信息满足其执行条件;针对独立条件判断,保存条件判断语句发生时系统映像(snapshot)和判断表达式,然后继续执行,当前路径执行完毕时,会退到保存映像的位置,更改其判断条件的结果,使其执行其他路径从而挖掘隐藏执行路径,若在执行过程中遇到多次条件判断,则通过计算路径中所有判断表达式的结果判断可能的条件值。\n[0023] 一种恶意代码隐藏行为挖掘系统,其包括:\n[0024] 硬件模拟器,用于虚拟执行环境以运行和监控恶意代码;\n[0025] 指令信息监控模块,集成在硬件模拟器的指令翻译模块中,用于在运行过程中监控并记录恶意代码执行的指令信息;\n[0026] 函数信息监控模块,集成在硬件模拟器中,并连接指令信息监控记录模块,用于在恶意代码运行过程中,通过判断指令跳转和模拟内存数据监控恶意代码执行的函数信息;\n[0027] 条件判断分析模块,连接指令信息监控模块和函数信息监控模块,用于检测恶意代码执行的指令和函数信息中的条件判断语句;\n[0028] 条件输入模块,连接条件判断分析模块和硬件模拟器的虚拟执行环境,用于产生在分析过程中使代码执行不同行为路径所需要的条件输入;\n[0029] 运行映像模块,连接硬件模拟器的虚拟执行环境、条件判断分析模块和条件输入模块,用于记录有多种可能执行路径时执行每条路径之前的系统及代码状态映像;\n[0030] 行为树构建模块,连接指令信息监控模块、函数信息监控模块、条件分析判断模块和条件输入模块,用于根据获取的恶意代码不同行为路径构建恶意代码行为路径树。\n[0031] 本发明的优点和积极效果如下:\n[0032] 本发明针对恶意代码动态分析局限于有限时间单一路径的问题,通过分析恶意代码常用的隐藏行为方法,利用可控环境下监控判断和主动挖掘的分析方法,可有效挖掘恶意代码通过延时隐藏和条件判断隐藏的方式躲避分析的隐藏行为,有效发现其可能存在的多种隐藏行为路径,从而提高了恶意代码的隐藏行为分析和挖掘能力。\n附图说明\n[0033] 图1是恶意代码隐藏行为挖掘方法流程图。\n[0034] 图2是恶意代码隐藏行为挖掘系统模块图。\n具体实施方式\n[0035] 下面通过具体实施例和附图,对本发明做进一步说明。\n[0036] 如图1所示,本发明的恶意代码隐藏行为挖掘方法,包括如下步骤:\n[0037] 1、监控并记录恶意代码动态执行的指令信息和函数信息。\n[0038] 本发明使用硬件模拟器在虚拟操作系统中动态运行待分析的恶意代码,并在硬件模拟器中监控并记录恶意代码执行的指令及函数信息。指令监控通过在硬件模拟器的中间翻译模块中,使用反汇编的方法实现逐条指令提取,并记录相应的指令信息。函数信息监控则通过在虚拟内存中识别系统数据结构,计算出相应的函数调用地址,然后通过指令跳转地址和函数调用地址的比较判断是否调用了需要监控的函数并记录相应信息。\n[0039] 2、判断是否出现隐藏行为路径相关的指令和函数。\n[0040] 通过对恶意代码常用隐藏行为的分析,本发明中将恶意代码常用的隐藏行为分为延时隐藏和条件判断隐藏两大类。延时隐藏是指恶意代码通过延时执行恶意行为来躲避动态分析环境的检测的行为隐藏方法,条件判断隐藏是指恶意代码通过判断一些系统、网络以及用户交互条件,只在满足一定条件下才执行恶意行为的隐藏方法。\n[0041] 延时隐藏的方法通常包括使用sleep函数的延时和循环延时两大类。针对sleep函数延时,本发明通过挂钩函数的方式进行sleep函数检测。针对循环延时,通过监控恶意代码执行的指令中是否含有循环,当发现存在循环时,进行进一步分析。\n[0042] 对于条件判断隐藏,本发明根据是否包含用户交互将其分为用户交互条件和独立判断条件两大类。在恶意代码执行过程中,当监控到条件判断语句的时候,记录相关的信息,构建相应的映像文件记录当前系统及恶意代码执行的各类状态信息,然后提交到后续步骤对条件判断语句进行进一步分析及处理。\n[0043] 3、对检测到的延时隐藏行为,通过结束其相应延时行为使恶意代码继续执行。\n[0044] 针对步骤2中检测到的延时隐藏行为进行相应的处理。当检测到sleep函数被调用时,读取堆栈中的延时时间,然后将硬件模拟器的时间调整到相应的延时时间之后,使条件满足,从而使恶意代码进一步执行后续行为。\n[0045] 当检测到循环存在时。分析识别出循环控制流向前转移的指令,当再次执行到该转移指令的时候,通过将虚拟CPU中的EFLAGS寄存器相应的标志位至其反位的方式,使循环结束,从而使恶意代码开始执行后续行为。\n[0046] 4、对检测到的条件判断语句可能导致的隐藏行为,通过满足其不同条件,挖掘潜在的隐藏行为路径。\n[0047] 当步骤2检测到的条件判断语句时,分析其判断的条件,根据是否有用户交互进行不同的处理,当需要用户交互时,即判断是否有用户鼠标和键盘事件发生,此时,通过调用相应的鼠标接口函数do_mouse和键盘接口函数do_send_key发送相应的鼠标和键盘消息,以满足后续行为的执行条件。同时,在调用相应接口函数之前,记录相应的系统映像,在分析完此路径之后,退回到此映像,分析另一条没有满足交互时的行为信息,以得到较为全面的恶意代码行为。这里需要注意的是,由于大多数恶意代码通过检测是否有用户输入判断是否在真实环境而非分析环境中,因为,满足用户交互条件下可能执行的恶意行为的概率比较大,因此我们先分析满足的这一条件下的行为。\n[0048] 如果是独立判断条件,即不需要用户交互的条件,则分析判断语句并保存当前系统映像。从第一次条件判断语句开始,保存系统映像和当前的判断条件,然后分析可能的不同后续分支路径。执行完一条路径后,回到相应的判断条件处的系统映像,然后执行不同的条件分支。从而挖掘恶意代码可能执行的不同行为路径。需要注意的是,如果在一条路径后续继续出现其他条件判断语句,则采用递归的方式逐层进行分析。此外,本发明为了降低不可能路径的消耗,在分析过程中保存路径中所有的条件判断语句,在新的条件判断语句产生时,通过计算该路径所有的条件判断,只分析满足所有路径条件即实际可能的数据结果产生的真实潜在路径。\n[0049] 5、将恶意代码可能执行的行为路径构建为恶意代码行为路径树。\n[0050] 通过上述分析,可挖掘出恶意代码可能存在的隐藏行为。本发明将动态执行挖掘出的恶意代码各种行为以树的结构进行表示。恶意代码行为路径树的构造过程如下:恶意代码执行的第一条信息开始生成该行为树;此后,每执行的下一条信息作为子节点添加到该树;当检测到延时隐藏信息时,在相应执行信息节点标记延时条件,然后继续添加后续子节点;当检测到条件判断语句时,在相应的节点保存条件判断信息,然后根据不同的条件添加不同的子节点表示后续执行子树,即保存系统映像之后标记相应的节点,当分析玩一条路径后回到相应的节点添加其他子树,直到执行完毕。\n[0051] 以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。
法律信息
- 2016-09-21
- 2014-06-25
实质审查的生效
IPC(主分类): G06F 21/56
专利申请号: 201410058889.9
申请日: 2014.02.20
- 2014-05-21
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-02-22
|
2011-09-28
| | |
2
| |
2013-03-20
|
2012-11-21
| | |
3
| |
2006-12-27
|
2005-06-23
| | |
4
| |
2012-09-19
|
2011-03-11
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |