具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施方式,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
请参考图1,为本发明实施例一可疑代码分析方法的流程示意图,其步骤包括:
步骤S10:创建代码虚拟执行环境,所述代码虚拟执行环境创建主机系统的常用进程。
首先,启动可疑代码行为采集分析环境程序(MCVEE.EXE),并初始化可疑代码行为采集分析环境。所述初始化过程包括:加载各功能模块,所述功能模块可包括文件模块、注册表模块、内核对象模块和管道通信模块。
所述文件模块用于对代码虚拟执行环境中运行的进程虚拟出一个文件系统,使得代码虚拟执行环境中的进程都运行于这个虚拟的文件系统上,从而保护主机文件系统不被可疑代码破坏。
所述注册表模块用于对代码虚拟执行环境中运行的进程虚拟出一个注册表系统,使得代码虚拟执行环境中的进程都运行于这个虚拟的注册表系统上,从而保护主机注册表系统不被可疑代码破坏。
所述内核对象模块用于对代码虚拟执行环境中运行的进程虚拟出一个内核对象的命名空间,保护代码虚拟执行环境中的内核对象不被主机系统进程所干扰,提高代码虚拟执行环境与主机系统的隔离度。
所述管道通信模块用于限制主机进程和代码虚拟执行环境中的进程之间进行通信,只允许主机进程和代码虚拟执行环境中的进程利用一个特定的命名管道进行通信。这个命名管道对于代码虚拟执行环境中的可疑代码是不可见的,并只被代码虚拟执行环境进程本身所使用,这个命名管道可以用于把代码虚拟执行环境中的日志文件安全的传送到主机系统中。
所述文件模块、注册表模块和内核对象模块构造出一个代码虚拟执行环境,所述代码虚拟执行环境创建主机系统的常用进程,比如Explorer.exe进程等,鉴于可疑代码通常通过进程名来确定一个进程,因此所述代码虚拟执行环境启动的常用进程不必是真正在主机上的进程,而是一个同名的假进程。
所述功能模块还可包括网络模块或清理模块,所述网络模块用于实现代码虚拟执行环境中的进程的网络传输功能,并把属于主机系统和代码虚拟执行环境的网络数据高效的分流;所述清理模块用于在采集分析完可疑代码后,关闭代码虚拟执行环境,清理代码虚拟执行环境所创建的虚拟文件系统、虚拟注册表系统、虚拟内核对象等。
所述网络模块包括IP地址生成模块、行为记录接口模块和数据分流模块,所述IP地址生成模块用于在所述代码虚拟执行环境启动时获得一个可用的不同于主机IP地址的IP地址(虚假IP),所述代码虚拟执行环境中所有的进程进行网络通信时都使用这个IP地址,可使主机与所述代码虚拟执行环境的网络行为相互独立。
当所述代码虚拟执行环境中的进程需要发送数据时,将所述代码虚拟执行环境中的进程的网络数据用IP地址生成模块获得的IP地址进行封装,进程操作之后被所述行为记录接口模块处理,若这个操作是要被记录在日志文件的操作,那么行为记录接口按照用户的设置把这个行为记录下来,然后交给下一步,否则,直接发送所述封装的数据包。
当网络上的数据包发送给所述代码虚拟执行环境中的进程时,数据包首先交给所述数据分流模块进行处理,若数据包属于主机系统,则直接把数据包转给主机系统,进程操作之后被所述行为记录接口模块处理,若这个操作是要被记录在日志文件的操作,那么行为记录接口按照用户的设置把这个行为记录下来,然后交给下一步,否则,直接把数据包交给所述代码虚拟执行环境中的进程,由此实现数据的分流。
步骤S12:将可疑代码对主机系统的常用进程的操作重定向到所述代码虚拟执行环境创建的进程。
可疑代码启动后可能对主机系统中的常用进程(如Explorer.exe)进行操作,为避免可疑代码经常对这些进程进行操作和破坏,所以需要将这些操作重定向到所述代码虚拟执行环境创建的常用进程上,同时方便所述代码虚拟执行环境对所述可疑代码的行为进行检测和分析。
步骤14:将可疑代码对主机系统的文件系统或注册表的操作重定向到所述代码虚拟执行环境创建的虚拟的文件系统或虚拟的注册表。
这里的重定向只是将可疑代码对主机系统的文件系统或注册表的操作进行重定向,对于可疑代码对主机系统的内核对象的操作则不做重定向,直接允许其操作,因为操作系统级虚拟机不是运行于最底层,因此需要用到大量的主机操作系统的内核结构与内核对象。
步骤16:所述代码虚拟执行环境记录可疑代码运行时的行为特征并保存为日志文件。
可疑代码对主机系统的常用进程、主机系统的文件系统或注册表的操作重定向到所述代码虚拟执行环境创建的进程、虚拟的文件系统或虚拟的注册表后,可疑代码对重定向的对应进程、虚拟的文件系统或虚拟的注册表进行操作,所述代码虚拟执行环境记录可疑代码运行时的行为特征并保存为日志文件;具体实现时可提供一个行为记录的接口,用户可以根据自己的行为分析程序的需要,通过这个行为记录接口,设置需要记录的特征以及日志文件的相关配置,将可疑代码运行时的行为特征并保存为日志文件便于后续分析。
步骤18:将所述日志文件通过命名管道发送至所述主机系统进行分析,所述命名管道对于所述代码虚拟执行环境中的可疑代码是不可见的,并只被所述代码虚拟执行环境中的进程本身所使用,所以可疑代码不能通过这个命名管道对主机系统的进程造成影响。
本发明实施例通过创建所述代码虚拟执行环境,在可疑代码对主机系统操作后,将记录的可疑代码的日志文件通过命名管道发送至所述主机系统进行分析,由于这个命名管道对于所述代码虚拟执行环境中的可疑代码是不可见的,可避免可疑代码不能通过这个命名管道对主机系统的进程造成影响。
请参考图2,为本发明实施例二可疑代码分析方法的流程示意图,其步骤包括:
步骤20:创建代码虚拟执行环境,所述代码虚拟执行环境创建主机系统的常用进程。
首先,启动可疑代码行为采集分析环境程序(MCVEE.ExE),并初始化可疑代码行为采集分析环境。所述初始化过程包括:加载各功能模块,所述功能模块可包括文件模块、注册表模块、内核对象模块和管道通信模块。
所述文件模块、注册表模块、内核对象模块构造出一个代码虚拟执行环境,所述代码虚拟执行环境创建主机系统的常用进程,比如Explorer.exe进程等,鉴于可疑代码通常通过进程名来确定一个进程,因此所述代码虚拟执行环境启动的常用进程不必是真正在主机上的进程,而是一个同名的假进程。
所述管道通信模块用于限制主机进程和代码虚拟执行环境中的进程之间进行通信,只允许主机进程和代码虚拟执行环境中的进程利用一个特定的命名管道进行通信。这个命名管道对于代码虚拟执行环境中的可疑代码是不可见的,并只被代码虚拟执行环境进程本身所使用,这个命名管道可以用于把代码虚拟执行环境中的日志文件安全的传送到主机系统中。
所述功能模块还可包括网络模块或清理模块,所述网络模块用于实现代码虚拟执行环境中的进程的网络传输功能,并把属于主机系统和代码虚拟执行环境的网络数据高效的分流;所述清理模块用于在采集分析完可疑代码后,关闭代码虚拟执行环境,清理代码虚拟执行环境所创建的虚拟文件系统、虚拟注册表系统、虚拟内核对象等。
步骤21:启动可疑代码,所述可疑代码对主机系统的进程进行操作。
可疑代码启动后,对主机系统中的进程、文件系统、注册表或内核进行操作。
步骤22:禁止非所述代码虚拟执行环境的进程对所述代码虚拟执行环境的操作。
对于非所述代码虚拟执行环境的进程对所述代码虚拟执行环境的操作,比如主机系统运行的应用程序,禁止其对所述代码虚拟执行环境的进程进行的操作,从而可以做到主机系统进程的操作不影响到代码虚拟执行环境的运行。
步骤S23:将可疑代码对主机系统的常用进程的操作重定向到所述代码虚拟执行环境创建的进程。
可疑代码启动后可能对主机系统中的常用进程(如Explorer.exe)进行操作,为避免可疑代码经常对这些进程进行操作和破坏,所以需要将这些操作重定向到所述代码虚拟执行环境创建的常用进程上,同时方便所述代码虚拟执行环境对所述可疑代码的行为进行检测和分析。
步骤24:将可疑代码对主机系统的文件系统或注册表的操作重定向到所述代码虚拟执行环境创建的虚拟的文件系统或虚拟的注册表。
这里的重定向只是将可疑代码对主机系统的文件系统或注册表的操作进行重定向,对于可疑代码对主机系统的内核对象的操作则不做重定向,直接允许其操作,因为操作系统级虚拟机不是运行于最底层,因此需要用到大量的主机操作系统的内核结构与内核对象。
步骤25:所述代码虚拟执行环境记录可疑代码运行时的行为特征并保存为日志文件。
可疑代码对主机系统的常用进程、主机系统的文件系统或注册表的操作重定向到所述代码虚拟执行环境创建的进程、虚拟的文件系统或虚拟的注册表后,可疑代码对重定向的对应进程、虚拟的文件系统或虚拟的注册表进行操作,所述代码虚拟执行环境记录可疑代码运行时的行为特征并保存为日志文件;具体实现时可提供一个行为记录的接口,用户可以根据自己的行为分析程序的需要,通过这个行为记录接口,设置需要记录的特征以及日志文件的相关配置,将可疑代码运行时的行为特征并保存为日志文件便于后续分析。
步骤26:将所述日志文件通过命名管道发送至所述主机系统进行分析,所述命名管道对于所述代码虚拟执行环境中的可疑代码是不可见的,并只被所述代码虚拟执行环境中的进程本身所使用,所以可疑代码不能通过这个命名管道对主机系统的进程造成影响。
步骤27:限制所述代码虚拟执行环境中的可疑代码进程获取主机系统中的进程信息,可保护主机系统的进程不被可疑代码进程破坏。
本发明实施例可先允许所述代码虚拟执行环境中的可疑代码进程获取主机系统的进程信息的行为,再从返回结果中去掉那些不属于所述代码虚拟执行环境中进程的内容。
步骤28:限制所述代码虚拟执行环境中的可疑代码进程发消息给主机系统中的进程,还可同时限制主机中的进程发消息给所述代码虚拟执行环境中的进程,从而使主机系统与所述代码虚拟执行环境更好的隔离开。
本发明实施例通过创建所述代码虚拟执行环境,禁止非所述代码虚拟执行环境的进程对所述代码虚拟执行环境的操作,可避免主机系统进程的操作影响到代码虚拟执行环境的运行;同时在可疑代码对主机系统操作后,将记录的可疑代码的日志文件通过命名管道发送至所述主机系统进行分析,由于这个命名管道对于所述代码虚拟执行环境中的可疑代码是不可见的,可避免可疑代码不能通过这个命名管道对主机系统的进程造成影响,另外通过限制所述代码虚拟执行环境中的可疑代码进程获取主机系统中的进程信息及限制所述代码虚拟执行环境中的可疑代码进程发消息给主机系统中的进程可使主机系统与所述代码虚拟执行环境更好的隔离开。
请参考图3,为本发明实施例一可疑代码分析装置的结构示意图,所述可疑代码分析装置包括:虚拟执行环境创建模块40、重定向模块60、行为记录模块80及管道通信模块100。
所述虚拟执行环境创建模块40,用于创建代码虚拟执行环境,所述代码虚拟执行环境创建主机系统的常用进程。所述虚拟执行环境创建模块40首先启动可疑代码行为采集分析环境程序(MCVEE.EXE),并初始化可疑代码行为采集分析环境。所述初始化过程包括:加载各功能模块,所述功能模块可包括文件模块、注册表模块、内核对象模块和管道通信模块。
所述文件模块、注册表模块、内核对象模块构造出一个代码虚拟执行环境,所述代码虚拟执行环境创建主机系统的常用进程,比如Explorer.exe进程等,鉴于可疑代码通常通过进程名来确定一个进程,因此所述代码虚拟执行环境启动的常用进程不必是真正在主机上的进程,而是一个同名的假进程。
所述管道通信模块用于限制主机进程和代码虚拟执行环境中的进程之间进行通信,只允许主机进程和代码虚拟执行环境中的进程利用一个特定的命名管道进行通信。这个命名管道对于代码虚拟执行环境中的可疑代码是不可见的,并只被代码虚拟执行环境进程本身所使用,这个命名管道可以用于把代码虚拟执行环境中的日志文件安全的传送到主机系统中。
本发明实施例中初始化过程中加载的功能模块还包括网络模块,用于完成所述代码虚拟执行环境中进程的网络数据传输功能,并把属于主机系统和所述代码虚拟执行环境的网络数据高效的分流。所述网络模块包括IP地址生成模块、行为记录接口模块和数据分流模块,所述IP地址生成模块用于在所述代码虚拟执行环境启动时获得一个可用的不同于主机IP地址的IP地址(虚假IP),所述代码虚拟执行环境中所有的进程进行网络通信时都使用这个IP地址,可使主机与所述代码虚拟执行环境的网络行为相互独立。
当所述代码虚拟执行环境中的进程需要发送数据时,将所述代码虚拟执行环境中的进程的网络数据用IP地址生成模块获得的IP地址进行封装,进程操作之后被所述行为记录接口模块处理,若这个操作是要被记录在日志文件的操作,那么行为记录接口按照用户的设置把这个行为记录下来,然后交给下一步,否则,直接发送所述封装的数据包。
当网络上的数据包发送给所述代码虚拟执行环境中的进程时,数据包首先交给所述数据分流模块进行处理,若数据包属于主机系统,则直接把数据包转给主机系统,进程操作之后被所述行为记录接口模块处理,若这个操作是要被记录在日志文件的操作,那么行为记录接口按照用户的设置把这个行为记录下来,然后交给下一步,否则,直接把数据包交给所述代码虚拟执行环境中的进程,由此实现数据的分流。
所述重定向模块60,用于将可疑代码对主机系统的常用进程的操作重定向到所述代码虚拟执行环境创建的进程,将可疑代码对主机系统的文件系统或注册表的操作重定向到所述代码虚拟执行环境创建的虚拟的文件系统或虚拟的注册表。
可疑代码启动后可能对主机系统中的常用进程(如Explorer.exe)进行操作,为避免可疑代码经常对这些进程进行操作和破坏,所述重定向模块60将这些操作重定向到所述代码虚拟执行环境创建的常用进程上。
另外,所述重定向模块60只是将可疑代码对主机系统的文件系统或注册表的操作进行重定向,对于可疑代码对主机系统的内核对象的操作则不做重定向,直接允许其操作,因为操作系统级虚拟机不是运行于最底层,因此需要用到大量的主机操作系统的内核结构与内核对象。
所述行为记录模块80,用于记录可疑代码运行时的行为特征并保存为日志文件。可疑代码对主机系统的常用进程、主机系统的文件系统或注册表的操作重定向到所述代码虚拟执行环境创建的进程、虚拟的文件系统或虚拟的注册表后,可疑代码对重定向的对应进程、虚拟的文件系统或虚拟的注册表进行操作,所述行为记录模块80记录可疑代码运行时的行为特征并保存为日志文件;具体实现时可提供一个行为记录的接口,用户可以根据自己的行为分析程序的需要,通过这个行为记录接口,设置需要记录的特征以及日志文件的相关配置,将可疑代码运行时的行为特征并保存为日志文件便于后续分析。
所述管道通信模块100,用于将所述行为记录模块80记录的日志文件通过命名管道发送至所述主机系统进行分析,所述命名管道对于所述代码虚拟执行环境中的可疑代码是不可见的,并只被所述代码虚拟执行环境中的进程本身所使用,所以可疑代码不能通过这个命名管道对主机系统的进程造成影响。
本发明实施例通过所述虚拟执行环境创建模块40创建所述代码虚拟执行环境,在可疑代码对主机系统操作后,所述管道通信模块100将记录的可疑代码的日志文件通过命名管道发送至所述主机系统进行分析,由于这个命名管道对于所述代码虚拟执行环境中的可疑代码是不可见的,可避免可疑代码不能通过这个命名管道对主机系统的进程造成影响。
请参考图4,为本发明实施例二可疑代码分析装置的结构示意图,其与图3中可疑代码分析装置相似,其包括虚拟执行环境创建模块40、重定向模块60、行为记录模块80及管道通信模块100,还可包括一个可疑代码启动模块50、访问控制模块70、分析模块90、进程信息限制模块120或消息限制模块140。
所述虚拟执行环境创建模块40用于创建代码虚拟执行环境,所述代码虚拟执行环境创建主机系统的常用进程。
所述可疑代码启动模块50,用于启动可疑代码,所述可疑代码对主机系统操作,所述操作包括可疑代码对主机系统的常用进程、文件系统、注册表或内核对象的操作。
所述重定向模块60,用于将可疑代码对主机系统的常用进程的操作重定向到所述代码虚拟执行环境创建的进程,将可疑代码对主机系统的文件系统或注册表的操作重定向到所述代码虚拟执行环境创建的虚拟的文件系统或虚拟的注册表。
可疑代码启动后可能对主机系统中的常用进程(如Explorer.exe)进行操作,为避免可疑代码经常对这些进程进行操作和破坏,所述重定向模块60将这些操作重定向到所述代码虚拟执行环境创建的常用进程上。
另外,所述重定向模块60只是将可疑代码对主机系统的文件系统或注册表的操作进行重定向,对于可疑代码对主机系统的内核对象的操作则不做重定向,直接允许其操作,因为操作系统级虚拟机不是运行于最底层,因此需要用到大量的主机操作系统的内核结构与内核对象。
所述访问控制模块70,用于禁止非所述代码虚拟执行环境的进程对所述代码虚拟执行环境的操作。
对于非所述代码虚拟执行环境的进程对所述代码虚拟执行环境的操作,比如主机系统运行的应用程序,所述访问控制模块70禁止其对非所述代码虚拟执行环境的进程进行的操作,从而可以做到主机系统进程的操作不影响到代码虚拟执行环境的运行。
所述行为记录模块80,用于记录可疑代码运行时的行为特征并保存为日志文件。可疑代码对主机系统的常用进程、主机系统的文件系统或注册表的操作重定向到所述代码虚拟执行环境创建的进程、虚拟的文件系统或虚拟的注册表后,可疑代码对重定向的对应进程、虚拟的文件系统或虚拟的注册表进行操作,所述行为记录模块80记录可疑代码运行时的行为特征并保存为日志文件;具体实现时可提供一个行为记录的接口,用户可以根据自己的行为分析程序的需要,通过这个行为记录接口,设置需要记录的特征以及日志文件的相关配置,将可疑代码运行时的行为特征并保存为日志文件便于后续分析。
所述管道通信模块100,用于将所述行为记录模块80记录的日志文件通过命名管道发送至所述主机系统进行分析,所述命名管道对于所述代码虚拟执行环境中的可疑代码是不可见的,并只被所述代码虚拟执行环境中的进程本身所使用,所以可疑代码不能通过这个命名管道对主机系统的进程造成影响。
所述分析模块90,用于接收所述管道通信模块100发送的日志文件进行可疑代码分析。
所述进程信息限制模块120,用于限制所述代码虚拟执行环境中的可疑代码进程获取主机系统中的进程信息,可保护主机系统的进程不被可疑代码进程破坏。
所述消息限制模块140,用于限制所述代码虚拟执行环境中的可疑代码进程发消息给主机系统中的进程,还可同时限制主机中的进程发消息给所述代码虚拟执行环境中的进程,从而使主机系统与所述代码虚拟执行环境更好的隔离开。
本发明实施例通过创建所述代码虚拟执行环境,所述访问控制模块70禁止非所述代码虚拟执行环境的进程对所述代码虚拟执行环境的操作,可避免主机系统进程的操作影响到代码虚拟执行环境的运行;同时在可疑代码对主机系统操作后,所述管道通信模块100将记录的可疑代码的日志文件通过命名管道发送至所述主机系统进行分析,由于这个命名管道对于所述代码虚拟执行环境中的可疑代码是不可见的,可避免可疑代码不能通过这个命名管道对主机系统的进程造成影响;另外通过所述进程信息限制模块120限制所述代码虚拟执行环境中的可疑代码进程获取主机系统中的进程信息及所述消息限制模块140限制所述代码虚拟执行环境中的可疑代码进程发消息给主机系统中的进程可使主机系统与所述代码虚拟执行环境更好的隔离开。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述程序可以存储于一计算机可读取存储介质中,所述存储介质为ROM/RAM、磁碟、光盘等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。