著录项信息
专利名称 | 获取远程计算机信息的方法及装置 |
申请号 | CN200910086688.9 | 申请日期 | 2009-06-17 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2009-11-25 | 公开/公告号 | CN101587521 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/00 | IPC分类号 | G;0;6;F;2;1;/;0;0;;;H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 北京东方微点信息技术有限责任公司 | 申请人地址 | 北京市海淀区蓝靛厂东路2号金源时代商务中心A座5E
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 微点佰慧(北京)信息安全技术有限公司 | 当前权利人 | 微点佰慧(北京)信息安全技术有限公司 |
发明人 | 郭强 |
代理机构 | 北京同立钧成知识产权代理有限公司 | 代理人 | 刘芳 |
摘要
本发明实施例提供一种获取远程计算机信息的方法及装置。该方法包括:当监控到文件操作时,将文件操作分为正常文件操作或异常文件操作;若正常文件操作或异常文件操作属于系统进程,则判断该正常文件操作或异常文件操作对应的线程的起始地址是否位于系统进程中处理远程文件访问的模块内;若起始地址位于处理远程文件访问的模块内,则根据该正常文件操作或异常文件操作的函数调用栈的参数获取异常文件操作对应的远程计算机信息。本发明实施例能够获取进行远程文件操作的远程计算机的信息,实现在病毒入侵的第一时间准确报警并对病毒来源进行定位,进而可以实现对病毒的迅速拦截及对病毒来源进行管理和维护。
1.一种获取远程计算机信息的方法,其特征在于,包括:
当监控到文件操作时,将所述文件操作分为正常文件操作或异常文件操作;
若所述正常文件操作或所述异常文件操作属于系统进程,则判断所述正常文件操作或所述异常文件操作对应的线程的起始地址是否位于所述系统进程中处理远程文件访问的模块内;
若所述起始地址位于所述处理远程文件访问的模块内,则:
a、获取当前函数调用栈的栈帧及返回地址;
b、若所述当前函数调用栈的返回地址在所述处理远程文件访问的模块内,则根据所述当前函数调用栈的栈帧获取所述当前函数调用栈的至少一个调用参数;
c、若所述当前函数调用栈的至少一个调用参数为有效的数据结构指针,则判断所述当前函数调用栈的至少一个调用参数是否符合远程访问传递的数据结构类型;
d、若所述当前函数调用栈的至少一个调用参数符合所述数据结构类型,则根据所述当前函数调用栈的至少一个调用参数指向的内存块固定偏移位置获取所述异常文件操作对应的远程计算机信息。
2.根据权利要求1所述的获取远程计算机信息的方法,其特征在于,还包括:
若所述文件操作为正常文件操作,则对所述正常文件操作及对应的远程计算机信息进行记录;若所述文件操作为异常文件操作,则产生报警信号。
3.根据权利要求1或2所述的获取远程计算机信息的方法,其特征在于,所述将所述文件操作分为正常文件操作或异常文件操作包括:
根据所述文件操作的行为特征将所述文件操作分为正常文件操作或异常文件操作;或根据所述文件操作对应的文件特征码将所述文件操作分为正常文件操作或异常文件操作。
4.根据权利要求1所述的获取远程计算机信息的方法,其特征在于,所述判断所述正常文件操作或所述异常文件操作对应的线程的起始地址是否位于所述系统进程中处理远程文件访问的模块内之前还包括:
获取所述系统进程中处理远程文件访问的模块的起始地址及容量信息。
5.根据权利要求1所述的获取远程计算机信息的方法,其特征在于,所述判断所述当前函数调用栈的至少一个调用参数是否符合远程访问传递的数据结构类型包括:
判断所述当前函数调用栈的至少一个调用参数指向的内存块的两个固定偏移位置存储的数据是否相等;
若相等,则判断所述固定偏移位置存储的数据所指向的数据类型是否对应同一有效内存;
若是,则判断所述有效内存存储的第一个双字内容是否为远程过程调用协议数据包标识。
6.根据权利要求1所述的获取远程计算机信息的方法,其特征在于,
若所述当前函数调用栈的至少一个调用参数无效,或所述当前函数调用栈的至少一个调用参数不是数据结构指针,或若所述至少一个调用参数不符合所述数据结构类型,则执行:
a’、获取上一层函数调用栈的栈帧及返回地址;
b’、若所述上一层函数调用栈的返回地址在所述处理远程文件访问的模块内,则根据所述上一层函数调用栈的栈帧获取所述上一层函数调用栈的至少一个调用参数;
c’、若所述上一层函数调用栈的至少一个调用参数为有效的数据结构指针,则判断所述上一层函数调用栈的至少一个调用参数是否符合远程访问传递的数据结构类型;若所述上一层函数调用栈的至少一个调用参数无效或所述上一层函数调用栈的至少一个调用参数不是数据结构指针,则返回a’;
d’、若所述上一层函数调用栈的至少一个调用参数符合所述数据结构类型,则根据所述上一层函数调用栈的至少一个调用参数指向的内存块固定偏移位置获取所述异常文件操作对应的远程计算机信息;若所述上一层函数调用栈的至少一个调用参数不符合所述数据结构类型,则返回a’。
7.根据权利要求6所述的获取远程计算机信息的方法,其特征在于,所述判断所述上一层函数调用栈的至少一个调用参数是否符合远程访问传递的数据结构类型包括:
判断所述上一层函数调用栈的至少一个调用参数指向的内存块的两个固定偏移位置存储的数据是否相等;
若相等,则判断所述固定偏移位置存储的数据所指向的数据类型是否对应同一有效内存;
若是,则判断所述有效内存存储的第一个双字内容是否为远程过程调用协议数据包标识。
8.一种获取远程计算机信息的装置,其特征在于,包括:
解析模块,用于当监控到文件操作时,将所述文件操作分为正常文件操作或异常文件操作;
判断模块,用于若所述正常文件操作或所述异常文件操作属于系统进程,则判断所述正常文件操作或所述异常文件操作对应的线程的起始地址是否位于所述系统进程中处理远程文件访问的模块内;
第一获取子模块,用于获取当前函数调用栈或上一层函数调用栈的栈帧及返回地址;
第一判断子模块,用于判断所述当前函数调用栈或所述上一层函数调用栈的返回地址是否在所述处理远程文件访问的模块内;
第二获取子模块,用于若所述当前函数调用栈或所述上一层函数调用栈的返回地址在所述处理远程文件访问的模块内,根据所述当前函数调用栈或所述上一层函数调用栈栈帧获取所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数;
第二判断子模块,用于判断所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数是否为数据结构指针以及是否有效;
第三判断子模块,用于若所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数为数据结构指针且有效,判断所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数是否符合远程访问传递的数据结构类型;
处理子模块,用于若所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数符合远程访问传递的数据结构类型,根据所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数指向的内存块固定偏移位置获取所述操作对应的远程计算机信息;
控制子模块,用于若所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数无效,或所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数不是数据结构指针,或所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数不符合所述数据结构类型,则控制所述第一获取子模块获取所述上一层函数调用栈的栈帧及返回地址。
9.根据权利要求8所述的获取远程计算机信息的装置,其特征在于,还包括:
记录模块,用于若所述文件操作为正常文件操作,则对所述正常文件操作及对应的远程计算机信息进行记录。
10.根据权利要求8所述的获取远程计算机信息的装置,其特征在于,还包括:
报警模块,用于若所述文件操作为异常文件操作,则产生报警信号。
11.根据权利要求8或9所述的获取远程计算机信息的装置,其特征在于,所述判断模块包括:
第一判断模块,用于判断所述正常文件操作或所述异常文件操作是否属于系统进程;
第二判断模块,用于判断所述正常文件操作或所述异常文件操作对应的线程的起始地址是否位于所述系统进程中处理远程文件访问的模块内。
12.根据权利要求8或9所述的获取远程计算机信息的装置,其特征在于,还包括:
获取模块,用于获取所述系统进程中处理远程文件访问的模块的起始地址及容量信息。
获取远程计算机信息的方法及装置 \n技术领域\n[0001] 本发明实施例涉及计算机技术,特别涉及一种获取远程计算机信息的方法及装置。 \n背景技术\n[0002] 一些计算机病毒是利用操作系统漏洞、用户空口令账户或弱口令账户对远程计算机进行攻击的恶意代码,这些病毒在局域网中感染和传播迅速,难于彻底清除。 [0003] 现有的软件防火墙能够在远程计算机向本地计算机发出网络连接请求或发起攻击时报警,软件防火墙可以从远程计算机发出的请求包中获取远程计算机信息,但是软件防火墙无法区分远程计算机发起的请求是正常访问还是网络攻击,因此,容易造成误报警,甚至造成局域网中计算机无法正常通信访问。 \n[0004] 现有的杀毒软件当远程计算机在本地计算机上生成恶意程序或者修改本地计算机上的用户程序时,能够根据行为特征或者病毒特征码发现病毒并报警。该方法主要是在识别出病毒后对病毒加以清除,而无法获知传播病毒的远程计算机信息,因此很难有效遏制病毒在局域网内的传播。 \n[0005] 发明内容\n[0006] 本发明实施例提供一种获取远程计算机信息的方法及装置,用以在监控到文件操作后区分正常文件操作和异常文件操作,并根据文件操作的函数调用栈的参数来获取远程计算机信息,实现发现病毒入侵后的第一时间准确报警及定位病毒来源,进而可以实现对病毒的迅速拦截及对发起攻击的远程计算机进行维护。 \n[0007] 一方面,本发明实施例提供一种获取运程计算机信息的方法,该方法包括: [0008] 当监控到文件操作时,将所述文件操作分为正常文件操作或异常文件操作; [0009] 若所述正常文件操作或所述异常文件操作属于系统进程,则判断所述正常文件操作或所述异常文件操作对应的线程的起始地址是否位于所述系 统进程中处理远程文件访问的模块内; \n[0010] 若所述起始地址位于所述处理远程文件访问的模块内,则: \n[0011] a、获取当前函数调用栈的栈帧及返回地址; \n[0012] b、若所述当前函数调用栈的返回地址在所述处理远程文件访问的模块内,则根据所述当前函数调用栈的栈帧获取所述当前函数调用栈的至少一个调用参数; [0013] c、若所述当前函数调用栈的至少一个调用参数为有效的数据结构指针,则判断所述当前函数调用栈的至少一个调用参数是否符合远程访问传递的数据结构类型; [0014] d、若所述当前函数调用栈的至少一个调用参数符合所述数据结构类型,则根据所述当前函数调用栈的至少一个调用参数指向的内存块固定偏移位置获取所述异常文件操作对应的远程计算机信息。 \n[0015] 另一方面,本发明实施例还提供一种获取远程计算机信息的装置,该装置包括: [0016] 解析模块,用于当监控到文件操作时,将所述文件操作分为正常文件操作或异常文件操作; \n[0017] 判断模块,用于若所述正常文件操作或所述异常文件操作属于系统进程,则判断所述正常文件操作或所述异常文件操作对应的线程的起始地址是否位于所述系统进程中处理远程文件访问的模块内; \n[0018] 第一获取子模块,用于获取当前函数调用栈或上一层函数调用栈的栈帧及返回地址; \n[0019] 第一判断子模块,用于判断所述当前函数调用栈或所述上一层函数调用栈的返回地址是否在所述处理远程文件访问的模块内; \n[0020] 第二获取子模块,用于若所述当前函数调用栈减所述上一层函数调用栈的返回地址在所述处理远程文件访问的模块内,根据所述当前函数调用栈或所述上一层函数调用栈栈帧获取所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数; [0021] 第二判断子模块,用于判断所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数是否为数据结构指针以及是否有效; \n[0022] 第三判断子模块,用于若所述当前函数调用栈或所述上一层函数调用栈的至 少一个调用参数为数据结构指针且有效,判断所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数是否符合远程访问传递的数据结构类型; \n[0023] 处理子模块,用于若所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数符合远程访问传递的数据结构类型,根据所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数指向的内存块固定偏移位置获取所述操作对应的远程计算机信息; \n[0024] 控制子模块,用于若所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数无效,或所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数不是数据结构指针,或所述当前函数调用栈或所述上一层函数调用栈的至少一个调用参数不符合所述数据结构类型,则控制所述第一获取子模块获取所述上一层函数调用栈的栈帧及返回地址。 \n[0025] 本发明实施例提供的获取远程计算机信息的方法及装置,通过监控到文件操作后区分该操作是正常文件操作或异常文件操作,并根据该文件操作对应的函数调用参数获取操作源信息,实现发现病毒入侵后的第一时间准确报警及对异常远程文件访问的远程计算机定位,可以实现在病毒入侵的第一时间定位病毒来源,实现对病毒的迅速拦截及对发起攻击的远程计算机进行维护。 \n[0026] 附图说明\n[0027] 图1为本发明实施例提供的获取远程计算机信息的方法第一实施例流程图; [0028] 图2为本发明实施例提供的获取远程计算机信息的方法第二实施例流程图; [0029] 图3为本发明函数调用过程中内存中的函数调用栈示意图; \n[0030] 图4为本发明实施例提供的获取远程计算机信息的装置第一实旋例结构示意图; [0031] 图5为本发明实施例提供的获取远程计算机信息的装置第二实施例结构示意图。 [0032] 具体实施方式\n[0033] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。 [0034] 图1为本发明实施例提供的获取远程计算机信息的方法第一实施例流程图,如图\n1所示,该方法包括: \n[0035] 步骤101、当监控到文件操作时,将文件操作分为正常文件操作或异常文件操作; [0036] Windows系统通过文件系统驱动(File System Driver;以下简称:FSD)处理来自本地和远程的文件访问。远程FSD分为客户端FSD与服务器端FSD,客户端FSD首先接收来自应用程序的I/O请求,并将该请求转换为网络文件系统协议命令,再通过网络发送给服务器端FSD。服务器端FSD监听网络命令并接收网络文件系统协议命令,通过向本地FSD发送I/O请求来实现这些命令。 \n[0037] 处理本地FSD的I/O请求时,文件系统过滤驱动可以实时监控到是否有文件操作,并可以进一步区分文件操作为正常文件操作或异常文件操作,异常文件操作可能为生成新的可执行文件,修改可执行文件内容或者将可执行文件改名等操作,这些操作可以通过病毒的行为特征加以区分。 \n[0038] 步骤102、若该正常文件操作或异常文件操作属于系统进程,则判断该正常文件操作或异常文件操作对应的线程的起始地址是否位于系统进程中处理远程文件访问的模块内; \n[0039] 由于Windows系统本地处理远程文件访问的FSD主要通过srv.sys模块进行,当有远程文件访问时,系统会在系统进程中启动一个系统线程,该系统线程的起始地址位于srv.sys模块内。因此,可以据此判断某文件操作的操作源是否为远程计算机。 [0040] 首先判断该正常文件操作或异常文件操作是否属于系统进程,可以根据该文件操作当前进程的标识(Identity;以下简称:ID)进行判断。若该文件操作发生在系统进程中,则进一步判断该文件操作的当前线程的起始地址是否位于系统进程中加载的srv.sys模块内,若是,则说明该操作的操作源为远程计算机。 \n[0041] 步骤103、若当前线程起始地址位于处理远程文件访问的模块内,则根据正常文件操作或异常文件操作的函数调用栈的参数获取该正常文件操作或异常文件操作对应的远程计算机信息。 \n[0042] 若该正常文件操作或异常文件操作对应的当前线程起始地址位于系统进程中加载的srv.sys模块内,则该文件操作的操作源为远程计算机,由于远程文件操作发生时,远程FSD在处理过程中,会将远程计算机信息作为参数的一个成员在 各层处理函数中传递,因此,可以通过解析函数调用栈的参数获取远程计算机信息,该信息为远程计算机的互联网协议(Internet Protocol;以下简称:IP)地址或计算机名信息。若为异常文件操作,则在获取该异常文件操作对应的远程计算机信息后,可直接对本次异常文件操作进行报警,也可以通知局域网管理员对该异常文件操作的远程计算机进行管理或维护。这样可以避免对正常文件操作的错测报警,并且可以在发现病毒入侵的第一时间内准确定位病毒来源。 [0043] 而对于正常文件操作,获取该远程计算机信息后,如果后续发现该正常文件操作具有一定危险性或该正常文件操作会引发其他状况,则可以对该正常文件操作对应的远程计算机进行一些相应处理。 \n[0044] 本实施例通过监控到文件操作后区分正常文件操作或异常文件操作,若操作者为远程计算机,则根据文件操作对应的函数调用参数获取操作源信息,实现了对异常远程文件访问的准确报警及时该异常文件操作的远程计算机进行定位,进而可以在病毒入侵的第一时间定位病毒来源,实现对病毒的迅速拦截及对病毒的来源进迅速维护。 [0045] 图2为本发明实施例提供的获取远程计算机信息的方法第二实施例流程图,如图\n2所示,该方法包括: \n[0046] 步骤201、监控到文件操作; \n[0047] 步骤202、将该文件操作分为正常文件操作或异常文件操作; \n[0048] 步骤203、判断该正常文件操作或异常文件操作对应的当前进程是否属于系统进程;是则执行步骤204,否则程序不再执行; \n[0049] 步骤204、判断是否已经获取系统进程中处理远程文件访问的模块的起始地址及容量信息;是则执行步骤206,否则执行步骤205; \n[0050] 步骤205、获取处理远程文件访问的模块的起始地址及容量信息; [0051] 步骤206、判断该正常文件操作或异常文件操作对应的线程起始地址是否位于系统进程中处理远程文件访问的模块内;是则执行步骤208,否则程序不再执行; [0052] 步骤207、获取当前函数调用栈的栈帧及返回地址; \n[0053] 步骤208、判断该返回地址是否在处理远程文件访问的模块内;是则执行步 骤\n210,否则执行步骤209; \n[0054] 步骤209、读取堆栈,获取上一层函数调用栈的栈帧及返回地址,并执行步骤208; [0055] 步骤210、根据栈帧获取当前函数调用栈的调用参数; \n[0056] 步骤211、判断调用参数是否有效;是则执行步骤214,否则执行步骤212; [0057] 步骤212、判断调用参数是否已经到达预设个数,是则执行步骤209,否则执行步骤213; \n[0058] 步骤213、获取下一个调用参数,并执行步骤210; \n[0059] 步骤214、判断调用参数指向内存块的两个固定偏移位置所存储的数据是否相等,是则执行步骤215,否则执行步骤212; \n[0060] 步骤215、判断固定偏移位置存储的数据所指向的数据类型是否对应同一有效内存;是则执行步骤216,否则执行步骤212; \n[0061] 步骤216、判断有效内存存储的第一个双字内容是否为SMB数据包标识,是则执行步骤217,否则执行步骤212; \n[0062] 步骤217、根据调用参数指向的内存块固定偏移位置获取远程计算机信息; [0063] 步骤218、若为正常文件操作,则对正常文件操作及对应的远程计算机信息进行记录;若为异常文件操作,则产生报警信号。 \n[0064] 其中,首先需要获取处理远程文件访问的模块,即系统当前加载的srv.sys模块的起始地址和容量信息,因此可以获得srv.sys模块的结束地址,则可以据此判断监控到的正常文件操作或异常文件操作对应的线程起始地址是否在srv.sys模块内。若该操作发生在系统进程中且线程的起始地址位于srv.sys模块内,则该正常文件操作或异常文件操作的操作源为远程计算机。根据C语言的调用规则,所有参数入栈后,在函数调用前,会将调用返回地址入栈,在被调用函数入口处,会将当前栈帧入栈,参见图3,图3为本发明函数调用过程中内存中的函数调用栈示意图。可以获取当前函数调用栈的栈帧及返回地址,并进一步获取函数调用关系和每层函数调用的调用参数,可以对每层函数调用的调用参数依次进行判断,在每一层中, 通常可以选取前三个调用参数进行判断。根据远程FSD调用规则,当某一层中出现选取的调用参数为数据结构指针时,首先判断该调用参数是否有效,即该参数指向的内存是否可以读取,若该调用参数有效,则进一步判断该调用参数是否符合远程访问传递的数据结构类型,判断方法为:首先判断调用参数指向的内存块两个偏移位置所存储的数据是否相等;若相等则继续判断固定偏移位置存储的数据所指向的数据类型是否对应同一有效内存,若是则再判断该有效内存存储的第一个双字内容为远程过程调用协议(Server Message Block;以下简称:SMB)数据包标识。若是,则该调用参数即为存储有远程计算机信息的数据结构,则该调用指向内存块中的一固定偏移位置中存储有远程计算机信息。其中,内存块的偏移位置在不同操作系统上有一定差异,但对每个操作系统而言该偏移位置是确定的。该偏移位置对应的内存中存储有文件操作的远程计算机信息,该信息可能为IP地址信息、计算机名或其他相关信息,其中,计算机名保存为一个最大长度为\n16字节的字符串。在找到符合上述条件的调用参数后便可以返回远程计算机的信息。 [0065] 若为异常文件操作,则在获取该异常文件操作对应的远程计算机信息后,可直接对本次异常文件操作进行报警,也可以通知局域网管理员对该异常文件操作的远程计算机进行管理或维护。这样可以避免对正常文件操作的错误报警,并且可以在发现病毒入侵的第一时间内准确定位病毒来源。 \n[0066] 对于正常文件操作,获取该远程计算机信息后,还可以对该正常文件操作及其对应的远程计算机信息进行记录,以便后续发现该正常文件操作具有一定危险性或该正常文件操作会引发其他状况时,可以对该正常文件操作对应的远程计算机进行一些相应处理。 [0067] 本实施例通过监控到文件操作之后将该文件操作分为正常文件操作或异常文件操作,若该文件操作的操作者为远程计算机,则根据文件操作对应的函数调用参数获取远程计算机信息,实现了对异常远程文件访问的准 确报警及对该异常文件操作的远程计算机进行定位,进而可以实现对病毒的迅速拦截及对病毒来源的管理,通过对正常文件操作进行记录,实现当后续发现该正常文件操作具有一定危险性等情况时,可以对对应的操作源进行维护或管理。 \n[0068] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。 \n[0069] 图4为本发明实施例提供的获取远程计算机信息的装置第一实施例结构示意图,如图4所示,该装置包括解析模块1、判断模块2和处理模块3;其中,解析模块1用于当监控到文件操作时,将文件操作分为正常文件操作或异常文件操作;判断模块2用于若该正常文件操作或异常文件操作属于系统进程,则判断该正常文件操作或异常文件操作对应的线程起始地址是否位于系统进程中处理远程文件访问的模块内;处理模块3用于若线程起始地址位于处理远程文件访问的模块内,根据该正常文件操作或异常文件操作的函数调用栈的参数获取操作对应的远程计算机信息。 \n[0070] 由于Windows系统本地处理远程文件访问的FSD主要通过srv.sys模块进行,即系统进程中处理远程文件访问的模块为srv.sys模块。当有远程文件访问时,系统会在系统线程中启动一个系统线程,该系统线程的起始地址位于srv.sys模块内。因此,可以据此判断某文件操作的操作源是否为远程计算机。 \n[0071] 处理本地FSD的I/O请求时,文件过滤驱动可以实时监控文件操作,解析模块1可以解析出这些文件操作为正常文件操作或异常文件操作,异常文件操作可能为生成新的可执行文件,修改可执行文件内容或者将可执行文件改名等。判断模块2首先判断该文件操作是否属于系统进程,可以 根据当前进程的标识(Identity;以下简称:ID)进行判断。若该操作发生在系统进程中,则判断模块2进一步判断该操作对应的当前线程的起始地址是否位于系统进程中加载的srv.sys模块内,若是,则说明该操作的操作源为远程计算机。 [0072] 若该操作对应的当前线程起始地址位于系统进程中加载的srv.sys模块内,则该操作的操作源为远程计算机,由于远程文件操作发生时,远程FSD在处理过程中,会将远程计算机信息作为参数的一个成员在各层处理函数中传递,因此,可以通过处理模块3解析函数调用栈的参数获取远程计算机信息,该信息为远程计算机的互联网协议(Internet Protocol;以下简称:IP)地址或计算机名信息。 \n[0073] 获取到远程计算机信息后,若文件操作为异常文件操作,则可以直接对本次文件操作进行报警,并通知局域网管理员对该异常文件操作的操作源进行维护。 [0074] 本实施例实现了对文件操作源的定位,能够获取进行远程文件操作的远程计算机的信息,进而可以在病毒入侵的第一时间进行准确报警并定位远程计算机,进而可以实现对病毒的迅速拦截及对病毒来源进行清除。 \n[0075] 图5为本发明实施例提供的获取远程计算机信息的装置第二实施例结构示意图,如图5所示,该装置包括解析模块1、判断模块2和处理模块3;还可以包括获取模块4、记录模块5和报警模块6;获取模块4用于获取系统进程中处理远程文件访问的模块的起始地址及容量信息;记录模块5用于若文件操作为正常文件操作,则对正常文件操作及对应的远程计算机信息进行记录;报警模块6用于若文件操作为异常文件操作,则产生报警信号。\n进一步地,判断模块2可以包括第一判断模块21和第二判断模块22;第一判断模块21用于判断该正常文件操作或异常文件操作是否属于系统进程;第二判断模块22用于判断该正常文件操作或异常文件操作对应的线程的起始地址是否位于系统进程中处理远程文件访问的模块内;处理模块3 还可以包括第一获取子模块31、第一判断子模块32、第二获取子模块33、第二判断子模块34、第三判断子模块35和处理子模块36;其中,第一获取子模块31用于获取当前函数调用栈或上一层函数调用栈的栈帧及返回地址;第一判断子模块\n32用于判断当前函数调用栈或上一层函数调用栈的返回地址是否在处理远程文件访问的模块内;第二获取子模块33用于若当前函数调用栈或上一层函数调用栈返回地址在处理远程文件访问的模块内,根据当前函数调用栈或上一层函数调用栈栈帧获取当前函数调用栈或上一层函数调用栈的至少一个调用参数;第二判断子模块34用于判断当前函数调用栈或上一层函数调用栈的至少一个调用参数是否为数据结构指针以及是否有效;第三判断子模块35用于若当前函数调用栈或上一层函数调用栈至少一个调用参数为数据结构指针且有效,判断当前函数调用栈或上一层函数调用栈至少一个调用参数是否符合远程访问传递的数据结构类型;处理子模块36用于若当前函数调用栈或上一层函数调用栈至少一个调用参数符合远程访问传递的数据结构类型,根据当前函数调用栈或上一层函数调用栈至少一个调用参数指向的内存块偏移位置获取远程计算机信息;控制子模块37,用于若当前函数调用栈或上一层函数调用栈的至少一个调用参数无效,或当前函数调用栈或上一层函数调用栈的至少一个调用参数不是数据结构指针,或当前函数调用栈或上一层函数调用栈的至少一个调用参数不符合数据结构类型时,控制第一获取子模块31获取上一层函数调用栈的栈帧及返回地址。 \n[0076] 首先,可以通过获取模块4获得srv.sys模块的起始地址及容量信息,进而得出srv.sys模块的结束地址,当解析模块1解析出监控到的文件操作为正常文件操作或异常文件操作时,第一判断模块21判断该操作是否属于系统进程,第二判断模块22则根据srv.sys模块的起始地址和结束地址判断该文件操作对应的线程的起始地址是否在srv.sys模块内。若该文件操作发生在系统进程中且线程的起始地址位于srv.sys模块内,则该文件操作的 操作源为远程计算机。根据C语言的调用规则,所有参数入栈后,在函数调用前,会将调用返回地址入栈,在被调用函数入口处,会将当前栈帧入栈,参见图3。可以通过第一获取子模块31获取当前函数调用栈的栈帧及返回地址,通过第一判断子模块32判断返回地址是否在srv.sys模块内,若在,则第二获取子模块33根据栈帧获取当前函数调用栈的调用参数,对于每层的函数,可以选取前三个调用参数进行判断。根据远程FSD调用规则,在某层调用中,第二判断子模块34判断出该层的某个调用参数是数据结构指针且有效,则第三判断子模块35进一步判断该调用参数是否符合远程访问传递的数据结构类型,判断方法为:首先判断调用参数对应指向的内存块的两个固定偏移位置所存储的数据是否相等;\n其中,固定偏移位置对于各个操作系统有所不同,但对每个操作系统而言是确定的。若两个固定偏移位置所存储的数据相等则继续判断固定偏移位置存储的数据所指向的数据类型是否对应同一有效内存,若是则进一步判断该有效内存存储的第一个双字内容为远程过程调用协议(Server Message Block;以下简称:SMB)数据包标识。如果调用参数符合上述条件,则该调用参数即为存储有远程计算机信息的数据结构,该固定偏移位置存储有文件操作的远程计算机信息,该信息可能为IP地址信息、计算机名或其他相关信息,可以通过处理子模块36根据调用参数对应的数据结构指针指向的内存块偏移处获取操作源信息。若在当前函数调用栈的调用参数均不符合上述条件,则通过控制子模块37控制第一获取子模块31获取上一层函数调用栈的栈帧和返回地址后,再对该层的调用参数进行上述判断,这样可以依次对每层的调用参数进行判断,每层的调用参数可以选取三个,当然也可以根据需要选取多个调用参数,直到找到符合上述条件的调用参数为止。在获得远程计算机的信息后,若文件操作为正常文件操作,则可以采用记录模块5对该正常文件操作及对应的远程计算机信息进行记录,以便在后续发现该正常文件操作存在一定危险性等情况时,对该操作对应的操作源进行维护 或管理。而对于异常文件操作,则可以通过报警模块6产生报警信号,以通知用户对该异常文件操作对应的远程计算机进行维护或管理。 [0077] 本实施例实现了对文件操作源的定位,能够获取进行远程文件操作的远程计算机的信息,进而可以在病毒入侵的第一时间进行准确报警并对病毒来源进行定位,进而可以实现对病毒的迅速拦截及对病毒来源进行管理和维护。 \n[0078] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
法律信息
- 2018-05-22
专利权的转移
登记生效日: 2018.05.04
专利权人由北京东方微点信息技术有限责任公司变更为微点佰慧(北京)信息安全技术有限公司
地址由100097 北京市海淀区蓝靛厂东路2号金源时代购物中心B区写字楼1608室变更为100097 北京市海淀区蓝靛厂东路2号金源时代商务中心A座5E
- 2011-12-28
- 2010-01-20
- 2009-11-25
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-07-02
|
2006-12-29
| | |
2
| |
2008-01-30
|
2006-07-25
| | |
3
| | 暂无 |
1997-01-13
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2013-02-04 | 2013-02-04 | | |
2 | | 2012-02-07 | 2012-02-07 | | |
3 | | 2012-02-07 | 2012-02-07 | | |