CN109977669B - 病毒识别方法、装置和计算机设备 - Google Patents

病毒识别方法、装置和计算机设备 Download PDF

Info

Publication number
CN109977669B
CN109977669B CN201711465574.6A CN201711465574A CN109977669B CN 109977669 B CN109977669 B CN 109977669B CN 201711465574 A CN201711465574 A CN 201711465574A CN 109977669 B CN109977669 B CN 109977669B
Authority
CN
China
Prior art keywords
operating system
drive file
file path
drive
registry
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
Application number
CN201711465574.6A
Other languages
English (en)
Other versions
CN109977669A (zh
Inventor
杨作会
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201711465574.6A priority Critical patent/CN109977669B/zh
Publication of CN109977669A publication Critical patent/CN109977669A/zh
Application granted granted Critical
Publication of CN109977669B publication Critical patent/CN109977669B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/564Static detection by virus signature recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供一种病毒识别方法、装置和计算机设备,上述病毒识别方法,应用于装载有第一操作系统和第二操作系统的设备中,包括:获取第一操作指令,根据第一操作指令进入第一操作系统;在第一操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径,计算第一哈希值;获取第二操作指令,根据第二操作指令,退出第一操作系统,进入第二操作系统;在第二操作系统中,读取注册表中保存的服务的驱动文件路径,计算第二哈希值;获取驱动文件路径相同但哈希值不同的驱动文件的数字签名;如果驱动文件的数字签名不在预存的白名单中,则识别驱动文件为病毒。本申请可以实现稳定可靠地识别出隐藏在第二操作系统中的底层木马病毒,提高了用户体验。

Description

病毒识别方法、装置和计算机设备
技术领域
本申请涉及信息安全技术领域,尤其涉及一种病毒识别方法、装置和计算机设备。
背景技术
Rootkit是一种特殊的恶意软件,属于底层木马病毒的一种,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,一般以驱动服务的形式存在用户的电脑上。
Rootkit本身的一大特性就是隐藏自身的文件,避免被发现。现有相关技术中,在Windows操作系统上,利用底层的驱动技术,与Rootkit进行对抗,试图读取到真实的驱动服务列表。
但是,现有技术因为与Rootkit处于同一纬度,因此在对抗的问题上永无止境,而且对抗过程不稳定,容易导致操作系统蓝屏。
发明内容
为克服相关技术中存在的问题,本申请提供一种病毒识别方法、装置和计算机设备。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请实施例提供一种病毒识别方法,应用于装载有第一操作系统和第二操作系统的设备中,包括:获取第一操作指令,根据所述第一操作指令进入所述第一操作系统;在所述第一操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径,计算所述驱动文件路径的第一哈希值;获取第二操作指令,根据所述第二操作指令,退出所述第一操作系统,进入所述第二操作系统;在所述第二操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径;计算所述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值;获取所述驱动文件路径相同但哈希值不同的驱动文件的数字签名;如果所述驱动文件的数字签名不在预存的白名单中,则识别所述驱动文件为病毒。
上述病毒识别方法中,首先获取第一操作指令,根据上述第一操作指令,进入第一操作系统,在第一操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径,计算上述驱动文件路径的第一哈希值。然后获取第二操作指令,根据上述第二操作指令,退出第一操作系统,进入第二操作系统,在上述第二操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径,计算上述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值,最后获取驱动文件路径相同但哈希值不同的驱动文件的数字签名,如果上述驱动文件的数字签名不在预存的白名单中,则识别上述驱动文件为病毒,从而可以实现稳定可靠地识别出隐藏在第二操作系统中的底层木马病毒,无需在第二操作系统进行底层的驱动对抗,提高了用户体验。
第二方面,本申请实施例提供一种病毒识别装置,应用于装载有第一操作系统和第二操作系统的设备中,所述病毒识别装置包括:获取模块,用于获取第一操作指令;执行模块,用于根据所述获取模块获取的第一操作指令进入所述第一操作系统;读取模块,用于在所述第一操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径;计算模块,用于计算所述读取模块读取的驱动文件路径的第一哈希值;所述获取模块,还用于获取第二操作指令;所述执行模块,还用于根据所述获取模块获取的第二操作指令,退出所述第一操作系统,进入所述第二操作系统;所述读取模块,还用于在所述第二操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径;所述计算模块,还用于计算所述读取模块读取的所述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值;所述获取模块,还用于获取所述驱动文件路径相同但哈希值不同的驱动文件的数字签名;识别模块,用于当所述获取模块获取的驱动文件的数字签名不在预存的白名单中时,识别所述驱动文件为病毒。
上述病毒识别装置中,获取模块首先获取第一操作指令,执行模块根据上述第一操作指令,进入第一操作系统,读取模块在第一操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径,计算模块计算上述驱动文件路径的第一哈希值。然后获取模块获取第二操作指令,执行模块根据上述第二操作指令,退出第一操作系统,进入第二操作系统,在上述第二操作系统中,读取模块读取第二操作系统的注册表中保存的服务的驱动文件路径,计算模块计算上述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值,最后获取模块获取驱动文件路径相同但哈希值不同的驱动文件的数字签名,如果上述驱动文件的数字签名不在预存的白名单中,则识别模块识别上述驱动文件为病毒,从而可以实现稳定可靠地识别出隐藏在第二操作系统中的底层木马病毒,无需在第二操作系统进行底层的驱动对抗,提高了用户体验。
第三方面,本申请实施例提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述存储介质存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述的方法。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请病毒识别方法一个实施例的流程图;
图2为本申请病毒识别方法另一个实施例的流程图;
图3为本申请病毒识别装置一个实施例的结构示意图;
图4为本申请计算机设备一个实施例的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
Rootkit是一种特殊的恶意软件,属于底层木马病毒的一种,Rootkit本身的一大特性就是隐藏自身的文件,避免被发现。但是Rootkit自身不会处理对于多个操作系统的兼容问题,比如第二操作系统下的Rootkit不会在第一操作系统下隐藏自身,因此根据Rootkit的这一特性,本申请实施例提出一种病毒识别方法,用于在装载有第一操作系统和第二操作系统的设备中对Rootkit这类底层木马病毒进行识别。
其中,上述第一操作系统和第二操作系统分别为不同的操作系统,举例来说,第一操作系统可以为磁盘操作系统(Disk Operating System;以下简称:DOS)操作系统,第二操作系统可以为Windows操作系统,但本实施例并不仅限于此,第一操作系统也可以为Linux操作系统,第二操作系统可以为Windows操作系统,本实施例对此不作限定,只要第一操作系统和第二操作系统分别为不同的操作系统即可,但本实施例以第一操作系统为DOS操作系统,第二操作系统为Windows操作系统为例进行说明。
图1为本申请病毒识别方法一个实施例的流程图,上述病毒识别方法应用于装载有第一操作系统和第二操作系统的设备中,如图1所示,上述病毒识别方法可以包括:
步骤101,获取第一操作指令,根据上述第一操作指令,进入第一操作系统。
其中,上述第一操作指令可以为重启后优先进入第一操作系统,本实施例对上述第一操作指令的具体内容不作限定,只要可以根据第一操作指令进入第一操作系统即可。
在具体实现时,可以首先在用户磁盘上释放一个DOS操作系统,并且设置第一操作指令,上述第一操作指令可以为重启后优先进入DOS操作系统,然后重启系统,获取第一操作指令,根据第一操作指令进入DOS操作系统。
步骤102,在上述第一操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径。
本实施例中,第二操作系统的注册表中保存的服务即为Windows操作系统的注册表中保存的服务,是Windows操作系统中的代码模块,工作在Windows操作系统的底层,可以在注册表的指定位置上枚举到,并且在注册表中有路径的记录。
具体地,在第一操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径可以为:在第一操作系统中,读取磁盘中保存的第二操作系统的注册表,然后对上述注册表进行解析,读取解析后的注册表中保存的服务的驱动文件路径。
在具体实现时,可以在DOS操作系统中,读取磁盘中保存的Windows操作系统的注册表,解析上述注册表,然后读取解析后的注册表中保存的服务的驱动文件路径。
步骤103,计算上述驱动文件路径的第一哈希值。
其中,计算上述驱动文件路径的第一哈希值时,可以采用消息摘要算法5(MessageDigest Algorithm 5;以下简称:MD5),也可以采用其他的哈希算法,本实施例对计算第一哈希值时所采用的哈希算法不作限定。
步骤104,获取第二操作指令,根据上述第二操作指令,退出第一操作系统,进入第二操作系统。
其中,上述第二操作指令可以为退出第一操作系统,重启进入第二操作系统,同样,本实施例对上述第二操作指令的具体内容不作限定,只要可以根据上述第二操作指令退出第一操作系统,进入第二操作系统即可。
仍以第一操作系统为DOS操作系统,第二操作系统为Windows操作系统为例,步骤103之后,可以获取第二操作指令,根据上述第二操作指令,自动退出上述DOS操作系统,重启进入Windows操作系统。
步骤105,在上述第二操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径。
具体地,在Windows操作系统中,可以通过Windows操作系统中的应用程序编程接口(Application Programming Interface;以下简称:API)来读取Windows的操作系统的注册表中保存的服务的驱动文件路径。
步骤106,计算上述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值。
具体地,在Windows操作系统中,可以通过上述API来计算上述驱动文件路径的第二哈希值。
同样,计算上述驱动文件路径的第二哈希值时,可以采用MD5,也可以采用其他的哈希算法,本实施例对计算第二哈希值时所采用的哈希算法不作限定,但计算第二哈希值所采用的哈希算法与计算第一哈希值所采用的哈希算法相同。
步骤107,获取驱动文件路径相同但哈希值不同的驱动文件的数字签名。
具体地,获取驱动文件路径相同但哈希值不同的驱动文件时,不仅对比驱动文件路径,还要对比相同驱动文件路径的哈希值。因为有时虽然驱动文件路径相同,但是底层木马病毒可能欺骗Windows操作系统,让普通的文件操作API读取到错误的内容,以此来隐藏自身,因此还需要对比相同驱动文件路径的哈希值,获取驱动文件路径相同但哈希值不同的驱动文件。
在具体实现时,在步骤103计算上述驱动文件路径的第一哈希值之后,还可以将上述驱动文件路径和上述第一哈希值保存在第一列表中,在步骤106计算上述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值之后,还可以将上述驱动文件路径和上述第二哈希值保存在第二列表中。
于是,在步骤107获取驱动文件路径相同但哈希值不同的驱动文件的数字签名可以为:在第二操作系统中,获取第一列表和第二列表中,驱动文件路径相同但哈希值不同的驱动文件路径对应的驱动文件,并计算上述驱动文件的数字签名。
其中,数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。在Windows操作系统上的可执行文件的数字签名可以证明该可执行文件由该公司签发,而且没有被篡改。
步骤108,如果上述驱动文件的数字签名不在预存的白名单中,则识别上述驱动文件为病毒。
进一步地,步骤107之后,还可以包括:
步骤109,如果上述驱动文件的数字签名在预存的白名单中,则识别上述驱动文件不是病毒。
具体地,对于驱动文件路径相同但哈希值不同的驱动文件,对上述驱动文件计算数字签名之后,判断上述驱动文件的数字签名是否在预存的白名单中,如果在,则识别上述驱动文件不是病毒,如果上述驱动文件的数字签名不在预存的白名单中,则识别上述驱动文件为病毒。
本实施例中,上述病毒可以包括底层木马病毒,例如:Rootkit,但本实施例并不仅限于此,上述病毒也可以为与Rootkit具有相同特性的病毒,本实施例对此不作限定。
Rootkit本身的一大特性就是隐藏自身的文件,避免被发现。但是Rootkit自身不会处理对于多个操作系统的兼容问题,比如Windows操作系统下的Rootkit不会在DOS操作系统下隐藏自身,因此本实施例通过在DOS操作系统下读取磁盘上保存的Windows操作系统的注册表和驱动文件路径,以此拿到真实的驱动文件路径和对应的第一哈希值,然后在Windows操作系统中通过API读取驱动文件路径和第二哈希值,对比第一哈希值和第二哈希值,在DOS操作系统下能读取到的驱动文件,而在Windows操作系统下读取不到,极大概率为Rootkit。
上述病毒识别方法中,首先获取第一操作指令,根据上述第一操作指令进入第一操作系统,在第一操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径,计算上述驱动文件路径的第一哈希值。然后获取第二操作指令,根据上述第二操作指令,退出第一操作系统,进入第二操作系统,在上述第二操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径,计算上述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值,最后获取驱动文件路径相同但哈希值不同的驱动文件,如果上述驱动文件的数字签名不在预存的白名单中,则识别上述驱动文件为病毒,从而可以实现稳定可靠地识别出隐藏在第二操作系统中的底层木马病毒,无需在第二操作系统进行底层的驱动对抗,提高了用户体验。
图2为本申请病毒识别方法另一个实施例的流程图,如图2所示,本申请图1所示实施例中,步骤102之后,还可以包括:
步骤201,在第一操作系统中,将读取的驱动文件路径对应的驱动文件保存在磁盘中。
其中,步骤201可以与步骤103先后执行,或并行执行;图2中,以步骤201在步骤103之后执行为例示出。
这时,步骤107可以包括:
步骤202,获取驱动文件路径相同但哈希值不同的驱动文件路径。
步骤203,根据获取的驱动文件路径和获取的驱动文件路径对应的驱动文件在第一操作系统中保存的文件名,在第二操作系统中,获取在第一操作系统中保存的驱动文件,计算上述驱动文件的数字签名。
也就是说,在第二操作系统中,获取驱动文件路径相同但哈希值不同的驱动文件时,不能直接获取第二操作系统中原有位置的驱动文件,因为这个驱动文件可能使用普通的数字签名校验API已经无法读取了,所以需要获取在DOS操作系统中保存的驱动文件。获取在DOS操作系统中保存的驱动文件时,可以在Windows操作系统中,根据驱动文件路径和驱动文件路径对应的驱动文件在DOS操作系统中保存的文件名获取。
上述病毒识别方法可以实现稳定可靠地识别出隐藏在第二操作系统中的底层木马病毒,无需在第二操作系统进行底层的驱动对抗,提高了用户体验。
图3为本申请病毒识别装置一个实施例的结构示意图,本申请实施例中的病毒识别装置应用于装载有第一操作系统和第二操作系统的设备中,可以实现本申请实施例提供的病毒识别方法。
其中,上述第一操作系统和第二操作系统分别为不同的操作系统,举例来说,第一操作系统可以为DOS操作系统,第二操作系统可以为Windows操作系统,但本实施例并不仅限于此,第一操作系统也可以为Linux操作系统,第二操作系统可以为Windows操作系统,本实施例对此不作限定,只要第一操作系统和第二操作系统分别为不同的操作系统即可,但本实施例以第一操作系统为DOS操作系统,第二操作系统为Windows操作系统为例进行说明。
如图3所示,上述病毒识别装置可以包括:获取模块31、执行模块32、读取模块33、计算模块34和识别模块35。
获取模块31,用于获取第一操作指令;
执行模块32,用于根据获取模块31获取的第一操作指令进入上述第一操作系统;
其中,上述第一操作指令可以为重启后优先进入第一操作系统,本实施例对上述第一操作指令的具体内容不作限定,只要可以根据第一操作指令进入第一操作系统即可。
在具体实现时,可以首先在用户磁盘上释放一个DOS操作系统,并且设置第一操作指令,上述第一操作指令可以为重启后优先进入DOS操作系统,然后重启系统,获取模块31获取第一操作指令,执行模块32根据第一操作指令进入DOS操作系统。
读取模块33,用于在第一操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径;
计算模块34,用于计算读取模块33读取的驱动文件路径的第一哈希值;
本实施例中,第二操作系统的注册表中保存的服务即为Windows操作系统的注册表中保存的服务,是Windows操作系统中的代码模块,工作在Windows操作系统的底层,可以在注册表的指定位置上枚举到,并且在注册表中有路径的记录。
本实施例中,读取模块33,具体用于在第一操作系统中,读取磁盘中保存的第二操作系统的注册表,对上述注册表进行解析,读取解析后的注册表中保存的服务的驱动文件路径。
在具体实现时,读取模块33可以在DOS操作系统中,读取磁盘中保存的Windows操作系统的注册表,解析上述注册表,然后读取解析后的注册表中保存的服务的驱动文件路径,接下来计算模块34计算上述驱动文件路径的第一哈希值。
其中,计算模块34计算上述驱动文件路径的第一哈希值时,可以采用MD5,也可以采用其他的哈希算法,本实施例对计算模块34计算第一哈希值时所采用的哈希算法不作限定。
获取模块31,还用于获取第二操作指令;
执行模块32,还用于根据获取模块31获取的第二操作指令,退出第一操作系统,进入上述第二操作系统;
其中,上述第二操作指令可以为退出第一操作系统,重启进入第二操作系统,同样,本实施例对上述第二操作指令的具体内容不作限定,只要可以根据上述第二操作指令退出第一操作系统,进入第二操作系统即可。
仍以第一操作系统为DOS操作系统,第二操作系统为Windows操作系统为例,在保存模块35将上述驱动文件路径和上述第一哈希值保存在第一列表中之后,获取模块31可以获取第二操作指令,执行模块32根据上述第二操作指令,自动退出上述DOS操作系统,重启进入Windows操作系统。
读取模块33,还用于在第二操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径;
计算模块34,还用于计算读取模块33读取的上述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值;
具体地,在Windows操作系统中,读取模块33可以通过Windows操作系统中的API来读取Windows的操作系统的注册表中保存的服务的驱动文件路径,然后计算模块34通过上述API来计算上述驱动文件路径的第二哈希值。
同样,计算模块34计算上述驱动文件路径的第二哈希值时,可以采用MD5,也可以采用其他的哈希算法,本实施例对计算模块34计算第二哈希值时所采用的哈希算法不作限定,但计算模块34计算第二哈希值所采用的哈希算法与计算第一哈希值所采用的哈希算法相同。
获取模块31,还用于获取驱动文件路径相同但哈希值不同的驱动文件的数字签名;具体地,获取模块31获取驱动文件路径相同但哈希值不同的驱动文件时,不仅对比驱动文件路径,还要对比相同驱动文件路径的哈希值。因为有时虽然驱动文件路径相同,但是底层木马病毒可能欺骗Windows操作系统,让普通的文件操作API读取到错误的内容,以此来隐藏自身,因此获取模块31还需要对比相同驱动文件路径的哈希值,获取驱动文件路径相同但哈希值不同的驱动文件。
在具体实现时,在计算模块34计算上述驱动文件路径的第一哈希值之后,还可以将上述驱动文件路径和上述第一哈希值保存在第一列表中,在计算模块34计算上述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值之后,还可以将上述驱动文件路径和上述第二哈希值保存在第二列表中。
于是,获取模块31可以在第二操作系统中,获取第一列表和第二列表中,驱动文件路径相同但哈希值不同的驱动文件路径对应的驱动文件,并计算上述驱动文件的数字签名。
其中,数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。在Windows操作系统上的可执行文件的数字签名可以证明该可执行文件由该公司签发,而且没有被篡改。
识别模块35,用于当获取模块31获取的驱动文件的数字签名不在预存的白名单中时,识别上述驱动文件为病毒。
进一步地,识别模块35,还用于当获取模块31获取的驱动文件的数字签名在预存的白名单中时,识别上述驱动文件不是病毒。
具体地,对于驱动文件路径相同但哈希值不同的驱动文件,对上述驱动文件计算数字签名之后,判断上述驱动文件的数字签名是否在预存的白名单中,如果在,则识别模块35识别上述驱动文件不是病毒,如果上述驱动文件的数字签名不在预存的白名单中,则识别模块35识别上述驱动文件为病毒。
本实施例中,上述病毒可以包括底层木马病毒,例如:Rootkit,但本实施例并不仅限于此,上述病毒也可以为与Rootkit具有相同特性的病毒,本实施例对此不作限定。
Rootkit本身的一大特性就是隐藏自身的文件,避免被发现。但是Rootkit自身不会处理对于多个操作系统的兼容问题,比如Windows操作系统下的Rootkit不会在DOS操作系统下隐藏自身,因此本实施例中,读取模块33通过在DOS操作系统下读取磁盘上保存的Windows操作系统的注册表和驱动文件路径,以此拿到真实的驱动文件路径和对应的第一哈希值,然后在Windows操作系统中,读取模块33通过API读取驱动文件路径和第二哈希值,对比第一哈希值和第二哈希值,在DOS操作系统下能读取到的驱动文件,而在Windows操作系统下读取不到,极大概率为Rootkit。
进一步地,上述病毒识别装置还可以包括:
保存模块36,还用于在读取模块33在第一操作系统中,读取第二操作系统的注册表中保存的服务的驱动文件路径之后,在第一操作系统中,将读取模块33读取的驱动文件路径对应的驱动文件保存在磁盘中。
这时,获取模块31,具体用于获取驱动文件路径相同但哈希值不同的驱动文件路径;根据获取的驱动文件路径和获取的驱动文件路径对应的驱动文件在第一操作系统中保存的文件名,在第二操作系统中,获取在上述第一操作系统中保存的驱动文件。
也就是说,在第二操作系统中,获取模块31获取驱动文件路径相同但哈希值不同的驱动文件路径对应的驱动文件时,不能直接获取第二操作系统中原有位置的驱动文件,因为这个驱动文件可能使用普通的数字签名校验API已经无法读取了,所以获取模块31需要获取在DOS操作系统中保存的驱动文件。获取在DOS操作系统中保存的驱动文件时,获取模块31可以在Windows操作系统中,根据驱动文件路径和驱动文件路径对应的驱动文件在DOS操作系统中保存的文件名获取。
上述病毒识别装置中,首先获取模块31获取第一操作指令,执行模块32根据上述第一操作指令,进入第一操作系统,在第一操作系统中,读取模块33读取第二操作系统的注册表中保存的服务的驱动文件路径,计算模块34计算上述驱动文件路径的第一哈希值。然后获取模块31获取第二操作指令,执行模块32根据上述第二操作指令,退出第一操作系统,进入第二操作系统,在上述第二操作系统中,读取模块33读取第二操作系统的注册表中保存的服务的驱动文件路径,计算模块34计算上述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值,最后获取模块31获取驱动文件路径相同但哈希值不同的驱动文件,如果上述驱动文件的数字签名不在预存的白名单中,则识别模块35识别上述驱动文件为病毒,从而可以实现稳定可靠地识别出隐藏在第二操作系统中的底层木马病毒,无需在第二操作系统进行底层的驱动对抗,提高了用户体验。
图4为本申请计算机设备一个实施例的结构示意图,本实施例中的计算机设备可以包括存储器、处理器及存储在上述存储器上并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时,可以实现本申请实施例提供的病毒识别方法。
其中,上述计算机设备可以为终端设备,也可以为服务器,本实施例对上述计算机设备的形态不作限定,本实施例中,上述终端设备可以为个人计算机(Personal Computer;以下简称:PC)或者笔记本电脑等。
图4示出了适于用来实现本申请实施方式的示例性计算机设备12的框图。图4显示的计算机设备12仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图4所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图4所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图4中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本申请实施例提供的病毒识别方法。
本申请实施例还提供一种计算机可读存储介质,所述存储介质存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现本申请实施例提供的病毒识别方法。
上述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ReadOnly Memory;以下简称:ROM)、可擦式可编程只读存储器(Erasable Programmable ReadOnly Memory;以下简称:EPROM)或闪存、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network;以下简称:LAN)或广域网(Wide Area Network;以下简称:WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(Programmable Gate Array;以下简称:PGA),现场可编程门阵列(Field ProgrammableGate Array;以下简称:FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (12)

1.一种病毒识别方法,应用于装载有第一操作系统和第二操作系统的设备中,其中,所述第一操作系统和所述第二操作系统分别为不同的操作系统,其特征在于,包括:
获取第一操作指令,根据所述第一操作指令进入所述第一操作系统;
在所述第一操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径,计算所述驱动文件路径的第一哈希值;
获取第二操作指令,根据所述第二操作指令,退出所述第一操作系统,进入所述第二操作系统;
在所述第二操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径;
计算所述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值;
获取所述驱动文件路径相同但哈希值不同的驱动文件的数字签名;
如果所述驱动文件的数字签名不在预存的白名单中,则识别所述驱动文件为病毒。
2.根据权利要求1所述的方法,其特征在于,所述获取所述驱动文件路径相同但哈希值不同的驱动文件的数字签名之后,还包括:
如果所述驱动文件的数字签名在预存的白名单中,则识别所述驱动文件不是底层木马病毒。
3.根据权利要求1或2所述的方法,其特征在于,所述在所述第一操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径之后,还包括:
在所述第一操作系统中,将读取的驱动文件路径对应的驱动文件保存在磁盘中。
4.根据权利要求3所述的方法,其特征在于,所述获取所述驱动文件路径相同但哈希值不同的驱动文件的数字签名包括:
获取驱动文件路径相同但哈希值不同的驱动文件路径;
根据获取的驱动文件路径和获取的驱动文件路径对应的驱动文件在所述第一操作系统中保存的文件名,在所述第二操作系统中,获取在所述第一操作系统中保存的驱动文件;
计算所述驱动文件的数字签名。
5.根据权利要求1所述的方法,其特征在于,所述在所述第一操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径包括:
在所述第一操作系统中,读取磁盘中保存的第二操作系统的注册表;
对所述注册表进行解析,读取解析后的注册表中保存的服务的驱动文件路径。
6.一种病毒识别装置,应用于装载有第一操作系统和第二操作系统的设备中,其中,所述第一操作系统和所述第二操作系统分别为不同的操作系统,其特征在于,所述病毒识别装置包括:
获取模块,用于获取第一操作指令;
执行模块,用于根据所述获取模块获取的第一操作指令进入所述第一操作系统;
读取模块,用于在所述第一操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径;
计算模块,用于计算所述读取模块读取的驱动文件路径的第一哈希值;
所述获取模块,还用于获取第二操作指令;
所述执行模块,还用于根据所述获取模块获取的第二操作指令,退出所述第一操作系统,进入所述第二操作系统;
所述读取模块,还用于在所述第二操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径;
所述计算模块,还用于计算所述读取模块读取的所述第二操作系统的注册表中保存的服务的驱动文件路径的第二哈希值;
所述获取模块,还用于获取所述驱动文件路径相同但哈希值不同的驱动文件的数字签名;
识别模块,用于当所述获取模块获取的驱动文件的数字签名不在预存的白名单中时,识别所述驱动文件为病毒。
7.根据权利要求6所述的装置,其特征在于,
所述识别模块,还用于当所述获取模块获取的驱动文件的数字签名在预存的白名单中时,识别所述驱动文件不是病毒。
8.根据权利要求6或7所述的装置,其特征在于,还包括:
保存模块,用于在所述读取模块在所述第一操作系统中,读取所述第二操作系统的注册表中保存的服务的驱动文件路径之后,在所述第一操作系统中,将所述读取模块读取的驱动文件路径对应的驱动文件保存在磁盘中。
9.根据权利要求8所述的装置,其特征在于,
所述获取模块,具体用于获取驱动文件路径相同但哈希值不同的驱动文件路径;根据获取的驱动文件路径和获取的驱动文件路径对应的驱动文件在所述第一操作系统中保存的文件名,在所述第二操作系统中,获取在所述第一操作系统中保存的驱动文件。
10.根据权利要求6所述的装置,其特征在于,
所述读取模块,具体用于在所述第一操作系统中,读取磁盘中保存的第二操作系统的注册表,对所述注册表进行解析,读取解析后的注册表中保存的服务的驱动文件路径。
11.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-5中任一所述的方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1-5中任一所述的方法。
CN201711465574.6A 2017-12-28 2017-12-28 病毒识别方法、装置和计算机设备 Active CN109977669B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711465574.6A CN109977669B (zh) 2017-12-28 2017-12-28 病毒识别方法、装置和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711465574.6A CN109977669B (zh) 2017-12-28 2017-12-28 病毒识别方法、装置和计算机设备

Publications (2)

Publication Number Publication Date
CN109977669A CN109977669A (zh) 2019-07-05
CN109977669B true CN109977669B (zh) 2022-05-20

Family

ID=67075276

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711465574.6A Active CN109977669B (zh) 2017-12-28 2017-12-28 病毒识别方法、装置和计算机设备

Country Status (1)

Country Link
CN (1) CN109977669B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112528287B (zh) * 2020-12-29 2022-03-11 中国南方电网有限责任公司 一种多终端参与的计算机病毒查杀方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101042719A (zh) * 2006-03-21 2007-09-26 联想(北京)有限公司 一种查杀rootkit的系统及方法
WO2007123492A1 (en) * 2006-04-25 2007-11-01 Khee Seng Chua Method of safeguarding against malicious software (malware)
CN102855274A (zh) * 2012-07-17 2013-01-02 北京奇虎科技有限公司 一种可疑进程检测的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665712B2 (en) * 2010-02-22 2017-05-30 F-Secure Oyj Malware removal

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101042719A (zh) * 2006-03-21 2007-09-26 联想(北京)有限公司 一种查杀rootkit的系统及方法
WO2007123492A1 (en) * 2006-04-25 2007-11-01 Khee Seng Chua Method of safeguarding against malicious software (malware)
CN102855274A (zh) * 2012-07-17 2013-01-02 北京奇虎科技有限公司 一种可疑进程检测的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Rootkit与Anti-Rootkit软件的设计与实现;恽昌;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20140515;全文 *

Also Published As

Publication number Publication date
CN109977669A (zh) 2019-07-05

Similar Documents

Publication Publication Date Title
US8850517B2 (en) Runtime risk detection based on user, application, and system action sequence correlation
WO2020034800A1 (zh) 机器学习模型的处理方法、装置、介质及电子设备
US9977897B2 (en) System and method for detecting stack pivot programming exploit
CN109960932B (zh) 文件检测方法、装置和终端设备
JP4732484B2 (ja) 仮想環境を利用した非実行ファイル内のエクスプロイトコード分析方法及び装置
US20190138716A1 (en) Identifying Internet of Things Network Anomalies Using Group Attestation
US20130138934A1 (en) Loading configuration information
CN113961919B (zh) 恶意软件检测方法和装置
US10255431B2 (en) System and method of detecting unwanted software
US8996866B2 (en) Unobtrusive assurance of authentic user intent
US9342687B2 (en) Detecting synthetic keystrokes
TWI656453B (zh) 檢測系統及檢測方法
CN109522683B (zh) 软件溯源方法、系统、计算机设备及存储介质
CN109977669B (zh) 病毒识别方法、装置和计算机设备
US20160314045A1 (en) Managing a Computing System Crash
US9003172B2 (en) Intelligently controlling loading of legacy option ROMs in a computing system
JP6018344B2 (ja) 動的読み込みコード解析装置、動的読み込みコード解析方法及び動的読み込みコード解析プログラム
JP7353346B2 (ja) ソフトウェアへの悪意あるプロセスの注入を防止するためのシステムおよび方法
US9959411B2 (en) Detecting security vulnerabilities on computing devices
US20140074870A1 (en) Combining Problem and Solution Artifacts
US9104558B2 (en) Preventing out-of-space errors for legacy option ROM in a computing system
US8756409B2 (en) System, method and computer program product for retrieving data at boot time
US9223976B2 (en) Content inspection
CN113704102B (zh) 应用程序合规检测方法、装置、设备和介质
KR102587114B1 (ko) 화이트 리스트를 기반으로 한 원격 제어 소프트웨어 탐지 장치 및 방법

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