CN105678160A - 用于提供对引导驱动程序的原始例程的访问的系统和方法 - Google Patents

用于提供对引导驱动程序的原始例程的访问的系统和方法 Download PDF

Info

Publication number
CN105678160A
CN105678160A CN201510502331.XA CN201510502331A CN105678160A CN 105678160 A CN105678160 A CN 105678160A CN 201510502331 A CN201510502331 A CN 201510502331A CN 105678160 A CN105678160 A CN 105678160A
Authority
CN
China
Prior art keywords
boot driver
driver
program
boot
blocker
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.)
Granted
Application number
CN201510502331.XA
Other languages
English (en)
Other versions
CN105678160B (zh
Inventor
维亚切斯拉夫·E·卢萨科夫
安德烈·L·科哲马那夫
尤里·G·帕辛
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.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
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 Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of CN105678160A publication Critical patent/CN105678160A/zh
Application granted granted Critical
Publication of CN105678160B publication Critical patent/CN105678160B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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/561Virus type analysis
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/568Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

公开了用于检测由恶意软件对引导驱动程序例程的访问的系统和方法。一个示例性方法包括:由驱动程序拦截器识别已被加载入存储器中但尚未被初始化的一个或多个引导驱动程序;由所述驱动程序拦截器安装拦截处理程序,所述拦截处理程序可操作用于拦截对所识别的一个或多个引导驱动程序的初始化例程的调用;由所述驱动程序拦截器拦截对所识别的一个或多个引导驱动程序的所述初始化例程的程序调用;由所述拦截处理程序存储由所述驱动程序在其初始化的过程中提供的关于所述引导驱动程序的信息,其中,所述信息至少包含所述引导驱动程序的一个或多个例程的入口点的地址;以及由所述驱动程序拦截器通过先前存储的所述入口点的地址提供对所述引导驱动程序的所述例程的访问。

Description

用于提供对引导驱动程序的原始例程的访问的系统和方法
技术领域
概括而言,本发明涉及计算机安全领域,更具体地说,涉及用于提供到引导驱动程序的原始例程的访问的系统和方法。
背景技术
rootkit是一种类型的恶意软件,其经常被第三方(通常是入侵者)用来获得对计算机系统的访问,以旨在隐藏运行的进程、文件或系统数据,这可以帮助入侵者在用户不知道的情况下保持对系统的访问。rootkit通常隐藏登陆、进程、线程、注册表项、文件以及记录,并且可以包括用于拦截来自终端、网络连接和键盘的数据的软件。rootkit能够感染在操作系统(OS)进行加载期间执行的引导驱动程序,并从而在任何杀毒软件之前被加载系统上。Rootkit还可以以类似过滤器的方式嵌入在操作系统进程中,使得任何常规的恶意软件检测手段无法得到与隐藏的软件或软件片段相关的信息。
检测rootkit的难点之一是由于以下事实:与病毒不同,rootkit通常在计算机开启时在操作系统已完全启动之前激活其自身,并且rootkit通常获得系统权限。另外,rootkit通常会采取措施来掩盖其存在并防止传统的杀毒检测机制识别到其存在。例如,典型的杀毒软件调用系统功能调用来识别当前正在运行的进程。rootkit会拦截该功能调用,并将其自己的返回参数提供给杀毒软件,但掩盖其自己的进程。另外,rootkit通常对检查文件是否包含已知的病毒标签的传统杀毒机制隐藏其所存储在其中的文件。
因此,存在改善对rootkit以及类似类型的恶意软件的检测的需求。
发明内容
公开了用于提供对引导驱动程序的原始例程的访问的系统、方法和计算机程序产品的示例性方面。在一个示例性实施例中,一种用于检测对引导驱动程序例程的访问的方法,所述方法包括:由驱动程序拦截器识别已被加载入存储器中但尚未被初始化的一个或多个引导驱动程序;由所述驱动程序拦截器安装拦截处理程序,所述拦截处理程序可操作用于拦截对所识别的一个或多个引导驱动程序的初始化例程的调用;由所述驱动程序拦截器拦截对所识别的一个或多个引导驱动程序的所述初始化例程的程序调用;由所述拦截处理程序存储由所述驱动程序在其初始化的过程中提供的关于所述引导驱动程序的信息,其中,所述信息至少包含所述引导驱动程序的一个或多个例程的入口点的地址;以及由所述驱动程序拦截器通过先前存储的所述入口点的地址提供对所述引导驱动程序的所述例程的访问。
在一个示例性方面,所述拦截处理程序可操作用于将在引导驱动程序的列表中包含了其指针的所述引导驱动程序的原始入口点的地址用所述拦截处理程序的入口点的地址代替,其中,将所述引导驱动程序的所述原始入口点存储在所述拦截处理程序中。
在一个示例性方面,对引导驱动程序的识别是使用已被加载入所述存储器但尚未被初始化的引导驱动程序的列表来执行的。
在一个示例性方面,所述引导驱动程序的列表由所述驱动程序拦截器在系统注册表中读取。
在一个示例性方面,所述引导驱动程序的列表由所述驱动程序拦截器使用OS引导加载程序来读取。
在一个示例性方面,关于所述引导驱动程序的所述信息被存储在针对所述驱动程序拦截器所分配的存储器区域中。
在一个示例性方面,在所述引导驱动程序的初始化期间获得的关于所述引导驱动程序的所述信息包含以下各项中的一项或多项:所述引导驱动程序的名称、所述引导驱动程序的一些或所有例程的入口点的地址、由所述OS引导加载程序在所述初始化过程中转移给所述引导驱动程序的参数、在所述注册表中到所述驱动程序的路径、所述入口点的地址、以及驱动程序对象结构。
在另一个示例性方面,一种用于检测对引导驱动程序例程的访问的计算机系统,所述系统包括:用于存储杀毒应用的存储器,所述杀毒应用配置为在一个或多个其它引导驱动程序之前将驱动程序拦截器放入所述计算机的主引导记录;硬件处理器,其耦合到所述存储器并且配置为:由所述驱动程序拦截器识别已被加载入存储器中但尚未被初始化的一个或多个引导驱动程序;由所述驱动程序拦截器安装拦截处理程序,所述拦截处理程序可操作用于拦截对所识别的一个或多个引导驱动程序的初始化例程的调用;由所述驱动程序拦截器拦截对所识别的一个或多个引导驱动程序的所述初始化例程的程序调用;由所述拦截处理程序存储由所述驱动程序在其初始化的过程中提供的关于所述引导驱动程序的信息,其中,所述信息至少包含所述引导驱动程序的一个或多个例程的入口点的地址;以及由所述驱动程序拦截器通过先前存储的所述入口点的地址提供对所述引导驱动程序的所述例程的访问。
上面示例性方面的简单概要是用来提供对本公开内容的基本理解。该概要并非所有预期方面的广泛概述,并且其意图既不是要确定所有方面的关键或重要元素,也不是要划定本公开内容的任何或所有方面的范围。其唯一目的是以简化的形式给出一个或多个方面,作为下面本公开内容的更详细描述的前奏。为了实现上述目的,本公开内容的所述一个或多个方面包括在权利要求中描述并特别指出的特征。
附图说明
被合并入说明书并且构成说明书的一部分的附图示出了本公开内容的一个或多个示例性方面,并且与具体实施方式一起用来解释本公开内容的原理和实现。
图1示出了根据一个示例性方面,引导操作系统的过程的示例。
图2示出了根据一个示例性方面,对引导驱动程序初始化例程的调用进行拦截的示例方法。
图3示出了可以用来实现用于对由恶意软件对引导驱动程序例程的访问进行检测的系统和方法的通用计算机系统的示例。
具体实施方式
本文在用于对由恶意软件对引导驱动程序例程的访问进行检测的系统、方法和计算机程序产品的背景下,描述了若干示例性方面。本领域的普通技术人员应意识到的是,下面的描述仅是说明性的,并非旨在以任何方式进行限定。其它方面将使本领域的技术人员很容易得出本公开内容的益处的启示。现在将详细地参照如图所示出的示例性方面的实施。贯穿附图以及下面的描述,将尽量使用相同的附图标记来指代相同或相似的项目。
图1示出了根据本发明的一个方面的引导操作系统(OS)的过程,该过程包括驱动程序拦截器的初始化的阶段。该引导OS的过程是大多数OS(诸如Windows、Unix、OSX、安卓以及其它OS)所具有的特征。当计算机的电源打开时,在步骤101中加载BIOS(基本输入/输出系统),并且借助于写入到BIOS的软件和硬件,计算机组件被初始化并且POST(通电自检)运行。在BIOS发现硬盘的系统分区、读取到MBR(主引导记录)并且启动引导管理器(例如,WindowsOS中的Bootmgr.exe)时,该自检过程终止。在步骤102,该引导管理器发现硬盘的系统分区中的OS引导加载程序(诸如WindowsOS中的Winload.exe)并将其启动。应当注意的是,在许多现代计算机中,BIOS已被UEFI(统一可扩展固件接口)替代,并且MBR被GPT(GUID分区表—一种针对分区表使用全局唯一标识符(GUID)在物理硬盘上的布局的格式标准)替代,其中,UEFI和GPT均能够在本发明中使用。
在步骤103,OS引导加载程序对从磁盘读取数据所需要的引导启动系统驱动程序进行初始化,并且对OS内核进行初始化。在步骤104,OS引导加载程序加载对OS进行初始化所需要的系统注册表单元和系统驱动程序,此后,其将以读取到的数据发送给OS内核。在步骤105,对由杀毒应用安装的驱动程序拦截器进行初始化。在一个示例性方面,在WindowsOS中,可以通过在注册表中安装早期引导组来确保在其它驱动程序之前加载驱动程序拦截器。例如,在WindowsOS中,从驱动程序的INF文件中读取的StartType条目的值SERVICE_BOOT_START将被写入到注册表中。此外,杀毒应用可以改变引导组的列表。
接下来,在步骤106,对其它引导驱动程序进行初始化,并且在步骤107,对普通的驱动程序和软件进行初始化。在步骤108,对OS的引导结束。在一个示例中,如果在计算机上已安装了rootkit,则也可以在步骤107对该计算机的驱动程序进行初始化。
图2示出了拦截对引导驱动程序初始化例程的调用的方法。当在步骤106对引导驱动程序进行初始化时,OS引导加载程序210凭借PnP管理器(即插即用管理器—在Windows中提供对PnP功能的支持的管理器)将控制依次转移到每个引导驱动程序220(在下文中出于解释说明的目的其将被称作驱动程序)的入口点221。在一个方面,OS引导加载程序210将指向驱动程序对象(包含指向驱动程序例程的指针;例如,WindowsOS中的结构DRIVER_OBJECT)以及到注册表中的驱动程序键的路径作为参数转移到引导驱动程序220。作为一个例子,在WindowsOS中,例程DriverEntry负责驱动程序的初始化222,其入口点为DriverInit—结构DRIVER_OBJECT中的成员。
在引导驱动程序220的初始化222的过程中,执行下列动作:
1.驱动程序在驱动程序对象或驱动程序扩展中存储有针对驱动程序223的例程的入口点。驱动程序例程包括标准例程(例如,在WindowsOS中:AddDevice、StartIo、Unload以及其它例程)和该驱动程序自己的例程两者。
2.对由驱动程序使用的各种驱动程序范围内的对象进行创建和/或初始化,并且安装驱动程序的各种系统资源。
3.释放未使用的已分配存储器。
4.将驱动程序224的初始化的完成的状态以及接收并执行来自PnP管理器的、针对配置、添加和运行设备的请求的能力返回给OS引导加载程序。
由于在步骤105,驱动程序拦截器230作为引导驱动程序之中的第一个被初始化,因此在初始化之后,其发现并读取已被加载入存储器但尚未被初始化的引导驱动程序的列表。在一个方面,可以在系统注册表中或者利用OS引导加载程序210读取该列表(例如,在WindowsOS中,该列表可以被保存在结构KeLoaderBlock中,被OS引导加载程序形成并转移成OS内核的入口点)。
在一个方面,未初始化的引导驱动程序的列表可以包含以下信息:
·名称;
·该引导驱动程序在存储器中的加载地址;
·注册表中到该驱动程序的路径;
·该驱动程序的对象;
·入口点的地址。
在获得引导驱动程序的列表之后,驱动程序拦截器230安装拦截处理程序231,需要拦截处理程序231来拦截对引导驱动程序的初始化例程的调用。在一个方面,当安装引导驱动程序的初始化例程的拦截处理程序231时,拦截处理程序231将在引导驱动程序的列表中包含了其指针的引导驱动程序220的入口点的地址用拦截处理程序231的入口点的地址代替,其中,原始的驱动程序的入口点221将由拦截处理程序231保存。从而,当OS引导加载程序210将控制转移到入口点221时,该控制将被拦截处理程序231拦截。然后,拦截处理程序231将该控制转移到先前保存的原始的驱动程序的入口点221。
在完成了初始化例程224之后,控制将被转移回拦截处理程序231,这导致了驱动程序220的初始化。拦截处理程序231保存由驱动程序在其初始化的过程期间提供的关于引导驱动程序220的信息。在一个方面,这些信息可以包含:
·引导驱动程序220的名称;
·引导驱动程序220的一些或所有例程的入口点的地址;
·由OS引导加载程序210在初始换过程中转移给引导驱动程序220的参数;
·注册表中到该驱动程序的路径;
·入口点的地址;
·驱动程序对象结构。
在另一个方面,关于引导驱动程序220的信息以及其原始的入口点可以保存在针对驱动程序拦截器分配的存储器区域中。
在对OS进行引导之后,在步骤108,用户级别的各种应用能够调用访问例程。通过访问驱动程序例程,能够通过各种设备的驱动程序获得对这些设备的硬件的访问。为了隐藏其存在以及系统中的其它恶意软件组件的存在,rootkit可以拦截由应用针对存储器中的驱动程序例程的调用,并随后过滤对相应的设备的访问。
为了防止恶意程序活动,在本发明的最后的步骤中,驱动程序拦截器230访问引导驱动程序的原始例程。在WindowsOS中,SCSI端口驱动程序负责与磁盘一起工作。对负责与磁盘请求一起工作(诸如IRP_MJ_INTERNAL_DEVICE_CONTROL、IRP_MJ_SCSI)的驱动程序例程的访问也将在驱动程序拦截器230的帮助下通过原始地址来进行(即,不被rootkit修改)。因而,如果在系统中存在rootkit,则对于杀毒应用而言该rootkit将是可被访问的,尽管其会试图隐藏其操作(文件在磁盘上的位置、控制流等)。因此,在正常的杀毒检查过程中,将会发现rootkit并对其进行分析。在一个方面,该杀毒检查可以包括标签分析、启发式分析、仿真、通过利用信誉服务进行检查以及其它方式。
在检测之后,杀毒应用可以执行对rootkit的移除:磁盘上的文件、加载到存储器中的恶意软件代码,并且可以删除该rootkit的活动的其它痕迹。为了检查该移除是否成功,还可以重启计算机。在特定情况下,为了完成对加载入存储器的恶意程序代码的移除,也需要重启计算机。
在一个示例性方面,如果无法移除rootkit或其一部分,则杀毒应用可以指定一个治愈脚本,该治愈脚本将在OS引导的早期阶段执行。此后,需要重启计算机。该治愈脚本可以例如包含rootkit文件在磁盘上的位置的地址以及用于将其移除的命令。在引导OS期间,将由杀毒程序的反rootkit驱动程序中负责执行该治愈脚本的一个来移除该rootkit。
在一个方面,任何其它杀毒应用驱动程序(诸如反rootkit驱动程序)均可以实现对引导驱动程序的原始例程的访问。
图3示出了通用计算机系统20(其可以是个人计算机或服务器)的示例,通用计算机系统20可以用来实现本文所公开的系统和方法的各个方面。计算机系统20包括中央处理单元21、系统存储器22以及将各种系统组件(包括与中央处理单元21相关联的存储器)相连的系统总线23。系统总线23是以现有技术所已知的、能够与任何其它总线架构进行交互的任何总线结构实现的,其中依次包括总线存储器或总线存储控制器、外围设备总线以及本地总线。系统存储器包括只读存储器(ROM)24以及随机访问存储器(RAM)25。基本输入/输出系统(BIOS)26包括确保信息在个人计算机20的元件之间的转移(诸如借助ROM24加载操作系统时)的基本过程。
计算机20依次包括:用于读写数据的硬盘27、用于在可移动磁盘29上进行读写的磁盘驱动器28、以及用于在可移动光盘31(诸如CD-ROM、DVD-ROM以及其它光信息介质)上进行读写的光驱30。硬盘27、磁盘驱动器28以及光驱30分别通过硬盘接口32、磁盘接口33和光驱接口34连接到系统总线23。这些驱动器和相应的计算机信息介质是用于存储计算机指令、数据结构、程序模块以及个人计算机20的其它数据的电源独立的模块。
本公开内容提供了一种使用硬盘驱动器27、可移动磁盘29以及可移动光盘31的系统的实现,但应当理解的是,可以采用能够存储以可被计算机读取的形式的数据的其它类型的计算机信息介质56(固态硬盘、闪存卡、数字盘、随机访问存储器(RAM)等),其中上述组件经由控制器55连接到系统总线23。
计算机20具有文件系统36(其中存储有所记录的操作系统35),并且还具有附加的程序应用37、其它程序模块38和程序数据39。用户能够通过使用输入设备(键盘40、鼠标42)向个人计算机20输入命令和信息。可以使用其它输入设备(未示出):麦克风、操纵杆、游戏控制器、扫描仪等。这些输入设备通常通过串行端口46插入到计算机系统20,进而连接到系统总线,但其也可以以其它方式进行连接,例如,借助于并行端口、游戏端口或通用串行总线(USB)。显示器47或其它类型的显示设备也通过接口(诸如视频适配器48)连接到系统总线23。除了显示器47之外,个人计算机还可以装备有其它外围输出设备(未示出),诸如扬声器、打印机等。
个人计算机20能够使用到一个或多个远程计算机49的网络连接,在网络环境下工作。远程计算机(或多个计算机)49也可以是具有在先前描述计算机20的属性时所提到的大部分或所有元件的个人计算机或服务器。在计算机网络中还可以存在其它设备,诸如路由器、网络站、对等设备或其它网络节点。
网络连接可以形成局域计算机网络(LAN)50和广域计算机网络(WAN)。这些网络被用于企业计算机网络以及公司内部网络,并且它们通常具有到因特网的接入。在LAN或WAN网络中,个人计算机20通过网络适配器或网络接口51连接到局域网50。当使用网络时,个人计算机20可以使用调制解调器54或其它模块来提供与广域计算机网络(诸如因特网)的通信。调制解调器54(其为内部或外部设备)通过串行端口46连接到系统总线23。应当注意的是,这些网络连接仅是示例性的,并不需要描绘网络的实际配置,即,实际上存在通过技术通信模块来建立一个计算机到另一个计算机的连接的其它方式。
在各个方面,本文中描述的系统和方法可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则该方法可以作为一个或多个指令或代码存储在非暂时性计算机可读介质上。计算机可读介质包括数据存储。通过举例而非限定的方式,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM、闪存或其它类型的电、磁或光存储介质,或能够用于以指令或数据结构的形式携带或存储期望的程序代码并且能够被通用计算机的处理器访问的任何其它介质。
在各个方面,在本公开内容中在模块方面描述了系统和方法。如本文中使用的术语“模块”指的是现实的设备、组件、或使用硬件实现的组件的排列,诸如通过专用集成电路(ASIC)或现场可编程门阵列(FPGA);或者作为硬件和软件的组合,诸如通过微处理器系统以及用于实现该模块的功能的指令集,其中该指令集(在被执行时)将该微处理器系统转换成专用设备。模块还可以实现为以下二者的组合:单独由硬件协助的特定功能,以及由硬件和软件的组合协助的其它功能。在某些实现中至少部分的以及在一些情况下所有的模块能够在通用计算机的处理器上执行(诸如上面在图3中详细描述的)。因此,每个模块可以以各种适当的配置实现,并且不应当限于本文中所举例说明的任何特定实现。
为了清楚起见,本文并未公开各个方面的所有常规特征。应当意识到的是,在本公开内容的任何实际实现的开发中,必须做出若干特定于实现的决策以便达到开发者的具体目标,并且对于不同的实现和不同的开发者,这些具体目标会不同。应当意识到的是,这种开发工作会是复杂的和耗时的,但是对于具有了本公开内容的益处的本领域普通技术人员而言,这将只不过是工程的例行工作任务。
此外,应当理解的是,本文中使用的措辞或术语是出于描述而非限制的目的,因此本说明书中的术语或措辞应被本领域技术人员根据本文中给出的教导和指导,结合相关领域的技术知识来进行解释。此外,除非明确地指出,对于说明书或权利要求书中的任何术语,并非旨在归于非常用的或特殊的释义。
本文中公开的各个方面涵盖本文中以解释说明的方式提及的已知模块的目前以及未来已知的等同物。此外,虽然已示出并描述了多个方面和应用,但具有本公开内容的益处的本领域技术人员应当意识到的是,在不背离本文公开的发明构思的情况下,可能有比上面所提及的更多的修改。

Claims (14)

1.一种用于检测对引导驱动程序例程的访问的方法,所述方法包括:
由驱动程序拦截器识别已被加载入存储器中但尚未被初始化的一个或多个引导驱动程序;
由所述驱动程序拦截器安装拦截处理程序,所述拦截处理程序可操作用于拦截对所识别的一个或多个引导驱动程序的初始化例程的调用;
由所述驱动程序拦截器拦截对所识别的一个或多个引导驱动程序的所述初始化例程的程序调用;
由所述拦截处理程序存储由所述驱动程序在其初始化的过程中提供的关于所述引导驱动程序的信息,其中,所述信息至少包含所述引导驱动程序的一个或多个例程的入口点的地址;以及
由所述驱动程序拦截器通过先前存储的所述入口点的地址来提供对所述引导驱动程序的所述例程的访问。
2.根据权利要求1所述的方法,其中,所述拦截处理程序可操作用于将在引导驱动程序的列表中包含了其指针的所述引导驱动程序的原始入口点的地址用所述拦截处理程序的入口点的地址代替,其中,将所述引导驱动程序的所述原始入口点存储在所述拦截处理程序中。
3.根据权利要求2所述的方法,其中,对引导驱动程序的识别是使用已被加载入所述存储器但尚未被初始化的引导驱动程序的列表来执行的。
4.根据权利要求3所述的方法,其中,所述引导驱动程序的列表由所述驱动程序拦截器在系统注册表中读取。
5.根据权利要求3所述的方法,其中,所述引导驱动程序的列表由所述驱动程序拦截器使用OS引导加载程序来读取。
6.根据权利要求5所述的方法,其中,关于所述引导驱动程序的所述信息被存储在针对所述驱动程序拦截器所分配的存储器区域中。
7.根据权利要求1所述的方法,其中,在所述引导驱动程序的初始化期间获得的关于所述引导驱动程序的所述信息包含以下各项中的一项或多项:所述引导驱动程序的名称、所述引导驱动程序的一些或所有例程的入口点的地址、由所述OS引导加载程序在所述初始化过程中转移给所述引导驱动程序的参数、在所述注册表中到所述驱动程序的路径、所述入口点的地址、以及驱动程序对象结构。
8.一种用于检测对引导驱动程序例程的访问的计算机系统,所述系统包括:
用于存储杀毒应用的存储器,所述杀毒应用配置为在一个或多个其它引导驱动程序之前将驱动程序拦截器放入所述计算机的主引导记录;
硬件处理器,其耦合到所述存储器并且配置为:
由所述驱动程序拦截器识别已被加载入存储器中但尚未被初始化的一个或多个引导驱动程序;
由所述驱动程序拦截器安装拦截处理程序,所述拦截处理程序可操作用于拦截对所识别的一个或多个引导驱动程序的初始化例程的调用;
由所述驱动程序拦截器拦截对所识别的一个或多个引导驱动程序的所述初始化例程的程序调用;
由所述拦截处理程序存储由所述驱动程序在其初始化的过程中提供的关于所述引导驱动程序的信息,其中,所述信息至少包含所述引导驱动程序的一个或多个例程的入口点的地址;以及
由所述驱动程序拦截器通过先前存储的所述入口点的地址来提供对所述引导驱动程序的所述例程的访问。
9.根据权利要求8所述的系统,其中,所述拦截处理程序可操作用于将在引导驱动程序的列表中包含了其指针的所述引导驱动程序的原始入口点的地址用所述拦截处理程序的入口点的地址代替,其中,将所述引导驱动程序的所述原始入口点存储在所述拦截处理程序中。
10.根据权利要求9所述的系统,其中,对引导驱动程序的识别是使用已被加载入所述存储器但尚未被初始化的引导驱动程序的列表来执行的。
11.根据权利要求10所述的系统,其中,所述引导驱动程序的列表由所述驱动程序拦截器在系统注册表中读取。
12.根据权利要求10所述的系统,其中,所述引导驱动程序的列表由所述驱动程序拦截器使用OS引导加载程序来读取。
13.根据权利要求12所述的系统,其中,关于所述引导驱动程序的所述信息被存储在针对所述驱动程序拦截器所分配的存储器区域中。
14.根据权利要求8所述的系统,其中,在所述引导驱动程序的初始化期间获得的关于所述引导驱动程序的所述信息包含以下各项中的一项或多项:所述引导驱动程序的名称、所述引导驱动程序的一些或所有例程的入口点的地址、由所述OS引导加载程序在所述初始化过程中转移给所述引导驱动程序的参数、在所述注册表中到所述驱动程序的路径、所述入口点的地址、以及驱动程序对象结构。
CN201510502331.XA 2014-12-05 2015-08-14 用于提供对引导驱动程序的原始例程的访问的系统和方法 Active CN105678160B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2014148959/08A RU2586576C1 (ru) 2014-12-05 2014-12-05 Способ выполнения обращения к процедурам загрузочного драйвера
RU2014148959 2014-12-05
US14/607,284 2015-01-28
US14/607,284 US9195832B1 (en) 2014-12-05 2015-01-28 System and method for providing access to original routines of boot drivers

Publications (2)

Publication Number Publication Date
CN105678160A true CN105678160A (zh) 2016-06-15
CN105678160B CN105678160B (zh) 2019-03-08

Family

ID=54542895

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510502331.XA Active CN105678160B (zh) 2014-12-05 2015-08-14 用于提供对引导驱动程序的原始例程的访问的系统和方法

Country Status (4)

Country Link
US (1) US9195832B1 (zh)
EP (1) EP3029564B1 (zh)
CN (1) CN105678160B (zh)
RU (1) RU2586576C1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105956462A (zh) * 2016-06-29 2016-09-21 北京金山安全软件有限公司 一种阻止恶意加载驱动的方法、装置及电子设备
CN106203070A (zh) * 2016-06-29 2016-12-07 北京金山安全软件有限公司 驱动加载阻止方法及装置
CN108304209A (zh) * 2018-02-28 2018-07-20 联想(北京)有限公司 固件升级方法及固件升级系统

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9208105B2 (en) 2013-05-30 2015-12-08 Dell Products, Lp System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support
US10313121B2 (en) * 2016-06-30 2019-06-04 Microsoft Technology Licensing, Llc Maintaining operating system secrets across resets
JP7179482B2 (ja) * 2018-04-19 2022-11-29 キヤノン株式会社 情報処理装置、制御方法、およびそのプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
WO2001067252A1 (en) * 2000-03-03 2001-09-13 Watchguard Technologies, Inc. Secure remote kernel communication
US20070209032A1 (en) * 2006-02-23 2007-09-06 Microsoft Corporation Driver verifier
US20080005797A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Identifying malware in a boot environment
US20080046709A1 (en) * 2006-08-18 2008-02-21 Min Wang File manipulation during early boot time
CN101183418A (zh) * 2007-12-25 2008-05-21 北京大学 一种Windows隐蔽性恶意软件检测方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4779187A (en) * 1985-04-10 1988-10-18 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US7549055B2 (en) 2003-05-19 2009-06-16 Intel Corporation Pre-boot firmware based virus scanner
WO2005074032A1 (ja) 2004-01-28 2005-08-11 Fujitsu Limited 半導体装置及びその製造方法
US7533415B2 (en) * 2004-04-21 2009-05-12 Trend Micro Incorporated Method and apparatus for controlling traffic in a computer network
US7571448B1 (en) * 2004-07-28 2009-08-04 Symantec Corporation Lightweight hooking mechanism for kernel level operations
US7591019B1 (en) * 2009-04-01 2009-09-15 Kaspersky Lab, Zao Method and system for optimization of anti-virus scan
US8171272B1 (en) * 2009-04-09 2012-05-01 Symantec Corporation Critical pre-OS driver verification
US8479292B1 (en) 2010-11-19 2013-07-02 Symantec Corporation Disabling malware that infects boot drivers
US8516509B2 (en) 2011-02-08 2013-08-20 BlueStripe Software, Inc. Methods and computer program products for monitoring system calls using safely removable system function table chaining
RU2472215C1 (ru) * 2011-12-28 2013-01-10 Закрытое акционерное общество "Лаборатория Касперского" Способ выявления неизвестных программ с использованием эмуляции процесса загрузки
RU2510074C2 (ru) * 2012-02-24 2014-03-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ проверки исполняемого кода перед его выполнением
JP5842683B2 (ja) * 2012-03-12 2016-01-13 富士通株式会社 情報処理装置、メモリダンププログラム及びメモリダンプ方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
WO2001067252A1 (en) * 2000-03-03 2001-09-13 Watchguard Technologies, Inc. Secure remote kernel communication
US20070209032A1 (en) * 2006-02-23 2007-09-06 Microsoft Corporation Driver verifier
US20080005797A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Identifying malware in a boot environment
CN101479709A (zh) * 2006-06-30 2009-07-08 微软公司 在引导环境中标识恶意软件
US20080046709A1 (en) * 2006-08-18 2008-02-21 Min Wang File manipulation during early boot time
CN101183418A (zh) * 2007-12-25 2008-05-21 北京大学 一种Windows隐蔽性恶意软件检测方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105956462A (zh) * 2016-06-29 2016-09-21 北京金山安全软件有限公司 一种阻止恶意加载驱动的方法、装置及电子设备
CN106203070A (zh) * 2016-06-29 2016-12-07 北京金山安全软件有限公司 驱动加载阻止方法及装置
CN105956462B (zh) * 2016-06-29 2019-05-10 珠海豹趣科技有限公司 一种阻止恶意加载驱动的方法、装置及电子设备
CN108304209A (zh) * 2018-02-28 2018-07-20 联想(北京)有限公司 固件升级方法及固件升级系统
CN108304209B (zh) * 2018-02-28 2021-01-15 联想(北京)有限公司 固件升级方法及固件升级系统

Also Published As

Publication number Publication date
CN105678160B (zh) 2019-03-08
US9195832B1 (en) 2015-11-24
EP3029564B1 (en) 2017-02-22
EP3029564A1 (en) 2016-06-08
RU2586576C1 (ru) 2016-06-10

Similar Documents

Publication Publication Date Title
US10460099B2 (en) System and method of detecting malicious code in files
CN108475217B (zh) 用于审计虚拟机的系统及方法
US10242186B2 (en) System and method for detecting malicious code in address space of a process
US9383934B1 (en) Bare-metal computer security appliance
US9348998B2 (en) System and methods for detecting harmful files of different formats in virtual environments
US10078577B2 (en) Policy compliance of container images
CN105678160A (zh) 用于提供对引导驱动程序的原始例程的访问的系统和方法
US12013939B2 (en) Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment
JP2018041438A5 (zh)
US9111096B2 (en) System and method for preserving and subsequently restoring emulator state
CN102207896A (zh) 虚拟机崩溃文件生成技术
KR20080027207A (ko) 고 신뢰성 펌웨어
US20140181970A1 (en) System and method for improving the efficiency of application emulation acceleration
US20140372991A1 (en) System, method, and computer program product for simulating at least one of a virtual environment and a debugging environment to prevent unwanted code from executing
US10878105B2 (en) System and method for identifying vulnerabilities of applications by intercepting function calls
US20140208089A1 (en) System and Method for Dynamically Changing System Behavior by Modifying Boot Configuration Data and Registry Entries
Case et al. HookTracer: A system for automated and accessible API hooks analysis
CN106156621A (zh) 一种检测虚拟机逃逸的方法及装置
CN111428240B (zh) 一种用于检测软件的内存违规访问的方法及装置
US20220308907A1 (en) Injection and execution of workloads into virtual machines
EP3293660A1 (en) System and method of detecting malicious code in files
EP3557464B1 (en) System and method for identifying vulnerabilities of applications by intercepting function calls
RU2596577C2 (ru) Способ создания обработчика системных вызовов
CN115686739A (zh) 攻击检测方法及装置
EP2866167A1 (en) System and method for preserving and subsequently restoring emulator state

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant