CN109923547B - 程序行为监控设备、分布式对象生成管理设备、存储介质、以及程序行为监视系统 - Google Patents
程序行为监控设备、分布式对象生成管理设备、存储介质、以及程序行为监视系统 Download PDFInfo
- Publication number
- CN109923547B CN109923547B CN201780067370.9A CN201780067370A CN109923547B CN 109923547 B CN109923547 B CN 109923547B CN 201780067370 A CN201780067370 A CN 201780067370A CN 109923547 B CN109923547 B CN 109923547B
- Authority
- CN
- China
- Prior art keywords
- distributed object
- program
- behavior monitoring
- object server
- generation management
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
在本发明的第1形态中具有:在监视对象进程清单上登录作为程序的执行主体同时作为被监视对象的进程的识别信息,当从询问处有任意的关于进程是否是监视对象的询问时,用该进程的识别信息查询上述监视对象进程清单,然后将该进程是否为监视对象的信息返回到上述询问处的监视对象进程管理模块;当生成分布式对象服务器然后保有该分布式对象服务器的识别情报的分布式对象生成管理设备收到来自监视对象进程的分布式对象服务器的使用请求的时候,接收来自该分布式对象生成管理设备的指定通知的通知接收模块。
Description
技术领域
本发明是关于程序行为监控设备,分布式对象生成管理设备,存储介质,以及程序行为监视系统的发明。
背景技术
通常,为了提高软件开发效率,会根据作为程序运行主体的进程的功能不同而进行相应的分段。生成并启动另一个独立进程再进行综合处理是进程分段的方法之一。
进程使独立进程进行处理的第1种方法是,该进程生成子进程,然后委托这个子进程进行处理的技术。
此时,关于父子进程之间的通信,除了TCP/IP等网络通信技术,操作系统提供的命名通道等常用的进程间通信以外,由父子进程之间的存储资源共享也可以使两者之间进行封闭的数据交换。
另一方面,当被分段的进程的处理内容通用性强时,进程使独立进程进行处理的第2种方法,叫做分布式对象技术。利用分布式对象技术,生成并启动作为该独立进程,根据公共调用约定进行通用处理的进程的分布式对象服务器。
例如,第1个进程想要在独立进程进行具有通用性的综合处理时,会向操作系统提供的分布式对象生成管理模块通知可以进行该综合处理的分布式对象服务器的使用请求。
当被指定的分布式对象服务器在所指定的时间点没有运行时,分布式对象生成管理模块生成并启动该分布式对象服务器,将包含访问该分布式对象服务器的方法的应答返回第1个进程。
另一方面,第2个进程在独立进程进行上述的具有通用性的综合处理时,也会向分布式对象生成管理模块通知该分布式对象服务器的使用请求。
因为本次被指定的分布式对象服务器已经正在运行,分布式对象生成管理模块只是将包含访问该分布式对象服务器的方法的应答返回第2进程。
在上述的第1种方法中,父进程以及子进程的处理在一个计算机内的封闭空间进行。相对的,在第2种方法中,也包含了发起使用请求的第2个进程的处理与分布式对象服务器的处理等在不同计算机中进行的情况。
因此,在第2种方法中,使用请求发起进程和分布式对象生成管理模块之间的通信方法,以及使用请求发起进程和分布式对象服务器之间的通信方法,原则上限定于基于前述网络通信技术的进程间通信方法。
上述的分布式对象技术,会将软件系统分割成为提供具有通用性综合处理的独立程序,然后将该独立程序作为分布式对象服务器生成并启动。据此,可以大幅提高程序的再利用性,另外即使修正一部分也不用再整体重新构建系统软件。
而且,由于多个计算机同时启动并生成多个分布式对象服务器分担工作,计算机资源可以更加高效地利用。
另外,当有来自进程的使用请求,但分布式对象服务器没有运行时,分布式对象生成管理模块将生成并启动该分布式对象服务器。这样,将来自使用请求发起进程的使用请求作为触发器,分布式对象服务器被生成并启动。但是,使用请求发起进程与分布式对象服务器之间的关系,原则上是当后者已经开始运行的时候,前者将运行中的后者循环利用。因此,与前文提到的父进程与子进程之间的关系并不相同。
另一方面,为了防止在系统内指定的保护区域内执行不可信任的程序而造成该程序对系统进行恶意行为,有一种叫沙箱的安全机构。
在沙箱内被执行的程序,是在作为其执行主体的进程不能对其它进程及数据等进行操作的被监视状态下生成并启动。因此,即使该进程发生失控或者激活病毒,也不会波及到沙箱外部。在下文中,我们把在沙箱内生成并启动的进程称为“监视对象进程”。
专利文献1公开了一种监视对象进程以及其子进程的相关技术。文件系统及注册表等是在作为被虚拟化之后沙箱的虚拟空间中被执行。执行程序的执行主体为监视对象进程。专利文献1中,将决定由监视对象进程生成并启动的(成为监视对象)子进程是与父进程使用同一个虚拟空间,或者生成该子进程专用的虚拟空间。也就是说,基于专利文献1的技术,当父进程是监视对象的时候,也可以使子进程成为监视对象。
换言之,监视对象进程在沙箱内直接生成并启动子进程时,进程的父子关系是明确的。因此,可以轻易地让子进程成为监视对象。
现有技术文献
专利文献
专利文献1:日本特开2010-205186号公报
发明内容
发明所要解决的问题
本发明是用于解决现有技术中存在的问题。
用于解决问题的方案
本发明的第1形态,即程序行为监控设备包括:监视对象进程管理模块,在监视对象进程清单登录作为程序的执行主体的同时作为被监视对象的进程的识别信息,当从询问处有任意关于进程是否是监视对象的询问时,用该进程的识别信息查询上述监视对象进程清单,然后将该进程是否为监视对象的信息返回上述询问源;通知接收模块,当生成分布式对象服务器然后保有该分布式对象服务器识别情报的分布式对象生成管理设备收到来自监视对象进程的分布式对象服务器的使用请求的时候,接收来自该分布式对象生成管理设备的指定通知。
本发明的第2形态,即分布式对象生成管理设备包括:使用请求接收模块,接收来自作为程序执行主体的进程的分布式对象服务器的使用请求;分布式对象服务器生成模块,上述使用请求接收模块所接收的上述使用请求的请求发起进程的识别信息没有在监视对象进程清单上登录的时候,生成具有上述使用请求的分布式对象服务器;通知发送模块,上述使用请求接收模块接收到的上述使用请求的请求发起进程的识别信息已经在上述监视对象进程清单上登录时,向进程行为监控设备发送指定通知。
本发明的第3形态,程序行为监视系统包括上述的程序行为监控设备以及上述的分布式对象生成管理设备。
发明效果
根据本发明的任意一种形态,不只是监视对象进程的程序行为,基于监视对象进程的使用请求而生成并启动的分布式对象服务器的程序行为也可以无遗漏地监视。
附图说明
图1示出本发明的第1执行形态相关的程序行为监视系统的构成框图。
图2示出了程序行为监视系统从启动到结束的行为顺序流程图。
图3示出了程序行为监视系统从启动到结束的行为顺序流程图。
图4示出了打印行为监视例程的流程图。
图5示出了剪贴板行为监视例程的流程图。
图6示出了注册表保护例程(pid管理)的流程图。
图7示出了注册表保护例程(注册表保护)的流程图。
图8示出了文件保护例程(对应打开文件行为)的流程图。
图9示出了文件保护例程(对应文件名列表显示)的流程图。
图10示出了进程行为监视例程的流程图。
图11示出程序行为监视系统主要部分的框架图。
图12示出了分布式对象服务器生成管理例程的流程图。
图13示出了分布式对象服务器生成管理例程的流程图。
图14示出了第2个分布式对象服务器生成管理例程的流程图。
图15示出了第3个分布式对象服务器生成管理例程的流程图。
具体实施方式
关于本发明的实施方式,对照附图进行详细说明。
[第1实施方式]
图1为示出本发明第1实施方式相关的程序行为监视系统1的构成框图。
程序行为监视系统1由下列存储空间分别设置的功能块构成:系统区域,即系统(操作系统等)运行所必须的进程执行时的存储空间;公共用户区域,所有用户执行进程时可利用的共享的存储空间;以及,个人用户区域(用户1区域、用户2区域、…),即个人用户执行进程时可利用的存储空间。
程序行为监视系统1,监视存在于个人用户区域的多个进程中的,作为生成并启动指定了用户在沙箱内的行为的程序的执行主体,并成为监视对象的进程(监视对象用户进程32)以及其子孙进程的各种行为。进一步,程序行为监视系统1,监视存在于公共用户区域的多个分布式对象服务器中的,基于监视对象用户进程32等的使用请求而生成的分布式对象服务器(监视对象分布式对象服务器21)的各种行为。在下文中,我们把包括监视对象用户进程32以及监视对象分布式对象服务器21的进程称为“监视对象进程”。
程序行为监视系统1,作为在系统区域内运行的功能块,包括注册表重定向程序11、文件系统重定向程序12以及分布式对象生成管理模块13。
程序行为监视系统1,作为在公共用户区域内运行的功能块,包括整体控制模块20。整体控制模块20的内部,具有监视对象分布式对象服务器生成模块20G。
进一步,程序行为监视系统1,作为在个人用户区域运行的功能块,包括:监视对象用户进程生成模块31;监视对象用户进程32内部生成的打印行为监视模块32P以及剪贴板行为监视模块32C。
整体控制模块20,负责整体控制关于监视对象进程行为的监视程序行为监视服务。另外,整体控制模块20通过其内部持有的监视对象分布式对象服务器生成模块20G,可以生成并启动成为监视对象的分布式对象服务器(监视对象分布式对象服务器21)。
注册表重定向程序11,在系统区域进行通过监视对象进程进行注册表访问行为的监视、控制和保护。此处所说的注册表是指,例如操作系统是微软公司的Windows(注册商标)的时候,操作系统相关的基本信息、各种程序的设定、扩展信息等登录时在操作系统所使用的数据库。
文件系统重定向程序12,在系统区域通过监视对象进程进行文件访问行为的监视、控制和保护。
监视对象用户进程生成模块31在个人用户区域中的分配给该用户的个人用户区域内生成并启动监视对象用户进程32。
打印行为监视模块32P,在个人用户区域中被生成并启动的任意进程的内部,对用户使用该进程执行打印操作的行为进行监控。
剪贴板行为监视模块32C,在个人用户区域内所生成并启动的任意进程的内部,对用户执行该进程包括的剪贴板操作进行监视、控制和保护。此处所说的剪贴板是指为了在不同的程序间实现数据的交流,暂时保存用户所“复制”、“粘贴”的数据的功能。
分布式对象生成管理模块13,作为操作系统的标准功能块之一,在本实施方式中,进一步具有用于使整体控制模块20对监视对象分布式对象服务器21进行监视的追加功能。
分布式对象生成管理模块13作为操作系统的标准功能,当收到来自个人用户区域进程的分布式对象服务器的生成请求时,在公共用户区域生成分布式对象服务器,然后获取该分布式对象服务器的pid。
分布式对象生成管理模块13,作为上述的追加功能,收到来自个人用户区域的监视对象用户进程32的分布式对象服务器的生成请求时,请求公共用户区域的整体控制模块20生成分布式对象服务器(监视对象分布式对象服务器21)。监视对象分布式对象服务器21被生成后,分布式对象生成管理模块13从整体控制模块20获取该监视对象分布式对象服务器21的pid。
另外,无论是否是监视对象,分布式对象生成管理模块13获取公共用户区域内所有分布式对象服务器的pid,然后用于管理该分布式对象服务器。进一步,分布式对象生成管理模块13对于自己所管理的分布式对象服务器,也具有查看分布式对象服务器是否为被监视对象状态的功能。
另一方面,作为监视对象被生成并启动的监视对象进程,如图1的虚线方框所示,分为监视对象用户进程32、监视对象用户进程32的子孙进程以及在公共用户区域所生成并启动的监视对象分布式对象服务器21。另外,后文会详细说明,所有的监视对象进程的pid会在注册表重定向程序登录。
图2和图3为示出了程序行为监视系统1从启动到结束的行为顺序流程图。
步骤S1中,伴随着系统的启动,操作系统也进行启动,操作系统的标准功能块之一的分布式对象生成管理模块13也进行启动。
步骤S2中,注册表重定向程序11启动。
此后,操作系统接收到来自任意进程的注册表访问请求、新的子进程的生成启动请求或者结束通知的话,总是将接收到的信息和该任意进程的pid一起通知注册表重定向程序11。
此处的pid(process identifier)是指,在一个计算机里用于唯一识别每个进程的识别信息。操作系统从任意进程接收新的子进程的生成启动请求时,将该任意进程的pid加上被生成并启动的该子进程的pid一起通知注册表重定向程序11。
据此,某个进程的pid作为监视对象被登录的话,当该进程生成并启动了子进程时,注册表重定向程序11从操作系统接收该进程的pid以外,也接收该子进程的pid。其结果,注册表重定向程序11将以该进程为起点(根进程)被生成并启动的所有子孙进程的pid作为监视对象自动登录。详情如后文的图6所示,注册表保护例程(pid管理)被执行。
步骤S3中,文件系统重定向程序12启动。
然后,操作系统接收到来自任意进程的文件访问请求、新的子进程的生成启动请求或者结束通知的话,总是将接收到的信息和该任意进程的pid一起通知文件系统重定向程序12。
据此,某个进程的pid作为监视对象被登录的话,文件系统重定向程序12将以该进程为起点被生成并启动的所有子孙进程的pid作为监视对象自动登录。
然后,作为操作系统启动的一环,当系统区域的所有进程全部启动之后,进入步骤S4。
步骤S4中,为了提供作为对于所有用户的共同服务的程序行为监视服务,整体控制模块20在公共区域启动。
整体控制模块20在启动时,将自己的pid作为成为监视对象的所有进程的根进程,在注册表重定向程序登录。据此,以整体控制模块20作为起点而被生成并启动的所有子孙进程的pid由已经启动的注册表重定向程序11作为监视对象被自动登录。
另外,整体控制模块20在个人用户区域有任意进程生成时,该进程事先向操作系统发出指示,使得打印行为监视模块32P和剪贴板行为监视模块32C能在其内部结合。
例如,操作系统是微软公司的Windows(注册商标)的时候,整体控制模块20事先向操作系统发出指示,使得当进程启动时在该进程安装指定的钩子程序。
步骤S5中,整体控制模块20判定请求开始执行程序行为监视服务的用户是否被检测到已注册。若检测到该用户已注册时进入步骤S6,若没有检测到则进入步骤S13。
步骤S6中,整体控制模块20在以登入该用户的计算机作为触发点所生成的该用户的个人用户区域,生成并启动作为自己的子进程的监视对象用户进程生成模块31。
此处,整体控制模块20作为成为监视对象的所有进程起点的根进程启动时(步骤S4),自己的pid作为监视对象在注册表重定向程序被登录。因此,整体控制模块20的子进程,即监视对象用户进程生成模块31,以之为起点生成并启动的监视对象用户进程32,以及其所有的子孙进程的pid也作为监视对象在注册表重定向程序11自动被登录。
另外,监视对象用户进程生成模块31启动的同时,向用户提示程序行为监视服务的用户界面(程序行为监视服务UI)。程序行为监视服务UI显示了后述的隔离文件夹的文件夹树构成、可以选择的隔离文件夹内的复制文件(不存在复制文件时显示空白)、链接可以执行监视行为的程序的图标等内容。用户选择链接了目标复制文件或者程序的话,被选择的图标所关联的程序在沙箱内被执行,为了监视作为其执行主体的监视对象用户进程32的行为,进入步骤S7。
步骤S7中,整体控制模块20执行程序行为的监视。具体来说,是执行后述的图10所表示的程序行为监视例程。
步骤S8中,整体控制模块20判定请求了执行程序行为监视服务的用户是否被检测到已退出。若检测到上述用户已退出时进入步骤S9,若没有检测到则返回步骤S7。执行步骤S7的处理直到检测到退出为止。
步骤S9中,整体控制模块20执行结束向该用户提供的程序行为监视服务的处理。具体来说,整体控制模块20停止在该用户用的个人用户区域生成并启动的所有监视对象用户进程32以及其子孙进程。
步骤S10中,在为该用户所指定的隔离文件夹中生成并保持的所有复制文件被删除。另外,如后文所述,在该隔离文件夹内由容纳原创文件的复制文件以及各复制文件的文件夹构成的文件夹树构成严格地再现。
步骤S11中,在为该用户所指定的保护区域内生成的所有注册表代替表项被删除。
步骤S12中,在该用户用的个人区域生成并启动的监视对象用户进程生成模块31停止。
另外,以来自监视对象用户进程32的使用请求作为触发点在公共区域存在生成并启动的监视对象分布式对象服务器21时,为了能在该用户以外的用户所分配到的个人用户区域对应来自监视对象用户进程32等的使用请求,在该时间点该监视对象分布式对象服务器21不会停止。
步骤S13中,整体控制模块20判定是否检测到系统关机。若检测到关机时进入步骤S14,若没有检测到则回到步骤S5。
步骤S14中,当存在公共用户区域生成并启动的监视对象分布式对象服务器21时,整体控制模块20使所有的监视对象分布式对象服务器21停止。
步骤S15中,整体控制模块20停止。并且,在步骤S16中文件系统重定向程序12停止,在步骤S17中注册表重定向程序11停止。
步骤S18中,系统区域的所有机能以及操作系统停止。
接下来,就关于对于监视对象用户进程32的各种行为,程序行为监视系统1的具体行为处理进行说明。
在本实施方式中,作为监视对象的进程的行为包括打印行为、剪贴板行为、注册表访问行为以及文件访问行为。打印行为和剪贴板行为分别由在监视对象用户进程32生成并启动时其内部组成的打印行为监视模块32P和剪贴板行为监视模块32C监视。
注册表访问行为和文件访问行为分别由在系统区域运行的注册表重定向程序11和文件系统重定向程序12监视。
图4为示出了在进程内部组成的打印行为监视模块32P的打印行为监视例程的流程图。在个人用户区域任意的进程被启动的话,本打印行为监视例程在其内部被执行。
步骤S21中,进程(内部组成的打印行为监视模块32P)在启动时,查询自己是否为监视对象,具体来说,是向整体控制模块20查询自己的pid是否为监视对象。
步骤S22中,打印行为监视模块32P判定是否检测到在内部组成自己的进程是否有打印行为。当打印行为监视模块32P检测到该打印行为时进入步骤S23,没有检测到时则在步骤S22等待。
步骤S23中,打印行为监视模块S32P,基于步骤S21的询问结果,判定自己是否为监视对象。当自己是监视对象时进入步骤S24,当不是监视对象时则返回步骤S22。
步骤S24中,打印行为监视模块32P拒绝打印行为,返回步骤S22。
这样的打印行为监视例程,例如操作系统是微软公司的Windows(注册商标)的时候,由被注入OpenPrinter API的钩子程序来实现。
图5为示出了在进程内部组成的剪贴板行为监视模块32C的剪贴板行为监视例程的流程图。在个人用户区域内当任意的进程被启动,此剪贴板行为监视例程在其内部被执行。
在步骤S31中,进程(在内部组成的剪贴板行为监视模块32C)在启动时,向整体控制模块20查询自己是否为监视对象,具体来说,查询自己的pid是否是监视对象。
在步骤S32中,剪贴板行为监视模块32C判定是否检测到向在内部组成自己的进程的剪贴板的数据登录行为。当检测当数据登录行为时进入步骤S33,没有检测到时进入步骤S35。
在步骤S33中,剪贴板行为监视模块32C基于步骤S31的查询结果,判定自己是否是监视对象。当自己是监视对象时进入步骤S34,当不是监视对象时则返回步骤S32。
在步骤S34中,剪贴板行为监视模块32C为了表示自己是数据登录进程,在规定的公共存储器登录自己的pid。
类似于这样的在剪贴板行为监视例程中检测到自己数据登录行为的处理,例如操作系统是微软公司的Windows(注册商标)的时候,由被注入SetClipboardData API的钩子程序来实现。
另一方面,在步骤S35中,剪贴板行为监视模块32C判定是否检测到来自在内部组成自己的进程的剪贴板的数据获取行为。检测到数据获取行为时进入步骤S36,没有检测到时返回步骤S32。
步骤S36中,剪贴板行为监视模块32C基于步骤S31的查询结果,判定自己是否为监视对象。当自己是监视对象时进入步骤S38,当不是监视对象时进入步骤S37。
步骤S37中,剪贴板行为监视模块32C判定在上述的公共存储器是否有数据登录进程的pid登录。当有pid登录时进入步骤S39,没有pid登录时进入步骤S38。
步骤S38中,剪贴板行为监视模块32C允许将获取到的数据粘贴到进程本身的行为。然后,返回步骤S32。
在步骤S37中判定没有pid登录时,登录了数据的数据登录进程不成为监视对象。也就是说,步骤S35的数据获取行为相当于通过非监视对象的普通进程之间的剪贴板进行数据交流。所以,在步骤S38中允许将获取的数据粘贴到进程本身的行为。
步骤S39中,剪贴板行为监视模块32C拒绝将获取的数据粘贴到进程本身的行为。然后,返回步骤S32。
在步骤S37判定存在pid登录时,登录了数据的数据登录进程成为了监视对象。也就是说,步骤S25的数据获取行为相当于从作为监视对象的进程到非监视对象进程的数据的移动。换言之,上述的数据获取行为,沙箱内被执行的程序所处理的机密数据向在沙箱外部被执行的程序转移的行为。因此,在步骤S39中,拒绝获取到的数据本身的粘贴行为。
在类似这样的剪贴板行为监视例程中检测到自身的数据获取行为时的处理,例如操作系统是微软公司的Windows(注册商标)的时候,由被注入GetClipboardData API的钩子程序来实现。
如上文所述,注册表重定向程序11在新的进程被生成并启动时总是一并获取来自操作系统的该创建通知以及该进程及其父进程的pid,并活用获取到的信息。
具体来说,在本实施方式中,注册表重定向程序11不只是其本身注册表保护者的角色,也具有图2的步骤S2中所阐述的活用来自操作系统的通知,管理作为监视对象的所有进程的pid的角色。
也就是说,所有的监视对象进程的pid由注册表重定向程序11管理。具体来说,注册表重定向程序11如图2的步骤S4中所阐述的那样,接收来自整体控制模块20的pid登录通知,以及将含有登录通知的pid在其内部保有的的监视对象进程清单登录。另外,注册表重定向程序11接收到来自整体控制模块20等的pid登录查询通知的话,将具有登录查询通知的pid向该监视对象进程清单查询,并对来自整体控制模块20等的询问作出应答。
注册表重定向程序11从操作系统获取关于进程的新建以及注册表访问通知等,从整体控制模块20等获取pid的登录通知和登录查询通知,执行如下所示的注册表保护例程。
图6与图7为示出了由注册表重定向程序11执行的注册表保护例程的流程图。
步骤S42中,注册表重定向程序11将从整体控制模块20获取的pid登录在监视对象进程清单。然后,返回步骤S41。
步骤S43中,注册表重定向程序11判定是否从整体控制模块20等获取到pid查询通知。获取到pid查询通知时进入步骤S44,没有获取到则进入步骤S45。
步骤S44中,注册表重定向程序11查询获取到的pid是否有在监视对象进程清单登录,并将其结果对整体控制模块20等做出回答。然后,返回步骤S41。
步骤S45中,注册表重定向程序11判定是否获取了来自操作系统的进程新建启动通知。当获取了进程新建启动通知时进入步骤S46,没有获取进程新建启动通知时进入步骤S48。另外,进程的新建启动通知不只包含被新建并启动的进程的pid,也包含该进程的父进程的pid。
步骤S46中,注册表重定向程序11从操作系统获取进程的新建启动通知时,该进程的父进程的pid是否有在监视对象进程清单登录,也就是说,判定父进程是否为监视对象。父进程是监视对象时进入步骤S47,不是监视对象时返回步骤S41。
步骤S47中,注册表重定向程序11在监视对象进程清单登录新建并启动的进程的pid。然后,返回步骤S41。通过这样,新建并启动的进程的父进程是监视对象的时候,因为该进程也需要作为监视对象,该进程的pid在监视对象进程清单被登录。
其结果,由于整体控制模块20在其启动时(图2的步骤S4)将自己的pid在注册表重定向程序11登录,以整体控制模块20作为起点生成的所有进程(子孙进程)被登录在监视对象进程清单。
在监视对象进程清单被登录的所有进程,具体来说,符合以下(1)~(4):
(1)整体控制模块20
(2)作为整体控制模块20的子进程生成并启动的监视对象用户进程生成模块31
(3)用户指定了规定程序的沙箱内的执行时作为监视对象用户进程生成模块31的子进程生成并启动的监视对象用户进程32及其子孙进程
(4)由整体控制模块20内的监视对象分布式对象服务器生成模块20G生成并启动的作为其子孙进程的监视对象分布式对象服务器21及其子孙进程
步骤S48中,注册表重定向程序11判定是否获取了来自操作系统的进程结束通知。获取了进程结束通知时进入步骤S49,没有获取则进入步骤S50。
步骤S49中,注册表重定向程序11获取进程结束通知的同时也获取了该进程的pid,利用所获取的pid,将已结束的进程的pid从监视对象进程清单删除。然后,返回步骤S41。
在步骤S50之后,执行注册表保护的处理。
步骤S50中,注册表重定向程序11判定是否获取了来自操作系统的注册表访问通知。注册表访问通知是指,任意的进程想要访问注册表时操作系统总是发出通知。另外,注册表访问通知包含了想要访问注册表的进程的pid以及访问内容。获取了注册表访问通知时进入步骤S51,没有获取时返回步骤S41。
步骤S51中,注册表重定向程序11利用获取注册表访问通知的同时获取的进程的pid,查询自身所保有的监视对象进程清单,判定想要访问注册表的进程是否是监视对象。进程是监视对象时进入步骤S52,进程不是监视对象则返回步骤S41。
据此,每当监视对象进程32想要访问注册表时,为了保护注册表,注册表重定向程序11会执行步骤S52以后的处理。
步骤S52中,注册表重定向程序11基于来自操作系统的通知,判定是否检测到注册表项的开启行为。检测到注册表项的开启行为时进入步骤S53,没有检测到则进入步骤S54。
步骤S53中,注册表重定向程序11在规定的保护区域生成成为替代指定原始表项的注册表代替表项,并开启该注册表代替表项。然后,返回步骤S41。
步骤S54中,注册表重定向程序11基于来自操作系统的通知,判定是否检测到读取注册表项数值的行为。检测到对注册表项的数值读取行为时进入步骤S55,没有检测到则进入步骤S56。
步骤S55中,注册表重定向程序11将被指定的原始表项的值复制到(对应上述的注册表项开启行为所生成的)替代注册表项,再将该值返回。然后,返回步骤S41。
步骤S56中,注册表重定向程序11基于来自操作系统的通知,判定是否检测到写入注册表项数值的行为。检测到对注册表项数值的写入行为时进入步骤S57,没有检测到时进入步骤S58。
步骤S57中,注册表重定向程序11将被指定的值写入(对应上述的注册表项开启行为所生成的)替代注册表项。然后,返回步骤S41。
步骤S58中,注册表重定向程序11基于来自操作系统的通知,判定是否检测到注册表项的关闭行为。检测到注册表项的关闭行为时进入步骤S59,没有检测到则返回步骤S41。
步骤S59中,注册表重定向程序11关闭(对应上述的注册表项开启行为所生成的)替代注册表项。然后,返回步骤S41。
另外,在规定的保护区域所生成的替代注册表项在检测到用户的退出后全部删除。
图8和图9为示出了由文件系统重定向程序12执行的文件保护例程的流程图。
当任意进程想要打开文件或者被要求显示包含在任意文件夹的文件名列表时,文件系统重定向程序12获取来自操作系统的表示这些行为的通知(包含该进程的pid),执行如下所示的文件保护例程。
另外,文件系统重定向程序12虽然省略详细内容,但也可以和注册表重定向程序同样对监视对象进程的pid进行管理。
步骤S61中,文件系统重定向程序12获取来自操作系统的通知,判定是否检测到文件开启行为。当检测到文件开启行为时进入步骤S62,没有检测到则进入步骤S69。
步骤S62中,文件系统重定向程序12判定想要打开文件的进程是否为监视对象。此处,文件系统重定向程序12利用来自操作系统的通知所包含的pid,不在整体控制模块20,而是在注册表重定向程序11直接查询。
文件系统重定向程序12向注册表重定向程序11直接查询的原因如下:由于注册表重定向程序11和文件系统重定向程序12都存在于系统区域,因此关于某个进程是否为监视对象,文件系统重定向程序12与其通过存在于不同区域(公共用户区域)的整体控制模块20向注册表重定向程序11查询,不如向注册表重定向程序11直接查询更加高效。
如上所述,文件系统重定向程序12和注册表重定向程序11一样可以管理监视对象进程的pid。这种情况下,文件系统重定向程序12对自身保有的监视对象进程清单进行查询即可。
步骤S63中,文件系统重定向程序12基于来自操作系统的通知,判定进程是否想要打开隔离文件夹内的文件。想要打开隔离文件夹内的文件时进入步骤S65,想要打开隔离文件夹以外的文件时进入步骤S64。
步骤S64中,文件系统重定向程序12判定来自操作系统的通知中是否存在写入标志。写入标志是在文件开启行为中,可以编辑目标文件内容的标志。存在写入标志时进入步骤S66,没有写入标志时进入步骤S65。
步骤S65中,文件系统重定向程序12允许进程的文件开启行为。然后返回步骤S61。
也就是说,监视对象进程(步骤S62的肯定判定)想要打开隔离文件夹内的文件时(步骤S63的肯定判定),或者对于隔离文件夹以外的文件(原本就存在的普通文件)(步骤S63的否定判定)不编辑内容只是想要直接读取时(步骤S64的否定判定),允许文件开启行为。
步骤S66中,文件系统重定向程序12在隔离文件夹内生成指定原始文件的复制文件,然后打开这个在隔离文件夹内的复制文件。据此,隔离文件夹内可以对该复制文件进行编辑。然后,返回步骤S61。
步骤S67中,基于来自操作系统的通知,判定非监视对象的进程是否想要打开隔离文件夹内的文件。想要打开隔离文件夹内的文件时进入步骤S68,想要打开隔离文件夹以外的文件时进入步骤S65。
进程想要打开非监视对象,即隔离文件夹以外的文件时,视为普通的文件开启行为。因此,允许文件开启行为(步骤S65)。
步骤S68中,文件系统重定向程序12,拒绝文件开启行为。也就是说,非监视对象的进程想要打开隔离文件夹内的文件时,文件开启行为被拒绝。然后返回步骤S61。
步骤S69中,文件系统重定向程序12基于来自操作系统的通知,判定是否检测到包含在规定文件夹里的文件名的清单显示请求。检测到清单显示请求时进入步骤S70,没有检测到则返回步骤S61。
步骤S70中,文件系统重定向程序12判定请求显示文件清单的进程是否为监视对象。在此执行与步骤S62相同的处理。然后,上述的进程是监视对象时进入步骤S71,不是监视对象时进入步骤S76。
步骤S71中,文件系统重定向程序12获得包含在上述的进程指定的文件夹里的文件名列表(第1个文件名列表)。
步骤S72中,文件系统重定向程序12获得包含在隔离文件夹的文件名列表(第2个文件名列表)。
步骤S73中,文件系统重定向程序12,将第1个文件名列表和第2个文件名列表进行比对,判定是否存在相同的文件名。存在相同的文件名时进入步骤S74,不存在则进入步骤S75。
步骤S74中,对于文件名相同的文件,文件系统重定向程序12以第1个文件名列表为基础,优先使用从隔离文件夹获得的第2文件名列表的相关信息重写第1文件名列表。这样,文件系统重定向程序12将第1文件名列表和第2文件名列表合并。
步骤S75中,文件系统重定向程序12将合并后的文件名列表返回请求发起进程。然后,返回步骤S61。
此处,在隔离文件夹内部,由容纳原始文件的复制文件和各复制文件的文件夹构成的文件树构成被严谨地重现。另外,文件名列表的比对是除开隔离文件夹的根文件夹名部分,对指定文件夹内的文件名和隔离文件夹内的文件名进行比对。
例如,指定文件夹内的原始文件是“¥¥我的文件¥记事本.txt”,与其对应的隔离文件夹内的复制文件为“..¥隔离文件夹¥我的文件¥记事本.txt”时,除开隔离文件夹的根文件夹名“..¥隔离文件夹”部分,比对文件名。
据此,监视对象进程已编辑内容为目的指定了任意文件夹内的文件时,实际上,作为被指定文件的代替文件,与该文件相对应的隔离文件夹内的复制文件被指定。然后,打开该复制文件进行编辑。
另外,在本实施方式中,监视对象进程执行文件开启行为后,由监视对象进程所进行的内容编辑行为,直到文件关闭为止,不成为监视对象。
图10为示出了由整体控制模块20所执行的进程行为监视例程的流程图。在进程行为监视例程中,执行了对监视对象进程的查询(步骤S81~步骤S87),以及监视对象分布式对象服务器的生成与启动(步骤S88~步骤S90)
步骤S81中,整体控制模块20接收来自其它功能块(任意进程)的请求。例如,当某个进程被生成并启动时,为了确认该进程自己是否为监视对象,向整体控制模块20进行询问。另外,如后文所述,分布式对象服务器生成管理模块13接收到来自监视对象用户进程32的分布式对象服务器的生成请求的话,向整体控制模块20请求生成监视对象分布式对象服务器21。
步骤S82中,整体控制模块20判定接收到的请求是否是监视对象的询问。是监视对象的询问时进入步骤S83,不是监视对象的询问时进入步骤S88。
步骤S83中,整体控制模块20从接收到的请求中获取发出询问的进程的pid。
步骤S84中,整体控制模块20使用获得的pid向注册表重定向程序进行查询。
步骤S85中,整体控制模块20从注册表重定向程序11接收对于发出询问的进程是否是监视对象的查询的回答。发出询问的进程是监视对象时进入步骤S86,不是监视对象时进入步骤S87。
步骤S86中,整体控制模块20对于发出询问的进程,返回该进程是监视对象的肯定回答。然后,返回步骤S81。
步骤S87中,整体控制模块20对于发出询问的进程,返回该进程不是监视对象的否定回答。然后,返回步骤S81。
另一方面,在步骤S88中,,整体控制模块20判定在步骤S81中接收到的请求是否是来自分布式对象生成管理模块13的监视对象分布式对象服务器21的生成启动请求。是监视对象分布式对象服务器21的生成启动请求时进入步骤S89,不是则返回步骤S81。
步骤S89中,整体控制模块20对自身内部所保有的监视对象分布式对象服务器生成模块20G执行以下处理:监视对象分布式对象服务器生成模块20G生成并启动作为自己子进程的发出请求的监视对象分布式对象服务器21。
步骤S90中,整体控制模块20向作为请求发起者的分布式对象服务器生成管理模块13返回由监视对象分布式对象服务器生成模块20G生成并启动的监视对象分布式对象服务器21的pid。然后,再次返回步骤S81。
作为普通行为的一环,分布式对象生成管理模块13无论分布式对象服务器是否是监视对象,对所有的分布式对象服务器的pid进行管理。分布式对象服务器生成管理模块13即使是在由整体控制模块20生成并启动监视对象分布式对象服务器21时,也必须对监视对象分布式对象服务器21的pid进行管理。
此处,整体控制模块20将生成并启动的监视对象分布式对象服务器21的pid通知分布式对象生成管理模块13并进行登录。据此,分布式对象生成管理模块13无论分布式对象服务器是否是监视对象,总是可以对所有的分布式对象服务器的pid进行管理。
在此,监视对象分布式对象服务器21的父进程,即整体控制模块20作为监视对象在注册表重定向程序11被登录。同时,图10所示的进程行为监视例程执行结果,整体控制模块20的子进程监视对象分布式对象服务器21以及以之为起点生成并启动的所有子孙进程也再次作为监视对象在注册表重定向程序11自动被登录。
接下来,对监视对象用户进程32执行分布式对象生成管理模块13所期望的分布式对象服务器的使用请求时的处理顺序进行说明。
图11是程序行为监视系统1的主要部分的框图。在图11中,以(1)到(6)的顺序执行处理。
(1)任意的监视对象用户进程32对分布式对象生成管理模块13发送监视对象分布式对象服务器21的使用请求。
(2)当使用请求发起进程是监视对象时,分布式对象生成管理模块13执行整体控制模块20对于整体控制模块20所规定的通知(包含执行对象文件以及执行权限等的启动方法的通知),请求生成并启动拥有使用请求的监视对象分布式对象服务器21。
(3)整体控制模块20接收来自分布式对象生成管理模块13的请求,使用其内部所保有的监视对象分布式对象服务器生成模块20G,生成并启动作为监视对象分布式对象服务器21的拥有使用请求的分布式对象服务器。
(4)作为对分布式对象服务器生成管理模块13的应答,整体控制模块20返回生成并启动的监视对象分布式对象服务器21的pid。
(5)分布式对象生成管理模块13向使用请求发起进程返回包含对被生成并启动的监视对象分布式对象服务器21的访问方法的应答。
(6)监视对象用户进程32(使用请求发起进程)基于从分布式对象生成管理模块13所接收到的监视对象分布式对象服务器21的访问方法,与该监视对象分布式对象服务器21进行通信。
接下来,监视对象用户进程32实行分布式对象生成管理模块13所期望的分布式对象服务器的使用请求时,关于具体的处理顺序进行说明。具体来说,分布式对象生成管理模块13就关于图11的(1)、(2)、(4)以及(5)的具体处理进行说明。
图12和图13为示出分布式对象生成管理模块13所执行的分布式对象服务器生成管理例程的流程图。
步骤S101中,分布式对象生成管理模块13判定是否有来自任意进程的所期望的分布式对象服务器的使用请求。有使用请求时进入步骤S102,没有则在步骤S101等待。
步骤S102中,分布式对象生成管理模块13接收该所期望的分布式对象服务器的使用请求,获取使用请求发起进程的pid(包含在使用请求的pid)。
步骤S103中,分布式对象生成管理模块13判定拥有使用请求的分布式对象服务器是否在运行中。正在运行的话进入步骤S108,若没有在运行则进入步骤S104。
步骤S104中,分布式对象生成管理模块13使用获得的pid向注册表重定向程序11直接查询,判定使用请求发起进程是否是监视对象。该进程是监视对象时则进入步骤S105,不是监视对象则进入步骤S106。
注册表重定向程序11和分布式对象生成管理模块13共同存在于系统区域。因此,分布式对象生成管理模块13可以不通过存在于系统区域的整体控制模块20,而是向注册表重定向程序11直接查询。
步骤S105中,分布式对象生成管理模块13向整体控制模块20请求生成并启动监视对象分布式对象服务器21。
整体控制模块20接受来自分布式对象生成管理模块13的上述请求的话,使自身内部所保有的监视对象分布式对象服务器生成模块20G执行以下处理。
即,监视对象分布式对象生成模块20G,生成并启动作为自己子进程的被请求的监视对象分布式对象服务器21(图10的步骤S89)。然后整体控制模块20向分布式对象生成管理模块13通知作为自己的子进程生成并启动的监视对象分布式对象服务器21的pid(步骤S90)。
然后,分布式对象生成管理模块13获取来自整体控制模块20的监视对象分布式对象服务器21的pid,进入步骤S107。
步骤S106中,分布式对象服务器生成管理模块13被生成并启动,然后生成并启动作为自己子进程的非监视对象的分布式对象服务器,获取该分布式对象服务器的pid。
步骤S107中,分布式对象服务器13使用获取的pid,开始管理新生成并启动的分布式对象服务器。
步骤S108中,分布式对象生成管理模块13判定现在运行中的所期望的分布式对象服务器是否是监视对象。至此,分布式对象生成管理模块13从整体控制模块20获取成为监视对象的分布式对象服务器的pid(步骤S105),然后自己生成并启动非监视对象的分布式对象服务器,取得其pid(步骤S106)。
据此,分布式对象生成管理模块13可以不向整体控制模块20或者注册表重定向程序11查询pid,而是基于运行中的分布式对象服务器的pid的获取情况,自己判定该分布式对象服务器是否是监视对象。即,分布式对象生成管理模块13具有保持这个判定结果的功能。利用该功能,可以判定上述的分布式对象服务器是否是监视对象。
分布式对象生成管理模块13不具有保持现在运行中的分布式对象服务器是否是监视对象的判定结果的功能时,识别自己所管理的该运行中的所期望的分布式对象服务器的pid。再将其向注册表重定向程序11直接查询,判定该运行中的所期望的分布式对象服务器是否为监视对象。然后,若该运行中的所期望的分布式对象服务器是监视对象时进入步骤S109,不是监视对象则进入步骤S110。
步骤S109中,分布式对象生成管理模块13使用在步骤S102中获取的使用请求发起进程的pid向注册表重定向程序11直接查询,判定该使用请求发起进程是否是监视对象。该使用请求发起进程是监视对象时进入步骤S111,不是监视对象时进入步骤S112。
步骤S110中,分布式对象生成管理模块13,与步骤S109相同,判定该使用请求发起进程是否是监视对象。该使用请求发起对象是监视对象时进入步骤S112,不是监视对象时进入步骤S111。
步骤S111中,成为以下状态1或者状态2。
(状态1)所期望的分布式对象服务器是监视对象(监视对象分布式对象服务器21),进一步,该使用请求发起进程也是监视对象(监视对象用户进程32)。此时,使用请求发起进程的监视对象用户进程32即使访问所期望的监视对象分布式对象服务器21,因为其也是监视对象,不会出现问题。
(状态2)所期望的分布式对象服务器不是监视对象,进一步,该使用请求发起进程也不是监视对象。那么这是普通行为,此时,使用请求发起进程即使访问所期望的分布式对象服务器,因为其也不是监视对象,不会出现问题。
此处,分布式对象生成管理模块13向使用请求发起进程,返回包含所期望的分布式对象服务器访问方法的回答。然后,再次返回步骤S101。
另外,所期望的分布式对象服务器没有运行时(步骤S103的否定判定),步骤S104至步骤S107被执行,生成并启动所期望的分布式对象服务器。此时,使用请求发起进程是监视对象的话,生成的分布式对象服务器也成为监视对象(监视对象分布式对象服务器21)。另一方面,使用请求发起进程不是监视对象的话(是普通进程的话),生成并启动的分布式对象服务器也不是监视对象。
因此,与使用请求发起进程的使用请求相应的,根据步骤S104至步骤S107的处理,新生成并启动所期望的分布式对象服务器时,步骤S108和步骤S109同为肯定判定,或者步骤S108和步骤S110同为否定判定。其结果,分布式对象生成管理模块13必须允许由使用请求发起进程所期望的分布式对象服务器的使用请求,返回包含该分布式对象服务器的访问方法的回答(步骤S111)。
步骤S112中,成为以下状态3或者状态4。
(状态3)虽然所期望的分布式对象服务器是监视对象(监视对象分布式对象服务器21),其使用请求发起进程不是监视对象。
(状态4)虽然所期望的分布式对象服务器不是监视对象,但其使用请求发起进程(监视对象用户进程32)是监视对象。
当某个进程所期望的分布式对象服务器机遇来自其它用户进程的使用请求已正在运行(步骤S103的肯定判定),而步骤S104至步骤S107的处理没有被执行时,发生状态3或者状态4的状况。即,该其它用户的进程不是监视对象时,该运行中的所期望的分布式对象服务器也不是监视对象。因此,假如使用请求发起进程曾是监视对象(监视对象用户进程32)的话,则发生状态4的情况。
这样的情况下,由使用请求发起进程允许所期望的分布式对象服务器的访问方法的话,会产生某一方的程序行为的监视漏洞。
此处,在步骤S112中,分布式对象生成管理模块13对于使用请求发起进程,返回拒绝访问所期望的分布式对象服务器的回答。然后,再次返回步骤S101。
另外,为了解决步骤S112所示的拒绝访问回答,暂时停止正在运行中的所期望的分布式对象服务器,之后,必须在与使用请求发起进程相同的监视状态下(是否是监视对象)再次启动该所期望的分布式对象服务器。其理由如下所述。
注册表重定向程序11以及文件系统重定向程序12,在监视对象分布式对象服务器21存在时,进程特殊的保护行为(参考图6至图9)。据此,假如运行中的所期望的分布式对象服务器不停止,而是由非监视对象变为监视对象的话,上述的特殊保护行为不能一边保持一致性一边维持。即,由非监视对象变为监视对象,必须在所期望的分布式对象服务器没有运行时执行,需要执行上述的处理。
另外,假如运行中的所期望的分布式对象服务器不停止,并由监视对象变为非监视对象的话,由该所期望的分布式对象服务器执行的文件处理恐怕会发生问题。例如,监视对象分布式对象服务器21新建文件的话,,该文件只配置在隔离文件夹。但是所期望的监视对象分布式对象服务器21并不停止而是变成非监视对象的话,该所期望的分布式对象服务器已经不能访问在隔离文件夹内的该新建文件。为了回避这样的问题,对所期望的分布式对象服务器的监视状况进行变更时,一旦使该所期望的分布式对象服务器结束,不得不时监视状况变更后的所期望的分布式对象服务器从最初重新开始。
[变更例]
到目前为止的说明,是以所期望的分布式对象服务器只作为最多一个进程生成并启动为前提。接下来,假定所期望的分布式对象服务器可以作为多个进程生成并启动。分布式对象生成管理模块13可以对多个分布式对象服务器每一个的监视状况(是否是监视对象)进行单独管理,具有来自使用请求发起进程的所期望的分布式对象服务器的使用请求时,选择和该使用请求发起进程相同的监视状况中存在的分布式对象服务器。对该请求发起进程返回包含该分布式对象服务器访问方法的回答。
可是,分布式对象生成管理模块13原本是作为操作系统的功能块之一被提供。此处,为了最小限度地改变操作系统的标准功能,使用请求发起进程本身可以直接判定所期望的分布式对象服务器是否运行以及其监视状况。这种情况下,分布式对象生成管理模块13只是执行以下例程即可。
图14为示出了分布式对象生成管理模块13执行的第2个分布式对象服务器生成管理例程的流程图。另外,与图12执行相同处理的步骤与图12标有同一个符号。
此处,作为其前提,使用请求发起进程:(a)在其启动时使用自己的pid查询整体控制模块20,事先了解自己是监视对象;(b)事先了解所期望的分布式对象服务器作为监视对象(监视对象分布式对象服务器21)是否已在运行(这些可以通过向使用请求发起进程注入实现该功能的钩子程序来实现)。
普通的(非监视对象)进程对于分布式对象生成管理模块13请求所期望的分布式对象服务器的使用时,一般来说不会传达自己的pid。此处,使用请求发起进程在自己是监视对象(监视对象用户进程32)时,向分布式对象生成管理模块发送包含自己pid的使用请求通知。
步骤S101中,分布式对象生成管理模块13判定是否有来自使用请求发起进程的所期望的分布式对象服务器的使用请求。有使用请求时进入步骤S121,没有使用请求时,直到有使用请求为止待机。
步骤S121中,分布式对象生成管理模块13判定使用请求通知里是否包含使用请求发起进程的pid。包含使用请求发起进程的pid时进入步骤S105,没有包含该pid时进入步骤S106。
步骤S105中,分布式对象生成管理模块13向整体控制模块20请求生成并启动该所期望的监视对象分布式对象服务器21。整体控制模块20在生成并启动作为自己子进程的该所期望的监视对象分布式对象服务器21之后,向分布式对象生成管理模块13通知其pid。
然后,分布式对象生成管理模块13从整体控制模块20获取该所期望的监视对象分布式对象服务器21的pid,进入步骤S107。
步骤S106中,分布式对象生成管理模块13生成并启动作为自己子进程的非监视对象的该所期望的分布式对象服务器,获取这个分布式对象服务器的pid。然后,进入步骤S107。
步骤S107中,对生成并启动的分布式对象服务器进行管理的(无论是否是监视对象)也是分布式对象管理模块13。
因此,在步骤S107中,分布式对象生成管理模块13使用获得的pid,直接开始对新生成并启动的该所期望的分布式对象服务器进行管理。然后,进入步骤S111。
步骤S111中,分布式对象生成管理模块13向使用请求发起进程返回包含该所期望的分布式对象服务器的访问方法的回答。然后,再次返回步骤S101。
如上所述,根据图14所示的例程的话,分布式对象生成管理模块13的改变限定于如图粗虚线框的范围。
在本实施方式中,无论是否为监视对象,便于可以和其它用户共享,分布式对象服务器在公共区域被生成并启动。
但是,由于安全方面等原因,分布式对象服务器的使用是假定在其为监视对象时,限定为使用请求发起进程或者在分配给保有使用请求发起进程的个人用户区域生成并启动的监视对象用户进程32。这时,监视对象分布式对象服务器21可以在生成并启动使用请求发起进程的个人用户区域生成并启动。
这时,图3所示的步骤S14的处理在步骤S8的肯定判定之后到步骤S10之前(步骤S9前后)被执行。此处,进一步地,作为整体控制模块20的替代,分配给该用户的监视对象用户进程生成模块31可以生成并启动监视对象分布式对象服务器21。
另外,作为监视对象进程的监视对象的程序行为不只限定在上述行为,例如也会进行进程间的通信。也就是说,TCP/IP网络通信等也是监视对象之一。
例如操作系统是微软公司的Windows(注册商标)的时候,生成被称作WEP(WindowsFoltering Platform)的文件驱动,使之在系统区域运行。据此,对于由监视对象进程进行的TCP/IP网络,可以实现类似于使用注册表重定向程序11对注册表访问行为的监视、控制和保护的功能。
[第2中实施方式]
接下来,关于本发明的第2中实施方式进行说明。这里,与第1实施形态相同的部分以及处理以同一符号表示,省略重复的说明。
在第1实施方式中,分布式对象生成管理模块13接收到来自监视对象用户进程32的所期望的分布式对象服务器的使用请求时,包括制定的监视对象分布式对象服务器21的生成和启动,将该请求转送至整体控制模块20。
对此,在第2实施方式中,分布式对象生成管理模块13接收到来自监视对象用户进程32的所期望的分布式对象服务器的使用请求时,自己生成并启动该分布式对象服务器。
此时,监视对象和所有的指定分布式对象服务器的生成和启动到该分布式对象服务器实际被监视(成为监视对象分布式对象服务器21)为止,该分布式对象服务器的行为继续的话,恐怕会产生程序行为监视的遗漏。
此处,第2实施方式中,分布式对象生成管理模块13自己生成了监视对象和所有指定分布式对象服务器时,使该分布式对象服务器的行为暂时停止。然后,分布式对象生成管理模块13将该分布式对象服务器的pid通知注册表重定向程序11,确认得到登录结束应答并且该分布式对象服务器成为监视对象(监视对象分布式对象服务器21)之后,再次开始该分布式对象服务器的行为。
也就是说,分布式对象服务器生成管理模块13和注册表重定向程序11之间进行同时处理,以防止指定对分布式对象服务器的程序行为的监视遗漏。具体是指,作为图12所示的分布式对象服务器生成管理例程的代替,图15所示的第3个分布式对象服务器生成管理例程被执行。
图15为示出第3个分布式对象服务器生成管理例程的流程图。另外,步骤S101至S103与图12相同。步骤S103的否定判定后进入图15的步骤S131。
步骤S131中,分布式对象生成管理模块13指定的分布式对象服务器没有运行,自己生成该分布式对象服务器,获取该生成的分布式对象服务器的pid。本步骤中,分布式对象生成管理模块13执行通常执行的处理。
步骤S132中,分布式对象生成管理模块13使用在步骤S101中获取的pid向注册表重定向程序11直接进行查询,判定使用请求发起进程是否是监视对象。该进程是监视对象时进入步骤S133,不是时则进入步骤S135。
步骤S133中,分布式对象生成管理模块13向注册表重定向程序通知在步骤S131中获取的分布式对象服务器的pid。
步骤S134中,分布式对象生成管理模块13判定是否有来自注册表重定向程序的传达所通知pid已登录完毕的回答。有登录完毕的回答时进入步骤S135,没有则等待直到有回答为止。
步骤S135中,分布式对象生成管理模块13启动在步骤S131生成的分布式对象服务器,开始该分布式对象服务器的管理。然后,进入图13所示的步骤S108。在本步骤中,分布式对象生成管理模块执行通常执行的处理。
如上所述,分布式对象生成管理模块13在指定分布式对象服务器生成之后启动之前的期间,向注册表重定向程序11通知该分布式对象服务器的pid,并使其登录。据此,作为监视对象的该分布式对象服务器不会再监视前开始行为,可以避免程序行为的监视遗漏。
另外,本发明并不限于上述的实施方式,也适用于请求范围中所记载事项范围内所进行的设计变更。
例如,上述的各种形态,由硬件构成也可以,存储介质所储存的程序由被安装的计算机构成也可以。
附图标记说明
1 程序行为监视系统
11 注册表重定向程序
12 文件系统重定向程序
13 分布式对象生成管理模块
20 整体控制模块
20G 监视对象分布式对象服务器生成模块
21 监视对象分布式对象服务器
31 监视对象用户进程生成模块
32 监视对象用户进程
32P 打印行为监视模块
32C 剪贴板行为监视模块。
Claims (6)
1.一种程序行为监控设备,其特征在于,包括至少一个处理器和至少一个非易失性计算机可读介质,所述至少一个非易失性计算机可读介质包括计算机程序代码,所述至少一个非易失性计算机可读介质和所述计算机程序代码被配置为通过所述处理器使得所述程序行为监控设备至少:
当分布式对象生成管理设备从应用程序收到对于分布式对象服务器的使用请求时,所述程序行为监控设备接收来自所述分布式对象生成管理设备的规定的通知;
作为所述程序行为监控设备本身的子进程而不是作为所述分布式对象生成管理设备的子进程,生成所述分布式对象服务器;
将所述分布式对象服务器的识别信息录入所述程序行为监控设备的进程清单中;以及
向所述分布式对象生成管理设备通知所述分布式对象服务器的所述识别信息,
其中,所述分布式对象生成管理设备被配置为响应于接收来自所述应用程序的对于所述分布式对象服务器的使用请求,而生成所述分布式对象服务器并且保留所述分布式对象服务器的识别信息,
其中,所述规定的通知请求由所述程序行为监控设备而不是由所述分布式对象生成管理设备生成所述分布式对象服务器,
其中,当确定所述应用程序被所述程序行为监控设备响应于监视所述应用程序的用户请求而监视时,所述分布式对象生成管理设备向所述程序行为监控设备发送所述规定的通知,
其中,所述应用程序与所述分布式对象服务器直接通信,
其中,来自所述应用程序的所述使用请求包括被指定为在公共用户区域内执行的所述分布式对象服务器的执行主体的使用请求,
其中,所述执行主体作为所述程序行为监控设备在公共用户区域中的子进程而不是作为所述应用程序在个人用户区域中的子进程生成,并且
其中,所述公共用户区域包括第一存储区域,在所述第一存储区域中执行能由多个用户中的所有用户以共享方式利用的进程。
2.根据权利要求1所述的程序行为监控设备,其特征在于,所述程序行为监控设备还配置为:
当每次启动新进程时,获取所述新进程的识别信息以及所述新进程的父进程的识别信息;
当每次启动所述新进程时,参照由所述程序行为监控设备获取的各项识别信息;以及
当所述新进程的所述父进程的所述识别信息录入所述进程清单中时,将所述新进程的所述识别信息录入所述进程清单中。
3.根据权利要求1所述的程序行为监控设备,其特征在于,
所述个人用户区域包括第二存储空间,在所述第二存储空间中执行能由特定个人用户利用的进程。
4.一种程序行为监控设备,其特征在于,包括至少一个处理器和至少一个非易失性计算机可读介质,所述至少一个非易失性计算机可读介质包括计算机程序代码,所述至少一个非易失性计算机可读介质和所述计算机程序代码被配置为通过所述处理器使得所述程序行为监控设备至少:
当分布式对象生成管理设备从应用程序收到对于分布式对象服务器的使用请求时,所述程序行为监控设备接收来自所述分布式对象生成管理设备的规定的通知;
将所述分布式对象服务器的识别信息录入所述程序行为监控设备的进程清单中;以及
向所述分布式对象生成管理设备通知录入结束应答,
其中,所述分布式对象生成管理设备被配置为响应于从所述应用程序接收对于所述分布式对象服务器的使用请求而生成所述分布式对象服务器并且保留所述分布式对象服务器的识别信息,
其中,所述规定的通知包括基于来自应用程序的对于所述分布式对象服务器的所述使用请求,而由所述分布式对象生成管理设备生成的所述分布式对象服务器的所述识别信息,
其中,当确定所述应用程序被所述程序行为监控设备响应于监视所述应用程序的用户请求而监视时,所述分布式对象生成管理设备向所述程序行为监控设备发送所述规定的通知,
其中,所述应用程序与所述分布式对象服务器直接通信,
其中,来自所述应用程序的所述使用请求包括被指定为在公共用户区域内执行的所述分布式对象服务器的执行主体的使用请求,
其中,所述执行主体作为所述分布式对象生成管理设备在公共用户区域中的子进程而不是作为应用程序在个人用户区域中的子进程生成,以及
其中,所述公共用户区域包括第一存储区域,在所述第一存储区域中执行能由多个用户中的所有用户以共享方式利用的进程。
5.一种分布式对象生成管理设备,其特征在于,包括至少一个处理器和至少一个非易失性计算机可读介质,所述至少一个非易失性计算机可读介质包括计算机程序代码,所述至少一个非易失性计算机可读介质和所述计算机程序代码被配置为通过所述处理器使得所述分布式对象生成管理设备至少:
从应用程序接收对于分布式对象服务器的使用请求;
当确定了所述应用程序的识别信息未录入程序行为监控设备的进程清单中时,生成已经对其提出所述使用请求的所述分布式对象服务器;
当确定了所述应用程序的所述识别信息录入程序行为监控设备的进程清单中时,向所述程序行为监控设备发送规定的通知;以及
从所述程序行为监控设备接收由所述程序行为监控设备生成的所述分布式对象服务器的识别信息,
其中,所述规定的通知请求所述分布式对象服务器由所述程序行为监控设备而不是由所述分布式对象生成管理设备生成,
其中,当确定所述应用程序被所述程序行为监控设备响应于监视所述应用程序的用户请求而监视时,所述分布式对象生成管理设备向所述程序行为监控设备发送所述规定的通知,
其中,所述应用程序与所述分布式对象服务器直接通信,
其中,来自所述应用程序的所述使用请求包括被指定为在公共用户区域内执行的所述分布式对象服务器的执行主体的使用请求,
其中,所述执行主体作为所述程序行为监控设备在公共用户区域中的子进程而不是作为所述应用程序在个人用户区域中的子进程生成,并且
其中,所述公共用户区域包括第一存储区域,在所述第一存储区域中执行能由多个用户中的所有用户以共享方式利用的进程。
6.一种分布式对象生成管理设备,其特征在于,包括至少一个处理器和至少一个非易失性计算机可读介质,所述至少一个非易失性计算机可读介质包括计算机程序代码,所述至少一个非易失性计算机可读介质和所述计算机程序代码被配置为通过所述处理器使得所述分布式对象生成管理设备至少:
从应用程序接收对于分布式对象服务器的使用请求;
生成已经对其提出所述使用请求的所述分布式对象服务器;
暂停所述分布式对象服务器的执行;
当确定了所述应用程序的识别信息录入程序行为监控设备的进程清单中时,向所述程序行为监控设备发送规定的通知;
当确定了所述应用程序的所述识别信息录入程序行为监控设备的进程清单中时,从所述程序行为监控设备接收录入结束应答;以及
解除暂停所述分布式对象服务器的所述执行,
其中,所述规定的通知包括基于来自所述应用程序的对于所述分布式对象服务器的所述使用请求,而由所述分布式对象生成管理设备生成的所述分布式对象服务器的识别信息,
其中,当确定所述应用程序被所述程序行为监控设备响应于监视应用程序的用户请求而监视时,所述分布式对象生成管理设备向所述程序行为监控设备发送所述规定的通知,
其中,所述应用程序与所述分布式对象服务器直接通信,
其中,来自所述应用程序的所述使用请求包括被指定为在公共用户区域内执行的所述分布式对象服务器的执行主体的使用请求,
其中,所述执行主体作为所述分布式对象生成管理设备在公共用户区域中的子进程而不是作为所述应用程序在个人用户区域中的子进程生成,以及
其中,所述公共用户区域包括第一存储区域,在所述第一存储区域中执行能由多个用户中的所有用户以共享方式利用的进程。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016-212993 | 2016-10-31 | ||
JP2016212993A JP6104447B1 (ja) | 2016-10-31 | 2016-10-31 | プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム |
PCT/JP2017/007900 WO2018078902A1 (ja) | 2016-10-31 | 2017-02-28 | プログラム動作監視制御装置、分散オブジェクト生成管理装置、記録媒体、及びプログラム動作監視システム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109923547A CN109923547A (zh) | 2019-06-21 |
CN109923547B true CN109923547B (zh) | 2023-07-07 |
Family
ID=59366064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780067370.9A Active CN109923547B (zh) | 2016-10-31 | 2017-02-28 | 程序行为监控设备、分布式对象生成管理设备、存储介质、以及程序行为监视系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10831885B2 (zh) |
EP (1) | EP3340099B1 (zh) |
JP (1) | JP6104447B1 (zh) |
CN (1) | CN109923547B (zh) |
DK (1) | DK3340099T3 (zh) |
WO (1) | WO2018078902A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6866645B2 (ja) | 2017-01-05 | 2021-04-28 | 富士通株式会社 | 類似度判定プログラム、類似度判定方法および情報処理装置 |
JP2018109910A (ja) * | 2017-01-05 | 2018-07-12 | 富士通株式会社 | 類似度判定プログラム、類似度判定方法および情報処理装置 |
CN112328377B (zh) * | 2020-11-04 | 2022-04-19 | 北京字节跳动网络技术有限公司 | 基线监控方法、装置、可读介质及电子设备 |
US11882148B1 (en) * | 2021-03-23 | 2024-01-23 | Trend Micro Incorporated | Automated mitigation of cyber threats using a semantic cybersecurity database |
CN113127570B (zh) * | 2021-05-18 | 2022-11-04 | 上海莉莉丝科技股份有限公司 | 分布式服务器的数据操作方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001134511A (ja) * | 1999-11-08 | 2001-05-18 | Nec Corp | ネットワーク管理システム及びその管理方法並びにその制御プログラムを記録した記録媒体 |
JP2009151827A (ja) * | 2009-04-06 | 2009-07-09 | Nec Corp | データ監視方法、情報処理装置、プログラム及び記録媒体、並びに情報処理システム |
US9148428B1 (en) * | 2011-05-25 | 2015-09-29 | Bromium, Inc. | Seamless management of untrusted data using virtual machines |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6425017B1 (en) | 1998-08-17 | 2002-07-23 | Microsoft Corporation | Queued method invocations on distributed component applications |
US8429741B2 (en) * | 2008-08-29 | 2013-04-23 | Google, Inc. | Altered token sandboxing |
JP5423063B2 (ja) | 2009-03-05 | 2014-02-19 | 日本電気株式会社 | 情報処理装置と方法とプログラム |
US8627451B2 (en) * | 2009-08-21 | 2014-01-07 | Red Hat, Inc. | Systems and methods for providing an isolated execution environment for accessing untrusted content |
WO2011114655A1 (ja) | 2010-03-16 | 2011-09-22 | パナソニック株式会社 | 情報処理装置、仮想マシン生成方法及びアプリ配信システム |
JP5852103B2 (ja) * | 2011-04-27 | 2016-02-03 | パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America | 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路 |
WO2013082437A1 (en) * | 2011-12-02 | 2013-06-06 | Invincia, Inc. | Methods and apparatus for control and detection of malicious content using a sandbox environment |
JP5411966B2 (ja) * | 2012-07-10 | 2014-02-12 | 日本電信電話株式会社 | 監視装置および監視方法 |
US9330259B2 (en) * | 2013-03-19 | 2016-05-03 | Trusteer, Ltd. | Malware discovery method and system |
US9729506B2 (en) * | 2014-08-22 | 2017-08-08 | Shape Security, Inc. | Application programming interface wall |
-
2016
- 2016-10-31 JP JP2016212993A patent/JP6104447B1/ja active Active
-
2017
- 2017-02-28 US US15/524,604 patent/US10831885B2/en active Active
- 2017-02-28 DK DK17718713.5T patent/DK3340099T3/da active
- 2017-02-28 WO PCT/JP2017/007900 patent/WO2018078902A1/ja active Application Filing
- 2017-02-28 CN CN201780067370.9A patent/CN109923547B/zh active Active
- 2017-02-28 EP EP17718713.5A patent/EP3340099B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001134511A (ja) * | 1999-11-08 | 2001-05-18 | Nec Corp | ネットワーク管理システム及びその管理方法並びにその制御プログラムを記録した記録媒体 |
JP2009151827A (ja) * | 2009-04-06 | 2009-07-09 | Nec Corp | データ監視方法、情報処理装置、プログラム及び記録媒体、並びに情報処理システム |
US9148428B1 (en) * | 2011-05-25 | 2015-09-29 | Bromium, Inc. | Seamless management of untrusted data using virtual machines |
Also Published As
Publication number | Publication date |
---|---|
EP3340099A4 (en) | 2018-06-27 |
DK3340099T3 (da) | 2023-02-20 |
JP2018073166A (ja) | 2018-05-10 |
EP3340099B1 (en) | 2022-12-07 |
US20180300474A1 (en) | 2018-10-18 |
CN109923547A (zh) | 2019-06-21 |
WO2018078902A1 (ja) | 2018-05-03 |
EP3340099A1 (en) | 2018-06-27 |
US10831885B2 (en) | 2020-11-10 |
JP6104447B1 (ja) | 2017-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109923547B (zh) | 程序行为监控设备、分布式对象生成管理设备、存储介质、以及程序行为监视系统 | |
Maesa et al. | Blockchain based access control services | |
US6205466B1 (en) | Infrastructure for an open digital services marketplace | |
Pfaff et al. | The open vswitch database management protocol | |
US6233576B1 (en) | Enhanced security for computer system resources with a resource access authorization control facility that creates files and provides increased granularity of resource permission | |
JP4400059B2 (ja) | ポリシー設定支援ツール | |
US8122500B2 (en) | Tracking the security enforcement in a grid system | |
CN110363026B (zh) | 文件操作方法、装置、设备、系统及计算机可读存储介质 | |
CA2485062A1 (en) | Security-related programming interface | |
US20140047553A1 (en) | Method and apparatus for data security reading | |
CN114168179B (zh) | 微服务管理方法、装置、计算机设备和存储介质 | |
EP3779747B1 (en) | Methods and systems to identify a compromised device through active testing | |
JP2008243172A (ja) | アクセス権限制御システム | |
US7343560B1 (en) | Method and system for generating dynamic images | |
CN116070201B (zh) | 数据管理的方法、系统、电子设备及介质 | |
US20080127301A1 (en) | Delivering Callbacks Into Secure Application Areas | |
JP4191239B2 (ja) | アクセス権限制御システム | |
US20130263278A1 (en) | Method and apparatus for controlling operations performed by a mobile co | |
US20240095148A1 (en) | Automatic assignment of changed permissions for diagnostic purposes for work container instances that have already been started | |
CN117806775B (zh) | Kubernetes集群的容器资源处理方法和装置 | |
CN111131296B (zh) | 消息分发方法和装置 | |
CN117909027A (zh) | 层级式容器编排系统及容器编排方法 | |
CN118502985A (zh) | 一种基于统一管理平台的子应用数据获取方法及装置 | |
CN116166620A (zh) | 一种软件资源处理方法及装置 | |
CN118433067A (zh) | 一种针对云环境的防火墙检测方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |