CN101571901B - 定位服务操作者的方法和装置 - Google Patents
定位服务操作者的方法和装置 Download PDFInfo
- Publication number
- CN101571901B CN101571901B CN2009100865176A CN200910086517A CN101571901B CN 101571901 B CN101571901 B CN 101571901B CN 2009100865176 A CN2009100865176 A CN 2009100865176A CN 200910086517 A CN200910086517 A CN 200910086517A CN 101571901 B CN101571901 B CN 101571901B
- Authority
- CN
- China
- Prior art keywords
- thread
- thread information
- service operations
- constant offset
- current
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种定位服务操作者的方法和装置。其中,所述方法包括:监控到服务操作时,若系统的当前进程不是设定进程,则确定所述当前进程为所述服务操作的服务操作者;若系统的当前进程是设定进程,遍历所述系统的线程,获取所述服务操作的客户端的当前状态为挂起状态、并且所述挂起状态满足设定条件的线程的线程信息,确定与所述线程信息对应的进程为所述服务操作的服务操作者。本发明在内核态对服务相关函数进行挂钩,可以克服现有技术中在用户态对服务相关函数的钩挂安全性非常差的缺陷,实现安全、准确地定位服务操作者。
Description
技术领域
本发明涉及网络安全相关技术,尤其涉及一种定位服务操作者的方法和装置。
背景技术
Window系统在操作系统启动时,启动进程,这些进程提供了一些不依赖与任何用户交互的机制,这种机制称为服务(service)或者Window服务(windows Service)。服务作为一种重要的能自行启动的系统机制,被安全软件和恶意程序所使用。安全软件作为服务安装后,在Window系统的操作系统启动时,如果能较早地启动,就可以尽早对Window系统进行安全监控。而对于恶意程序,如果能较早地启动,就可以绕过安全软件的监控,同时能利用Window系统的服务管理器停止系统中安全软件的工作。
为了检测恶意程序,需要定位Windows系统服务操作者。现有的安全软件定位Windows系统服务操作者的方法是在用户态钩挂服务相关函数,如创建服务的函数(CreateService),启动服务的函数(StartService),控制服务的函数(ControlService)等,在应用程序调用这些函数时,安全软件通过逻辑判断允许或者拒绝应用程序对服务的操作。该方法可以定位Windows系统服务操作者,但是在用户态钩挂服务相关函数的安全性非常差,很容易被恶意程序在用户态将钩挂卸除。其中,当进程在执行用户自己的代码时,称其处于用户态。
发明内容
本发明提供一种定位服务操作者的方法和装置,用以实现安全、准确地定位服务操作者。
本发明提供了一种定位服务操作者的方法,适用于Window系统,包括:
监控到服务操作时,若系统的当前进程不是设定进程,则确定所述当前进程为所述服务操作的服务操作者;
若系统的当前进程是设定进程,遍历所述系统的线程,获取所述服务操作的客户端的当前状态为挂起状态、并且所述挂起状态满足设定条件的线程的线程信息,确定与所述线程信息对应的进程为所述服务操作的服务操作者;所述设定进程包括Services.exe。
本发明提供了一种定位服务操作者的装置,适用于Window系统,包括:
监控模块,用于监控服务操作;
第一判断模块,用于所述监控模块监控到服务操作时,判断系统的当前进程是否是设定进程;
第一确定模块,用于当所述第一判断模块判断系统的当前进程不是设定进程时,确定所述当前进程为所述服务操作的服务操作者;
第二确定模块,用于当所述第一判断模块判断系统的当前进程是设定进程时,遍历所述系统的线程,获取所述服务操作的客户端的当前状态为挂起状态、并且所述挂起状态满足设定条件的线程的线程信息,确定与所述线程信息对应的进程为所述服务操作的服务操作者;
所述设定进程包括Services.exe。
本发明通过当内核函数钩子监控到服务操作时,若系统的当前进程是设定进程,遍历系统的线程,获取服务操作的客户端的当前状态为挂起状态、 并且该挂起状态满足设定条件的线程的线程信息,确定与线程信息对应的进程为该服务操作的服务操作者,从而实现在内核态对服务相关函数进行挂钩,可以克服现有技术中在用户态对服务相关函数的钩挂安全性非常差的缺陷,安全、准确地定位服务操作者。
附图说明
图1为本发明定位服务操作者的方法提供的一个实施例的流程图;
图2为本发明定位服务操作者的方法提供的另一个实施例的流程图;
图3为本发明定位服务操作者的方法提供的另一个实施例的流程图;
图4为本发明定位服务操作者的方法提供的另一个实施例的流程图;
图5为本发明定位服务操作者的装置提供的一个实施例的结构示意图;
图6为本发明定位服务操作者的装置提供的另一个实施例的结构示意图;
图7为本发明定位服务操作者的装置提供的另一个实施例的结构示意图;
图8为本发明定位服务操作者的装置提供的另一个实施例的结构示意图。
具体实施方式
为了更安全地监控系统中服务操作,可以通过内核函数钩子,监控服务操作,但是现在的情况是,在内核函数钩子监控到服务操作时,若检测到的当前进程是Services.exe进程,该Services.exe进程不是真正发起服务操作的操作者。
Windows服务操作管理是一个客户端到服务器端的通信机制,操作服务的应用程序作为服务操作的客户端,调用服务操作函数,发送请求到服务操作的服务器端,在Windows操作系统中,服务操作的服务器端是Services.exe 进程,Services.exe根据服务操作的客户端传过来的数据,进行真正的服务操作。
为了获取服务操作者,就要对客户端到服务器端的通信机制做分析。在客户端调用服务操作函数后,服务操作函数会通过系统的一种调用机制向服务操作的服务器端发起请求,然后等待服务器端返回请求处理结果。服务操作的服务器端接收到该请求后,按照约定的方式进行具体的服务操作,监控软件的内核函数钩子能监控到该服务操作。因为服务操作的客户端在服务操作的服务器端返回请求处理结果前,会一直挂起等待,根据该特性,可以遍历当前系统中的线程,根据具体逻辑判断,定位服务操作的客户端线程,进一步定位服务操作的客户端进程。
如图1所示,为本发明定位服务操作者的方法提供的一个实施例的流程图,可以包括如下步骤:
步骤11、内核函数钩子监控到服务操作时,若系统的当前进程不是设定进程,则确定该当前进程为该服务操作的服务操作者;
步骤12、若系统的当前进程是设定进程,遍历系统的线程,获取服务操作的客户端的当前状态为挂起状态、并且该挂起状态满足设定条件的线程的线程信息,确定与线程信息对应的进程为该服务操作的服务操作者;
具体地,系统中所有进程都挂在一个进程信息链表上,而进程的所有线程又挂在该进程中的一个线程信息链表上,通过遍历进程信息链表,然后遍历每个进程中的线程信息链表,就能实现遍历所有线程,依次获取系统中每个线程的线程信息。另外,由于系统中可以存在多个客户端挂起的线程,为了确定服务操作者,可以从服务操作的客户端挂起的线程中找出满足设定条件的线程,再根据该线程找到进程。
本实施例通过当内核函数钩子监控到服务操作时,若系统的当前进程是设定进程,遍历系统的线程,获取服务操作的客户端的当前状态为挂起状态、并且该挂起状态满足设定条件的线程的线程信息,确定与线程信息对应的进程为服务操作者,从而实现在内核态对服务相关函数进行挂钩,可以克服现有技术中在用户态对服务相关函数的钩挂安全性非常差的缺陷,安全、准确地定位服务操作者。
对于windows操作系统,当内核函数钩子发现需要关注的服务操作时,如果当前进程是Services.exe,则Services.exe处理客户端进程发起的服务操作。对于不同windows操作系统,windows服务操作时,客户端和服务器端的通信机制是不同的,定位方法也有所不同。在windows 2000和windows server2003 service pack 0系统,客户端和服务器端的通信机制最终是通过命名管道方式实现;对于windows xp和windows server 2003 service pack 1(ServicePack 2)系统,客户端和服务器端的通信机制通过局部进程调用(Local ProcessCall,以下简称:LPC)实现;对于windows vista和Windows 7系统,客户端和服务器端的通信机制通过高级LPC(Advanced LPC,以下简称:Alpc)实现。
如图2所示,为本发明定位服务操作者的方法提供的另一个实施例的流程图,本实施例适用于windows 2000和windows server 2003 service pack 0系统,可以包括如下步骤:
步骤21、内核函数钩子监控服务操作,执行步骤22;
步骤22、当内核函数钩子监控到服务操作时,判断系统的当前进程是否为Services.exe,若系统的当前进程是Services.exe,执行步骤23,否则执行步骤210;
步骤23、获取系统的线程的线程信息,执行步骤24;
步骤24、判断是否挂起输入输出请求包(Input/Output Request Packet,以下简称:IRP),若线程挂起IRP,执行步骤25,否则执行步骤29;
在线程信息中有一项是表示该线程是否挂起的IRP,获取线程信息后可直接获取该项;
步骤25、判断IRP是否挂起在设定设备驱动程序中,若IRP挂起在设定设备驱动程序中,执行步骤26,否则执行步骤29;
该设定设备驱动程序可以包括NPFS.SYS;
步骤26、判断设定设备驱动程序中的挂起请求码是否为设定挂起请求码;若设定设备驱动程序中的挂起请求码为设定挂起请求码,执行步骤27,否则执行步骤29;
该设定挂起请求码可以包括IRP_MJ_FILE_SYSTEM_CONTROL;
步骤27、判断挂起请求码的控制码是否为设定控制码;若挂起请求码的控制码为设定控制码,执行步骤28,否则执行步骤29;
该设定控制码可以包括0x11C017;
步骤28、确定与该线程信息对应的进程为服务操作者。
具体地,该步骤可以通过调用系统函数获取与线性信息对应的进程信息,如调用系统函数PsGetThreadProcess或者PsGetThreadProcessId,可以根据线程信息获取对应的进程信息。
步骤29、获取系统的下一个线程,执行步骤23;
步骤210、确定该当前进程为服务操作的服务操作者。
对于windows 2000和windows server 2003 service pack 0系统,遍历当前系统中的线程,如果有线程挂起IRP,且挂起在npfs.sys设备驱动程序中,进一步获取挂起IRP的详细信息为挂起请求码为IRP_MJ_FILE_SYSTEM_CONTROL 且请求控制码为0x11C017时,可唯一确定这个线程就是发起服务请求的客户端线程,从而实现在内核态对服务相关函数进行挂钩,可以克服现有技术中在用户态对服务相关函数的钩挂安全性非常差的缺陷,安全、准确地定位服务操作者。
如图3所示,为本发明定位服务操作者的方法提供的另一个实施例的流程图,本实施例适用于windows xp和windows server 2003 service pack 1(ServicePack 2)系统,可以包括如下步骤:
步骤31、内核函数钩子监控服务操作,执行步骤32;
步骤32、当内核函数钩子监控到服务操作时,判断系统的当前进程是否为Services.exe,若系统的当前进程是Services.exe,执行步骤33,否则执行步骤39;
步骤33、获取当前线程的线程信息的第二固定偏移处的LPC服务器端标识,执行步骤34;
对于window xp系统,该第二固定偏移处可以包括0x234,对于windowsserver 2003service pack 1,该第二固定偏移处可以包括0x23C;
步骤34、获取系统的线程的线程信息,执行步骤35;
步骤35、判断该线程信息的第一固定偏移处的LPC客户端标识是否有效;若该线程信息的第一固定偏移处的LPC客户端标识有效,执行步骤36,否则执行步骤38;
当服务操作的客户端向服务操作的服务器端发起请求,等待服务器端返回请求处理结果的过程中,该LPC标识是有效的,服务器端返回请求处理结果后,该标识就会变为无效(清零)。
对于window xp系统,该第一固定偏移处可以包括0x220,对于windows server 2003 service pack 1系统,该第一固定偏移处可以包括0x228;
步骤36、判断LPC客户端标识与系统的当前线程的线程信息的第二固定偏移处的LPC服务器端标识是否相同;若LPC客户端标识与系统的当前线程的线程信息的第二固定偏移处的LPC服务器端标识相同,执行步骤37;否则执行步骤38;
步骤37、确定与该线程信息对应的进程为服务操作者。
步骤38、获取系统的下一个线程,执行步骤34;
步骤39、确定该当前进程为该服务操作的服务操作者。
对于windows xp和windows server 2003service pack 1(Service Pack 2)系统,在当前线程的数据内核结构中固定偏移处有描述当前LPC服务器端的唯一标识,获取当前线程中该唯一标识后,遍历系统中所有线程,如果线程是LPC客户端,在线程内核数据结构中固定偏移处描述LPC客户端的标识将不为0,如果系统中的线程信息中LPC客户端的唯一标识与服务器端标识一致时,可唯一确定该线程就是发起服务请求的客户端线程,从而实现在内核态对服务相关函数进行挂钩,可以克服现有技术中在用户态对服务相关函数的钩挂安全性非常差的缺陷,安全、准确地定位服务操作者。
如图4所示,为本发明定位服务操作者的方法提供的另一个实施例的流程图,本实施例适用于windows vista和Windows 7系统,可以包括如下步骤:
步骤41、内核函数钩子监控服务操作,执行步骤42;
步骤42、当内核函数钩子监控到服务操作时,判断系统的当前进程是否为Services.exe,若系统的当前进程是Services.exe,执行步骤43,否则执行步骤48;
步骤43、获取系统的线程的线程信息,执行步骤44;
步骤44、判断该线程信息中固定偏移处的Alpc数据是否有效;若该线程信息中固定偏移处的Alpc数据有效,执行步骤45,否则执行步骤47;
当服务操作的客户端向服务操作的服务器端发起请求,等待服务器端返回请求结果的过程中,该Alpc数据是有效的,服务器端返回请求处理结果后,该Alpc数据就会变为无效(清零)。对于windows vista,该线程信息中固定偏移处可以包括0x270,对于Windows 7系统,该线程信息中固定偏移处可以包括0x290;
步骤45、判断Alpc数据对应的内存块固定偏移处的数据与系统的当前线程的线程信息是否相同;若Alpc数据对应的内存块固定偏移处的数据与系统的当前线程的线程信息相同,执行步骤46,否则执行步骤47;
其中,当前线程表示内核函数钩子监控到的服务操作的线程。Alpc数据可以为一个指针,指向内核函数钩子监控到的服务操作的当前线程的线程信息。对于windows vista系统,该内存块固定偏移处可以包括0x70,对于windows7系统,该内存块固定偏移处可以包括0x6C;
步骤46、确定与该线程信息对应的进程为服务操作者;
步骤47、获取系统的下一个线程,执行步骤43;
步骤48、确定该进程为该服务操作的服务操作者。
对于windows vista和Windows 7系统,遍历系统中所有线程,获取线程内核数据结构中固定偏移处数据,如果数据有效,进一步获取数据指向内存块固定偏移处数据,如果该数据合法,与当前线程内核数据结构做比较,如果该数据与当前线程内核数据结构一致,可唯一确定该线程是发起服务请求的客户端线程,从而实现在内核态对服务相关函数进行挂钩,可以克服现有技术中在用户态对服务相关函数的钩挂安全性非常差的缺陷,安全、准确地定 位服务操作者。
下面通过介绍服务的创建说明本发明的应用:通过监控服务的创建,将新创建的服务和创建进程关联。创建服务的一个步骤是在注册表中写入服务启动信息,通过安全软件注册表监控模块监控注册表操作能监控到此操作,从而本发明能在注册表监控中定位服务的创建者。
在应用程序调用服务操作函数创建服务时,服务操作函数根据一定的通信机制发送请求给服务操作的服务器端,即Services.exe进程,Services.exe进程处理该请求,根据客户端传递的参数将服务启动信息写入注册表项,在写入注册表操作时,被安全软件注册表监控模块监控到,在此处进行发起者的定位。
对于windows 2000和windows server 2003 service pack 0操作系统,遍历当前系统中所有线程,如果线程有挂起IRP,且IRP挂起在npfs.sys中,根据IRP信息进一步获取IRP请求码和控制码,如果IRP请求码为IRP_MJ_FILE_SYSTEM_CONTROL且控制码为0x11C017,这个线程就是发起者线程。
对于windows xp和windows server 2003service pack 1(Service Pack 2)系统,以windows xp为例,当前线程信息偏移0x228处是描述当前LPC服务器端ID,遍历系统中所有线程,在线程信息中取偏移为0x23C的数据,该信息是描述LPC客户端ID,如果线程中取出的客户端ID与服务器端ID一致,该线程就是发起者线程。
对于windows vista和Windows 7操作系统,当前线程中没有存储与客户端相关的信息,以windows vista为例,通过遍历系统中所有线程,取线程信息偏移0x270处数据,如果数据有效,取此数据对应内存块偏移0x70处数据, 如果此数据与被监控线程信息相等,这个线程就是发起者线程。
获取发起者线程信息后,因为线程信息中有进程信息,可以很方便获取进程信息。
如图5所示,为本发明定位服务操作者的装置提供的一个实施例的结构示意图,可以包括监控模块51、第一判断模块52、第一确定模块53和第二确定模块54。
其中,监控模块51用于监控服务操作;第一判断模块52用于监控模块51监控到服务操作时,判断系统的当前进程是否是设定进程;第一确定模块53用于当第一判断模块52判断系统的当前进程不是设定进程时,确定当前进程为该服务操作的服务操作者;第二确定模块54用于当第一判断模块52判断系统的当前进程是设定进程时,遍历系统的线程,获取服务操作的客户端的当前状态为挂起状态、并且挂起状态满足设定条件的线程的线程信息,确定与线程信息对应的进程为该服务操作的服务操作者。
本实施例通过当监控模块51监控到服务操作时,若第一判断模块52判断系统的当前进程是设定进程,第二确定模块54遍历系统的线程,获取该服务操作的客户端的当前状态为挂起状态、并且该挂起状态满足设定条件的线程的线程信息,确定与线程信息对应的进程为该服务操作的服务操作者,从而实现在内核态对服务相关函数进行挂钩,可以克服现有技术中在用户态对服务相关函数的钩挂安全性非常差的缺陷,安全、准确地定位服务操作者。
如图6所示,为本发明定位服务操作者的装置提供的另一个实施例的结构示意图,本实施例适用于windows 2000和windows server 2003 service pack 0系统,在图5所示结构示意图的基础上,第一判断模块52用于判断当前进程是否为Services.exe。第二确定模块54可以包括第一获取单元61、第一判断单元 62、第二判断单元63、第三判断单元64、第四判断单元65和第一确定单元66。
其中,第一获取单元61用于当第一判断模块52判断系统的当前进程是Services.exe时,获取系统的线程的线程信息。第一判断单元62用于根据第一获取单元61获取的线程信息,判断线程是否挂起输入输出请求包。第一获取单元61还用于当第一判断单元62判断线程未挂起输入输出请求包时,获取系统的下一个线程的线程信息。第二判断单元63用于当第一判断单元62判断线程挂起输入输出请求包时,判断输入输出请求包是否挂起在设定设备驱动程序中。该设定设备驱动程序可以包括NPFS.SYS。第一获取单元61还用于当第二判断单元63判断输入输出请求包未挂起在设定设备驱动程序中时,获取系统的下一个线程的线程信息。第三判断单元64用于当第二判断单元63判断输入输出请求包挂起在设定设备驱动程序中时,判断设定设备驱动程序中的挂起请求码是否为设定挂起请求码。该设定挂起请求码可以包括IRP_MJ_FILE_SYSTEM_CONTROL。第一获取单元61还用于当第三判断单元64判断设定设备驱动程序中的挂起请求码不是设定挂起请求码时,获取系统的下一个线程的线程信息。第四判断单元65用于当第三判断单元64判断设定设备驱动程序中的挂起请求码是设定挂起请求码时,判断挂起请求码的控制码是否为设定控制码。该设定控制码可以包括0x11C017。第一获取单元61还用于当第四判断单元65判断挂起请求码的控制码不是设定控制码时,获取系统的下一个线程的线程信息。第一确定单元66用于当第四判断单元65判断挂起请求码的控制码是设定控制码时,确定与第一获取单元61获取的线程信息对应的进程为服务操作的服务操作者。
对于windows 2000和windows server 2003 service pack 0系统,第一获取单元61遍历当前系统中的线程,如果第一判断单元62判断有线程挂起IRP,且第 二判断单元63判断IRP挂起在npfs.sys设备驱动程序中,进一步第三判断单元64获取挂起IRP的详细信息为挂起请求码为IRP_MJ_FILE_SYSTEM_CONTROL,第四判断单元65判断挂起请求码的控制码为0x11C017时,第一确定单元66可唯一确定这个线程就是发起服务请求的客户端线程,从而实现在内核态对服务相关函数进行挂钩,可以克服现有技术中在用户态对服务相关函数的钩挂安全性非常差的缺陷,安全、准确地定位服务操作者。
如图7所示,为本发明定位服务操作者的装置提供的另一个实施例的结构示意图,本实施例适用于windows xp和windows server 2003 service pack 1(Service Pack 2)系统,在图5所示结构示意图的基础上,第一判断模块52用于判断当前进程是否为Services.exe。第二确定模块54可以包括第二获取单元71、第三获取单元72、第五判断单元73、第六判断单元74和第二确定单元75。
其中,第二获取单元71用于当第一判断模块52判断系统的当前进程是设定进程时,获取系统的当前线程的线程信息中第二固定偏移处的LPC服务器端标识。对于windows xp系统,该第二固定偏移处可以包括0x234,对于windowsserver 2003 service pack 1系统,该第二固定偏移处可以包括0x23C。第三获取单元72用于获取系统的线程的线程信息。第五判断单元73用于判断第三获取单元72获取的线程信息中第一固定偏移处的LPC客户端标识是否有效。对于windows xp系统,该第一固定偏移处可以包括0x234,对于windows server 2003service pack 1系统,该第二固定偏移处可以包括0x228。第三获取单元72还用于当第五判断单元73判断第三获取单元72获取的线程信息中第一固定偏移处的LPC客户端标识无效时,获取系统的下一个线程的线程信息。第六判断单元74用于当第五判断单元73判断第三获取单元72获取的线程信息中第一固定偏 移处的LPC客户端标识有效时,判断LPC客户端标识与第二获取单元71获取的LPC服务器端标识是否相同。第三获取单元72还用于当第六判断单元74判断LPC客户端标识与第二获取单元71获取的LPC服务器端标识不同时,获取系统的下一个线程的线程信息。第二确定单元75用于当第六判断单元74判断LPC客户端标识与第二获取单元71获取的LPC服务器端标识相同时,确定与第三获取单元72获取的线程信息对应的进程为该服务操作的服务操作者。
对于windows xp和windows server 2003 service pack 1(Service Pack 2)系统,在当前线程的数据内核结构中固定偏移处有描述当前LPC服务器端的唯一标识,第二获取单元71获取当前线程中该唯一标识后,第三获取单元72遍历系统中所有线程,如果线程是LPC客户端,第五判断单元73判断在线程内核数据结构中固定偏移处描述LPC客户端的标识将不为0,如果第六判断单元74判断系统中有线程信息中描述LPC客户端的唯一标识与LPC服务器端标识一致时,第二确定单元75可唯一确定该线程就是发起服务请求的客户端线程,从而实现在内核态对服务相关函数进行挂钩,可以克服现有技术中在用户态对服务相关函数的钩挂安全性非常差的缺陷,安全、准确地定位服务操作者。
如图8所示,为本发明定位服务操作者的装置提供的另一个实施例的结构示意图,本实施例适用于windows vista和Windows 7系统,在图5所示结构示意图的基础上,第一判断模块52用于判断当前进程是否为Services.exe。第二确定模块54可以包括第四获取单元81、第七判断单元82、第八判断单元83和第三确定单元84。
其中,第四获取单元81用于当第一判断模块52判断系统的当前进程是设定进程时,获取系统的线程的线程信息。第七判断单元82用于判断第四获取单元81获取的线程信息中固定偏移处的高级LPC数据是否有效。对于windows vista系统,该固定偏移处可以包括0x270,对于Windows 7系统,该固定偏移处可以包括0x290。第四获取单元81还用于当第七判断单元82判断第四获取单元81获取的线程信息中固定偏移处的高级LPC数据无效时,获取系统的下一个线程的线程信息。第八判断单元83用于当第七判断单元82判断第四获取单元81获取的线程信息中固定偏移处的高级LPC数据有效时,判断高级LPC数据对应的内存块固定偏移处的数据与系统的当前线程的线程信息是否相同。第四获取单元81还用于当第八判断单元83判断高级LPC数据对应的内存块固定偏移处的数据与系统的当前线程的线程信息不同时,获取系统的下一个线程的线程信息。第三确定单元84用于当第八判断单元83判断高级LPC数据对应的内存块固定偏移处的数据与系统的当前线程的线程信息相同时,确定与第四获取单元81获取的线程信息对应的进程为该服务操作的服务操作者。对于windows vista系统,该内存块固定偏移处可以包括0x70,对于windows 7系统,该内存块固定偏移处可以包括0x6C。
对于windows vista和Windows 7系统,第四获取单元81遍历系统中所有线程,获取线程内核数据结构中固定偏移处数据,如果第七判断单元82判断数据有效,进一步获取数据指向内存块固定偏移处数据,第八判断单元83将该数据与当前线程内核数据结构做比较,如果判断该数据与当前线程内核数据结构一致,第三确定单元84可唯一确定这个线程是发起服务请求的客户端线程,从而实现在内核态对服务相关函数进行挂钩,可以克服现有技术中在用户态对服务相关函数的钩挂安全性非常差的缺陷,安全、准确地定位服务操作者。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
Claims (14)
1.一种定位服务操作者的方法,适用于Window系统,其特征在于,包括:
监控到服务操作时,若系统的当前进程不是设定进程,则确定所述当前进程为所述服务操作的服务操作者;
若系统的当前进程是设定进程,遍历所述系统的线程,获取所述服务操作的客户端的当前状态为挂起状态、并且所述挂起状态满足设定条件的线程的线程信息,确定与所述线程信息对应的进程为所述服务操作的服务操作者;所述设定进程包括Services.exe。
2.根据权利要求1所述的方法,其特征在于,所述获取所述服务操作的客户端的当前状态为挂起状态、并且所述挂起状态满足设定条件的线程的线程信息包括:
获取挂起输入输出请求包、所述输入输出请求包挂起在设定设备驱动程序、所述设定设备驱动程序中的挂起请求码为设定挂起请求码、所述挂起请求码的控制码为设定控制码的线程的线程信息。
3.根据权利要求1所述的方法,其特征在于,所述获取所述服务操作的客户端的当前状态为挂起状态、并且所述挂起状态满足设定条件的线程的线程信息包括:
获取线程信息的第一固定偏移处的局部进程调用客户端标识有效、所述局部进程调用客户端标识与所述系统的当前线程的线程信息的第二固定偏移处的局部进程调用服务器端标识相同的线程的线程信息。
4.根据权利要求1所述的方法,其特征在于,所述获取所述服务操作的客户端的当前状态为挂起状态、并且所述挂起状态满足设定条件的线程的线程信息包括:
获取线程信息中固定偏移处的高级局部进程调用数据有效、所述高级局部进程调用数据对应的内存块固定偏移处的数据与所述系统的当前线程的线程信息相同的线程的线程信息。
5.根据权利要求2所述的方法,其特征在于,所述设定设备驱动程序包括NPFS.SYS,所述设定挂起请求码包括IRP_MJ_FILE_SYSTEM_CONTROL,所述设定控制码包括0x11C017。
6.根据权利要求3所述的方法,其特征在于,所述第一固定偏移处包括0x220或者0x228,所述第二固定偏移处包括0x234或者0x23C。
7.根据权利要求4所述的方法,其特征在于,所述线程信息中固定偏移处包括0x270或者0x290,所述内存块固定偏移处包括0x70或者0x6c。
8.一种定位服务操作者的装置,适用于Window系统,其特征在于,包括:
监控模块,用于监控服务操作;
第一判断模块,用于所述监控模块监控到服务操作时,判断系统的当前进程是否是设定进程;
第一确定模块,用于当所述第一判断模块判断系统的当前进程不是设定进程时,确定所述当前进程为所述服务操作的服务操作者;
第二确定模块,用于当所述第一判断模块判断系统的当前进程是设定进程时,遍历所述系统的线程,获取所述服务操作的客户端的当前状态为挂起状态、并且所述挂起状态满足设定条件的线程的线程信息,确定与所述线程信息对应的进程为所述服务操作的服务操作者;
所述设定进程包括Services.exe。
9.根据权利要求8所述的装置,其特征在于,所述第二确定模块包括:
第一获取单元,用于当所述第一判断模块判断系统的当前进程是设定进程时,获取所述系统的线程的线程信息;
第一判断单元,用于根据所述第一获取单元获取的线程信息,判断所述线程是否挂起输入输出请求包;
所述第一获取单元还用于当所述第一判断单元判断所述线程未挂起输入输出请求包时,获取所述系统的下一个线程的线程信息;
第二判断单元,用于当所述第一判断单元判断所述线程挂起输入输出请求包时,判断所述输入输出请求包是否挂起在设定设备驱动程序中;
所述第一获取单元还用于当所述第二判断单元判断所述输入输出请求包未挂起在设定设备驱动程序中时,获取所述系统的下一个线程的线程信息;
第三判断单元,用于当所述第二判断单元判断所述输入输出请求包挂起在设定设备驱动程序中时,判断所述设定设备驱动程序中的挂起请求码是否为设定挂起请求码;
所述第一获取单元还用于当所述第三判断单元判断所述设定设备驱动程序中的挂起请求码不是设定挂起请求码时,获取所述系统的下一个线程的线程信息;
第四判断单元,用于当所述第三判断单元判断所述设定设备驱动程序中的挂起请求码是设定挂起请求码时,判断所述挂起请求码的控制码是否为设定控制码;
所述第一获取单元还用于当所述第四判断单元判断所述挂起请求码的控制码不是设定控制码时,获取所述系统的下一个线程的线程信息;
第一确定单元,用于当所述第四判断单元判断所述挂起请求码的控制码是设定控制码时,确定与所述第一获取单元获取的线程信息对应的进程为所述服务操作的服务操作者。
10.根据权利要求8所述的装置,其特征在于,所述第二确定模块包括:
第二获取单元,用于当所述第一判断模块判断系统的当前进程是设定进程时,获取所述系统的当前线程的线程信息中第二固定偏移处的局部进程调用服务器端标识;
第三获取单元,用于获取所述系统的线程的线程信息;
第五判断单元,用于判断所述第三获取单元获取的线程信息中第一固定偏移处的局部进程调用客户端标识是否有效;
第三获取单元还用于当所述第五判断单元判断所述第三获取单元获取的线程信息中第一固定偏移处的局部进程调用客户端标识无效时,获取所述系统的下一个线程的线程信息;
第六判断单元,用于当所述第五判断单元判断所述第三获取单元获取的线程信息中第一固定偏移处的局部进程调用客户端标识有效时,判断所述局部进程调用客户端标识与所述第二获取单元获取的局部进程调用服务器端标识是否相同;
所述第三获取单元还用于当所述第六判断单元判断所述局部进程调用客户端标识与所述第二获取单元获取的局部进程调用服务器端标识不同时,获取所述系统的下一个线程的线程信息;
第二确定单元,用于当所述第六判断单元判断所述局部进程调用客户端标识与所述第二获取单元获取的局部进程调用服务器端标识相同时,确定与所述第三获取单元获取的线程信息对应的进程为所述服务操作的服务操作者。
11.根据权利要求8所述的装置,其特征在于,所述第二确定模块包括:
第四获取单元,用于当所述第一判断模块判断系统的当前进程是设定进程时,获取所述系统的线程的线程信息;
第七判断单元,用于判断所述第四获取单元获取的线程信息中固定偏移处的高级局部进程调用数据是否有效;
所述第四获取单元还用于当所述第七判断单元判断所述第四获取单元获取的线程信息中固定偏移处的高级局部进程调用数据无效时,获取所述系统的下一个线程的线程信息;
第八判断单元,用于当所述第七判断单元判断所述第四获取单元获取的线程信息中固定偏移处的高级局部进程调用数据有效时,判断所述高级局部进程调用数据对应的内存块固定偏移处的数据与所述系统的当前线程的线程信息是否相同;
所述第四获取单元还用于当所述第八判断单元判断所述高级局部进程调用数据对应的内存块固定偏移处的数据与所述系统的当前线程的线程信息不同时,获取所述系统的下一个线程的线程信息;
第三确定单元,用于当所述第八判断单元判断所述高级局部进程调用数据对应的内存块固定偏移处的数据与所述系统的当前线程的线程信息相同时,确定与所述第四获取单元获取的线程信息对应的进程为所述服务操作的服务操作者。
12.根据权利要求9所述的装置,其特征在于,所述设定设备驱动程序包括NPFS.SYS,所述设定挂起请求码包括IRP_MJ_FILE_SYSTEM_CONTROL,所述设定控制码包括0x11C017。
13.根据权利要求10所述的装置,其特征在于,所述第一固定偏移处包括0x220或者0x228,所述第二固定偏移处包括0x234或者0x23C。
14.根据权利要求11所述的装置,其特征在于,所述线程信息中固定偏移处包括0x270或者0x290,所述内存块固定偏移处包括0x70或者0x6c。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100865176A CN101571901B (zh) | 2009-06-04 | 2009-06-04 | 定位服务操作者的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100865176A CN101571901B (zh) | 2009-06-04 | 2009-06-04 | 定位服务操作者的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101571901A CN101571901A (zh) | 2009-11-04 |
CN101571901B true CN101571901B (zh) | 2011-03-16 |
Family
ID=41231257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100865176A Expired - Fee Related CN101571901B (zh) | 2009-06-04 | 2009-06-04 | 定位服务操作者的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101571901B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106022109A (zh) * | 2016-05-18 | 2016-10-12 | 北京金山安全软件有限公司 | 一种防止线程暂停的方法、装置及电子设备 |
CN106709330B (zh) * | 2016-07-29 | 2020-04-21 | 腾讯科技(深圳)有限公司 | 记录文件执行行为的方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101101621A (zh) * | 2007-07-10 | 2008-01-09 | 北京鼎信高科信息技术有限公司 | 一种通过Windows系统服务监控Windows系统剪贴板的方法 |
CN101183418A (zh) * | 2007-12-25 | 2008-05-21 | 北京大学 | 一种Windows隐蔽性恶意软件检测方法 |
-
2009
- 2009-06-04 CN CN2009100865176A patent/CN101571901B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101101621A (zh) * | 2007-07-10 | 2008-01-09 | 北京鼎信高科信息技术有限公司 | 一种通过Windows系统服务监控Windows系统剪贴板的方法 |
CN101183418A (zh) * | 2007-12-25 | 2008-05-21 | 北京大学 | 一种Windows隐蔽性恶意软件检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101571901A (zh) | 2009-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9015310B2 (en) | Communication system using server agents according to simple network management protocol | |
CN108234171B (zh) | 一种数据处理方法、系统以及装置 | |
US10127092B1 (en) | Method and apparatus for monitoring a message transmission frequency in a robot operating system | |
CN103414916A (zh) | 一种故障诊断系统及方法 | |
CN107819640A (zh) | 用于机器人操作系统的监控方法和装置 | |
JP2020064590A (ja) | 情報処理装置、情報処理方法及びプログラム | |
CN111901204B (zh) | 一种云网络的巡检方法、装置及系统 | |
JP2012069088A (ja) | 医用情報処理装置及びソフトウェア配信システム | |
CN101571901B (zh) | 定位服务操作者的方法和装置 | |
JP2022173394A (ja) | 情報処理装置、情報処理方法及びプログラム | |
US8677323B2 (en) | Recording medium storing monitoring program, monitoring method, and monitoring system | |
CN106411643B (zh) | Bmc检测方法以及装置 | |
WO2015076493A1 (ko) | 사전 장애 탐지 시스템 및 방법 | |
CN107124425A (zh) | 监测设备安全的方法及计算设备 | |
CN112751874A (zh) | 一种设备策略管控方法、装置、电子设备及存储介质 | |
CN111324364A (zh) | 一种设备管理的方法、装置、设备及存储介质 | |
CN104378246B (zh) | 一种网络设备故障定位系统、方法及装置 | |
CN104753993B (zh) | 一种监控服务器的方法及监控设备 | |
CN107766232B (zh) | 一种插件管理方法及装置 | |
KR102302916B1 (ko) | IoT 센서정보 관제 시스템 및 방법 | |
WO2022131404A1 (ko) | 온디바이스 기반 데이터 분석 시스템 및 방법 | |
CN115168137A (zh) | 针对定时任务的监控方法及系统、计算机设备及存储介质 | |
JP2019106568A (ja) | 遠隔監視装置、監視センタサーバおよび監視対象設備の初期設定方法 | |
JP7167714B2 (ja) | 異常判定装置、異常判定方法、及び異常判定プログラム | |
WO2015005578A1 (ko) | 통신 단말기의 해킹 방지 방법 및 해킹 방지 방법이 실행되는 통신 단말기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180504 Address after: 100097 Jin Yuan, A 5E, business center, 2 East Road, Haidian District, Beijing. Patentee after: Weidian Baihui (Beijing) Information Security Technology Co.,Ltd. Address before: 100097 room 1608, office building, B District, Jin Yuan times shopping centre, 2 East Road, Haidian District, Beijing. Patentee before: Beijing Dongfang Micropoint Information Technology Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110316 |