著录项信息
专利名称 | 一种恶意代码自动分析系统及方法 |
申请号 | CN200610080454.X | 申请日期 | 2006-05-16 |
法律状态 | 权利终止 | 申报国家 | 暂无 |
公开/公告日 | 2006-10-11 | 公开/公告号 | CN1845120 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/00 | IPC分类号 | G;0;6;F;2;1;/;0;0查看分类表>
|
申请人 | 北京启明星辰信息技术有限公司 | 申请人地址 |
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京启明星辰信息技术有限公司,北京启明星辰信息安全技术有限公司 | 当前权利人 | 北京启明星辰信息技术有限公司,北京启明星辰信息安全技术有限公司 |
发明人 | 俞科技;蔡晶晶 |
代理机构 | 北京市商泰律师事务所 | 代理人 | 毛燕生 |
摘要
一种恶意代码自动分析系统含有多个相对独立的模块构成,恶意代码运行模块,文件监视模块,注册表监视模块,函数调用监视模块,网络数据监视模块,程序内部行为监视模块,恶意代码行为自动分析模块,方法含有以下步骤:加载文件监视和注册表监视的驱动程序,加载预定义要记录的敏感函数,在恶意代码运行的过程,同步记录应用程序接口调用,文件,注册表的访问,网络操作;当恶意代码进程结束而自动退出,系统对这些行为进行自动分析,输出自动分析结果;本发明提供的自动分析方法,完全记录恶意代码运行的行为,并对于恶意代码使用的未知壳或变形壳不受影响。大幅度地提高了恶意代码分析人员的工作效率。
1.一种恶意代码自动分析方法,它包括加载文件监视和注册表监视 模块的步骤、加载预定义敏感函数的步骤、启动恶意代码运行的步骤、记录 应用程序接口调用、文件和注册表访问监视步骤、网络操作监视步骤和恶意 代码行为自动分析步骤,其特征在于:
它还包括程序内部行为监视步骤,这些程序内部行为信息包括模块加载 和卸载、线程创建和退出、内存访问和查看;
所述的由程序内部行为监控步骤收集的恶意代码程序内部行为信息将作 为恶意代码行为自动分析步骤输入的一部分进行综合分析;
文件监视以驱动程序的形式安装在操作系统中,系统通过 DeviceIoControl WINDOWS API来与驱动程序进行通信,获得对文件的所有 的操作,然后根据进程ID来判断是否是恶意代码所进行的操作;
判断程序是否具有恶意性质实现步骤有:
步骤(1),修改每个需要拦截的API的第一个代码字节为0xCC,并保存 原代码字节;
步骤(2),恶意代码运行过程中,一旦调用到该API函数,那么将执行0xCC, 导致产生异常,异常处理程序通过判断,判断该异常是否是由于执行了该API 的第一个代码字节,如果是,则把该内存处的代码替换回原来的字节,并继 续执行下一条指令,当执行到下一条指令时,再把该API的头一个字节改为 0xCC;
步骤(3),记录拦截到的API函数。
2.一种恶意代码自动分析系统,它包括以下模块:
恶意代码运行模块:用于控制恶意代码进程的启动,终止;
文件监视模块:通过文件系统驱动实现,以驱动程序的形式安装在操作 系统中,通过DeviceIoControl来与驱动程序进行通信,获得对文件的所有 访问操作,然后根据进程ID来判断是否是恶意代码所进行的操作;
注册表监视模块:通过驱动程序的形式实现对注册表的监视;
函数调用监视模块:系统提供了一系列的敏感的应用程序接口函数,通过 记录这些应用程序接口的调用,以及分析其它附近应用程序接口调用的组 合,判断该程序是否具有恶意性质,系统在记录应用程序接口本身的同时, 也会记录由恶意代码传送过来的参数和返回地址;
网络数据监视模块:在记录网络数据包的同时,记录了发送该数据包时 程序的状态,网络通信函数调用的位置和时间;
恶意代码行为自动分析模块:根据以上各模块所记录的结果,选出由恶 意代码运行所导致的行为,剔出对恶意代码行为分析无价值的部分,并对这 些行为进行分析汇总;
其特征在于:
所述恶意代码自动分析系统还包括程序内部行为监视模块,该模块包括 模块的载入与卸载,线程的创建与退出,内存访问与查看功能;
函数调用监视模块,修改每个需要拦截的API的第一个代码字节为0xCC, 并保存原代码字节,恶意代码运行过程中,一旦调用到该API函数,那么将 执行0xCC,导致产生异常,异常处理程序通过判断,判断该异常是否是由 于执行了该API的第一个代码字节,如果是,则把该内存处的代码替换回原 来的字节,并继续执行下一条指令,当执行到下一条指令时,再把该API的 头一个字节改为0xCC;记录拦截到的API函数;
所述由程序内部行为监控模块收集的恶意代码程序内部行为信息将作为 恶意代码行为自动分析模块输入的一部分进行综合分析。
技术领域\n本发明涉及一种恶意代码自动分析系统及方法。本发明用于WINDOWS(一种 操作系统的名称)环境下恶意代码(应用程序)的分析。\n背景技术\n传统的恶意代码分析是通过人工调试跟踪进行分析的,这就取决于分析者 的经验和能力,而且在许多情况下,会遗漏掉一些恶意代码的行为。随着恶意 代码以每天几十到几百个的数量出现,以往手工逐个静,动态跟踪逆向分析法 在工作效率及成本投入上已不适合现今的需求。即使人工有时间去分析,但是 面对新的变形代码和未知壳,变形壳的出现,人工分析不得不先花大量的精力 在分析和去除变形代码、未知壳上面。\n发明内容\n为了克服现有的技术的不足,本发明提供一种恶意代码自动分析系统及 方法,人工只要进行很少量的参与,就可以基本完成对恶意代码的分析工作。 用户只需要输入恶意代码的样本体,系统就会输出对该恶意代码的分析结果。\n技术方案\n一种恶意代码自动分析系统含有以下多个相对独立的模块构成,这些相对独 立的模块记录恶意代码在运行期间所进行的所有行为:\n恶意代码运行模块,用于控制恶意代码进程的启动,终止,线程的启动,终 止,模块的载入,卸载。\n文件监视模块,文件监视是通过文件系统驱动来实现的,以驱动程序的形式 安装在操作系统中。系统通过DeviceIoControl(WINDOWS API(Application programming interface应用程序接口))来与驱动程序进行通信,获得对文件 的所有的操作,然后根据进程ID来判断是否是恶意代码所进行的操作。\n注册表监视模块,通过驱动程序的形式进行拦截监视。\n函数调用监视模块,系统提供了一系列的敏感的API(Application programming interface)(应用程序接口)函数,通过记录这些API(Application programming interface)(应用程序接口)的调用,以及分析其它附近API(Application programming interface)(应用程序接口)调用的组合,判断该程序是否具有恶意性 质。系统在记录API(Application programming interface)(应用程序接口)本身的同 时,也会记录由恶意代码传送过来的参数和返回地址。\n网络数据监视模块,在记录网络数据包的同时,记录了发送该数据包时程序 的状态,网络通信函数调用的位置和时间。\n程序内部行为监视模块,包括模块的载入与卸载,线程的创建与退出,内存 访问与查看;\n恶意代码行为自动分析模块,根据以上各模块所记录的结果,选出由恶意代 码运行所导致的行为,剔出对恶意代码行为分析无价值的部分,并对这些行为 进行分析汇总。\n恶意代码的运行,对计算机的破坏操作无非是通过对文件、注册表、网络、 API(Application programming interface)(应用程序接口)等的操作完成的。 而本系统在输入恶意代码样本体后,上述所有模块开始启动,并记录恶意代码 运行期间所有的行为,这些行为通过系统的处理,得出分析结果。\n一种恶意代码自动分析方法,含有以下步骤:\n步骤1;系统启动后,先加载文件监视和注册表监视的驱动程序,\n步骤2;等待分析的恶意代码的输入,一旦恶意代码输入本系统,恶意代码 运行模块启动。\n步骤3;加载预定义要记录的敏感函数,\n步骤4;在恶意代码运行的过程,同步记录API(Application programming interface)(应用程序接口)调用,文件,注册表的访问,网络操作;\n步骤5;当恶意代码进程结束而自动退出,或当用户认为当前的分析已足够而强 制结束恶意代码进程后,系统对这些行为进行自动分析,输出自动分析结果;\n步骤6;\n本发明的有益效果是,\n本发明提供的自动分析方法,完全记录恶意代码运行的行为,并对于恶意代 码使用的未知壳或变形壳不受影响。大幅度地提高了恶意代码分析人员的工作 效率。本发明自动分析恶意代码,记录恶意代码的行为,如文件操作,注册表 操作,网络,内存访问,系统API(Application programming interface)(应用 程序接口)调用等行为,并可配置记录敏感的API(Application programming interface)(应用程序接口)调用。通过分析这些记录的行为,可以基本确定恶 意代码的种类和技术细节。分析者通过这一结果,可以进一步地进行精确地针 对性的分析。\n本发明可对恶意代码进行快速地分析,自动得出分析结果,人工只需参与很 少的工作。而现有的技术是人工采用大量的时间在分析工作上,花费很大的精 力,效率很低。\n附图说明\n图1是本发明结构流程图。\n图2是监视模块和分析模块结构图。\n图3是系统运行流程图。\n下面结合附图和实施例对本发明进一步说明。\n具体实施方式\n如图1所示,在恶意代码运行前,用户首先需要定义一批函数,一般情况下, 正常的应用程序很少使用到,或没有必要使用到这些函数,而恶意代码使用到 这些函数的机率相当大。\n系统在开始进行分析前,会从数据库中加载所有的API(Application programming interface)(应用程序接口)函数列表,当恶意代码调用到上述用 户预定义的敏感函数时,就会记录对该函数的调用。\n当API函数加载完毕,系统会加载驱动程序,以便记录恶意代码对文件,注 册表,网络的访问和操作。\n当恶意代码运行完毕,系统将会根据恶意代码运行期间所记录的各种行为, 自动分析其机理。\n图2为监视模块和分析模块关系图。其中恶意代码运行模块负责控制恶意代 码进程的运行,以调试的方式运行恶意代码程序,由CreateProcess(WINDOWS API) 来启动,该模块同时负责程序内部断点的设置。\n以下详细说明监视模块的实施例。\n文件监视\n监视文件或文件的建立,读写。记录文件操作的时间,文件操作的类型,如 建立/读/写,文件操作的结果,如读写的长度和位置。\n文件监视的信息对于进一步地详细分析也十分有意义,分析者可以根据文 件读写的长度和位置、次数进行相应的断点设置,使逆向分析更有效率和目的 性。\n该功能实现步骤:\n文件监视是通过文件系统驱动来实现的,以驱动程序的形式安装在操作系统 中。系统通过DeviceIoControl(WINDOWS API)来与驱动程序进行通信,获得对 文件的所有的操作,然后根据进程ID(进程的唯一标识)来判断是否是恶意代码 所进行的操作。\n注册表监视\n监视注册表的建立,读写等操作。记录注册表操作的时间,操作类型,操 作结果,并记录注册表的位置和数据。\n该功能实现步骤:\n该功能也是通过驱动程序的形式进行拦截监视。驱动程序通过拦截注册表操 作的API来实现本功能。注册表操作API(Application programming interface)(应 用程序接口)包括:\nRegCloseKey\nRegConnectRegistry\nRegCreateKeyEx\nRegDeleteKey\nRegDeleteValue\nRegDisablePredefinedCache\nRegEnumKeyEx\nRegEnumValue\nRegFlushKey\nRegGetKeySecurity\nRegLoadKey\nRegNotifyChangeKeyValue\nRegOpenCurrentUser\nRegOpenKeyEx\nRegOpenUserClassesRoot\nRegOverridePredefKey\nRegQueryInfoKey\nRegQueryMultipleValues\nRegQueryValueEx\nRegReplaceKey\nRegRestoreKey\nRegSaveKey\nRegSetKeySecurity\nRegSetValueEx\nRegUnLoadKey\n函数调用的记录和API(Application programming interface)(应用程序接口)记录,\n系统提供了一系列的敏感的API函数,一般的恶意代码调用这些API函数 的概率非常高,但是普通的应用程序很少调用这些函数。通过记录这些API的 调用,以及分析其它附近API调用的组合,可判断该程序是否具有恶意性质。 系统在记录API本身的同时,也会记录由恶意代码传送过来的参数和返回地址。 该功能实现步骤:\n(1),修改每个需要拦截的API的第一个代码字节为0xCC,并保存 原代码字节;\n(2),恶意代码运行过程中,一旦调用到该API函数,那么将执行 0xCC,导致产生异常。异常处理程序通过判断,判断该异常是否是由 于执行了该API的第一个代码字节。如果是,则把该内存处的代码替 换回原来的字节,并继续执行下一条指令。当执行到下一条指令时, 再把该API的头一个字节改为0xCC;\n(3),记录拦截到的API函数。\n网络数据监视\n越来越多的恶意代码通过网络进行传播。与传统数据抓包工具不同的是, 本系统在记录网络数据包的同时,记录了发送该数据包时程序的状态,网络通 信函数调用的位置和时间。这更有利于恶意代码通信行为的分析。\n该功能实现步骤:\n实现步骤同API(Application programming interface)(应用程序接口)记录的方 法完全相同。任何网络数据包的发送接收都是通过网络API来进行的。如send, recv,sendfrom,sendto等等。当拦截到API时,再判断是不是网络数据发送/接收 的API,取其参数的内容,可以得到数据包的内容。\n程序内部行为的监视\n这些行为包括模块的载入与卸载,线程的创建与退出,内存访问与查看。\n该功能实现步骤:\nWINDOWS系统自带这种功能。当进程以DEBUG_ONLY_THIS_PROCES(C 语言宏名,值为2)的模式启动时,系统会自动为这些内部行为的处理提供接 口。\n恶意代码启动以后,立即调用WaitForDebugEvent(WINDOWS API),调 用线程将会进入阻塞状态,等待调试事件的发生。当恶意代码有模块的载入与 卸载,线程的创建立与退出等行为时,线程就会取消阻塞,并返回上述行为的 信息。\n图3描述了本软件系统的启动过程。如图3所示,在系统启动后,先加载 文件监视和注册表监视的驱动程序,并等待恶意代码的输入。在恶意代码运行 的过程,同步记录API调用,文件,注册表的访问,网络操作等。
法律信息
- 2014-07-09
未缴年费专利权终止
IPC(主分类): G06F 21/00
专利号: ZL 200610080454.X
申请日: 2006.05.16
授权公告日: 2009.02.11
- 2010-06-16
专利权的转移
登记生效日: 2010.05.07
专利权人由北京启明星辰信息技术股份有限公司变更为北京启明星辰信息技术股份有限公司
地址由100081 北京市海淀区中关村南大街变更为100193 北京市海淀区东北旺西路8号中关村软件园21号楼启明星辰大厦
专利权人变更为北京启明星辰信息安全技术有限公司
- 2009-04-22
专利权人的姓名或者名称、地址的变更
专利权人的姓名或者名称、地址的变更变更事项:专利权人变更前:北京启明星辰信息技术有限公司 地址: 北京市海淀区中关村南大街 邮编: 100081变更后:北京启明星辰信息技术股份有限公司 地址: 北京市海淀区中关村南大街 邮编: 100081
- 2009-02-11
- 2006-12-06
- 2006-10-11
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2006-02-22
|
2005-08-03
| | |
2
| |
2003-04-09
|
2001-09-14
| | |
3
| |
2005-07-27
|
2003-04-10
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |