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

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

Info

Publication number
CN105678160B
CN105678160B CN201510502331.XA CN201510502331A CN105678160B CN 105678160 B CN105678160 B CN 105678160B CN 201510502331 A CN201510502331 A CN 201510502331A CN 105678160 B CN105678160 B CN 105678160B
Authority
CN
China
Prior art keywords
driver
boot
blocker
initialization
identified
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
CN201510502331.XA
Other languages
English (en)
Other versions
CN105678160A (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、OS X、安卓以及其它OS)所具有的特征。当计算机的电源打开时,在步骤101中加载BIOS(基本输入/输出系统),并且借助于写入到BIOS的软件和硬件,计算机组件被初始化并且POST(通电自检)运行。在BIOS发现硬盘的系统分区、读取到MBR(主引导记录)并且启动引导管理器(例如,Windows OS中的Bootmgr.exe)时,该自检过程终止。在步骤102,该引导管理器发现硬盘的系统分区中的OS引导加载程序(诸如Windows OS中的Winload.exe)并将其启动。应当注意的是,在许多现代计算机中,BIOS已被UEFI(统一可扩展固件接口)替代,并且MBR被GPT(GUID分区表—一种针对分区表使用全局唯一标识符(GUID)在物理硬盘上的布局的格式标准)替代,其中,UEFI和GPT均能够在本发明中使用。
在步骤103,OS引导加载程序对从磁盘读取数据所需要的引导启动系统驱动程序进行初始化,并且对OS内核进行初始化。在步骤104,OS引导加载程序加载对OS进行初始化所需要的系统注册表单元和系统驱动程序,此后,其将以读取到的数据发送给OS内核。在步骤105,对由杀毒应用安装的驱动程序拦截器进行初始化。在一个示例性方面,在WindowsOS中,可以通过在注册表中安装早期引导组来确保在其它驱动程序之前加载驱动程序拦截器。例如,在Windows OS中,从驱动程序的INF文件中读取的StartType条目的值SERVICE_BOOT_START将被写入到注册表中。此外,杀毒应用可以改变引导组的列表。
接下来,在步骤106,对其它引导驱动程序进行初始化,并且在步骤107,对普通的驱动程序和软件进行初始化。在步骤108,对OS的引导结束。在一个示例中,如果在计算机上已安装了rootkit,则也可以在步骤107对该计算机的驱动程序进行初始化。
图2示出了拦截对引导驱动程序初始化例程的调用的方法。当在步骤106对引导驱动程序进行初始化时,OS引导加载程序210凭借PnP管理器(即插即用管理器—在Windows中提供对PnP功能的支持的管理器)将控制依次转移到每个引导驱动程序220(在下文中出于解释说明的目的其将被称作驱动程序)的入口点221。在一个方面,OS引导加载程序210将指向驱动程序对象(包含指向驱动程序例程的指针;例如,Windows OS中的结构DRIVER_OBJECT)以及到注册表中的驱动程序键的路径作为参数转移到引导驱动程序220。作为一个例子,在Windows OS中,例程DriverEntry负责驱动程序的初始化222,其入口点为DriverInit—结构DRIVER_OBJECT中的成员。
在引导驱动程序220的初始化222的过程中,执行下列动作:
1.驱动程序在驱动程序对象或驱动程序扩展中存储有针对驱动程序223的例程的入口点。驱动程序例程包括标准例程(例如,在Windows OS中:AddDevice、StartIo、Unload以及其它例程)和该驱动程序自己的例程两者。
2.对由驱动程序使用的各种驱动程序范围内的对象进行创建和/或初始化,并且安装驱动程序的各种系统资源。
3.释放未使用的已分配存储器。
4.将驱动程序224的初始化的完成的状态以及接收并执行来自PnP管理器的、针对配置、添加和运行设备的请求的能力返回给OS引导加载程序。
由于在步骤105,驱动程序拦截器230作为引导驱动程序之中的第一个被初始化,因此在初始化之后,其发现并读取已被加载入存储器但尚未被初始化的引导驱动程序的列表。在一个方面,可以在系统注册表中或者利用OS引导加载程序210读取该列表(例如,在Windows OS中,该列表可以被保存在结构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访问引导驱动程序的原始例程。在Windows OS中,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的元件之间的转移(诸如借助ROM 24加载操作系统时)的基本过程。
计算机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 (10)

1.一种用于对计算机的操作系统的引导驱动程序的初始化例程进行访问的方法,所述方法包括:
由驱动程序拦截器使用已被加载入所述计算机的存储器中但尚未被所述操作系统的引导加载程序初始化的引导驱动程序的列表来识别一个或多个引导驱动程序;
由所述驱动程序拦截器安装拦截处理程序,所述拦截处理程序可操作用于拦截对所识别的一个或多个引导驱动程序的初始化例程的程序调用;
当所识别的一个或多个引导驱动程序由所述操作系统的引导加载程序初始化时,由所述驱动程序拦截器拦截对所识别的一个或多个引导驱动程序的所述初始化例程的程序调用,其中,所述拦截通过以下方式执行:将在引导驱动程序的列表中包含了其指针的用于所拦截的程序调用的引导驱动程序的当前入口点的地址用所述拦截处理程序的入口点的地址代替,以将控制转移到存储的所述引导驱动程序的原始入口点;
由所述拦截处理程序存储关于所识别的一个或多个引导驱动程序的信息,其中,所述信息至少包含所识别的一个或多个引导驱动程序的所述初始化例程的原始入口点的地址;以及
由所述驱动程序拦截器使用所述原始入口点来访问所识别的一个或多个引导驱动程序的所述初始化例程。
2.根据权利要求1所述的方法,其中,所述引导驱动程序的列表由所述驱动程序拦截器在系统注册表中读取。
3.根据权利要求1所述的方法,其中,所述引导驱动程序的列表由所述驱动程序拦截器使用所述操作系统的引导加载程序来读取。
4.根据权利要求3所述的方法,其中,关于所述引导驱动程序的所述信息被存储在针对所述驱动程序拦截器所分配的所述计算机的存储器区域中。
5.根据权利要求1所述的方法,其中,在所识别的一个或多个引导驱动程序的初始化期间获得关于所识别的一个或多个引导驱动程序的所述信息,所述信息包含以下各项中的一项或多项:所识别的一个或多个引导驱动程序的名称、所识别的一个或多个引导驱动程序的一些或所有初始化例程的入口点的地址、由所述操作系统的引导加载程序在所述初始化期间转移给所识别的一个或多个引导驱动程序的参数、在注册表中到所识别的一个或多个引导驱动程序的路径、入口点的地址、以及驱动程序对象结构。
6.一种用于对操作系统的引导驱动程序的初始化例程进行访问的计算机系统,所述计算机系统包括:
用于存储杀毒应用的存储器,所述杀毒应用配置为在一个或多个其它引导驱动程序之前将驱动程序拦截器放入所述计算机系统的主引导记录;
硬件处理器,其耦合到所述存储器并且配置为:
由所述驱动程序拦截器使用已被加载入所述存储器中但尚未被所述操作系统的引导加载程序初始化的引导驱动程序的列表来识别一个或多个引导驱动程序;
由所述驱动程序拦截器安装拦截处理程序,所述拦截处理程序可操作用于拦截对所识别的一个或多个引导驱动程序的初始化例程的程序调用;
当所识别的一个或多个引导驱动程序由所述操作系统的引导加载程序初始化时,由所述驱动程序拦截器拦截对所识别的一个或多个引导驱动程序的所述初始化例程的程序调用,其中,所述拦截通过以下方式执行:将在引导驱动程序的列表中包含了其指针的用于所拦截的程序调用的引导驱动程序的当前入口点的地址用所述拦截处理程序的入口点的地址代替,以将控制转移到存储的所述引导驱动程序的原始入口点;
由所述拦截处理程序存储关于所识别的一个或多个引导驱动程序的信息,其中,所述信息至少包含所识别的一个或多个引导驱动程序的一个或多个初始化例程的原始入口点的地址;以及
由所述驱动程序拦截器使用所述原始入口点来访问所识别的一个或多个引导驱动程序的所述初始化例程。
7.根据权利要求6所述的系统,其中,所述引导驱动程序的列表由所述驱动程序拦截器在系统注册表中读取。
8.根据权利要求6所述的系统,其中,所述引导驱动程序的列表由所述驱动程序拦截器使用所述操作系统的引导加载程序来读取。
9.根据权利要求8所述的系统,其中,关于所述引导驱动程序的所述信息被存储在针对所述驱动程序拦截器所分配的所述计算机的存储器区域中。
10.根据权利要求6所述的系统,其中,在所识别的一个或多个引导驱动程序的初始化期间获得关于所识别的一个或多个引导驱动程序的所述信息,所述信息包含以下各项中的一项或多项:所识别的一个或多个引导驱动程序的名称、所识别的一个或多个引导驱动程序的一些或所有初始化例程的入口点的地址、由所述操作系统引导加载程序在所述初始化期间转移给所识别的一个或多个引导驱动程序的参数、在注册表中到所识别的一个或多个引导驱动程序的路径、入口点的地址、以及驱动程序对象结构。
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 US9195832B1 (en) 2014-12-05 2015-01-28 System and method for providing access to original routines of boot drivers
US14/607,284 2015-01-28

Publications (2)

Publication Number Publication Date
CN105678160A CN105678160A (zh) 2016-06-15
CN105678160B true 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)

Families Citing this family (6)

* 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
CN106203070A (zh) * 2016-06-29 2016-12-07 北京金山安全软件有限公司 驱动加载阻止方法及装置
CN105956462B (zh) * 2016-06-29 2019-05-10 珠海豹趣科技有限公司 一种阻止恶意加载驱动的方法、装置及电子设备
US10313121B2 (en) * 2016-06-30 2019-06-04 Microsoft Technology Licensing, Llc Maintaining operating system secrets across resets
CN108304209B (zh) * 2018-02-28 2021-01-15 联想(北京)有限公司 固件升级方法及固件升级系统
JP7179482B2 (ja) * 2018-04-19 2022-11-29 キヤノン株式会社 情報処理装置、制御方法、およびそのプログラム

Citations (4)

* 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
CN101183418A (zh) * 2007-12-25 2008-05-21 北京大学 一种Windows隐蔽性恶意软件检测方法
CN101479709A (zh) * 2006-06-30 2009-07-08 微软公司 在引导环境中标识恶意软件

Family Cites Families (14)

* 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
US20070209032A1 (en) 2006-02-23 2007-09-06 Microsoft Corporation Driver verifier
US7769992B2 (en) * 2006-08-18 2010-08-03 Webroot Software, Inc. File manipulation during early boot time
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 (4)

* 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
CN101479709A (zh) * 2006-06-30 2009-07-08 微软公司 在引导环境中标识恶意软件
CN101183418A (zh) * 2007-12-25 2008-05-21 北京大学 一种Windows隐蔽性恶意软件检测方法

Also Published As

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

Similar Documents

Publication Publication Date Title
CN105678160B (zh) 用于提供对引导驱动程序的原始例程的访问的系统和方法
US11687645B2 (en) Security control method and computer system
US10460099B2 (en) System and method of detecting malicious code in files
RU2691187C1 (ru) Система и способы аудита виртуальной машины
US10078577B2 (en) Policy compliance of container images
KR102206115B1 (ko) 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지
US12013939B2 (en) Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment
Bojinov et al. Address space randomization for mobile devices
US9811663B2 (en) Generic unpacking of applications for malware detection
CN102207896A (zh) 虚拟机崩溃文件生成技术
US10042666B2 (en) Platform simulation for management controller development on virtual machines
US20140181970A1 (en) System and method for improving the efficiency of application emulation acceleration
US20180046486A1 (en) Cloud based platform simulation for management controller development
US9513889B2 (en) System and method of automating installation of applications
Case et al. HookTracer: A system for automated and accessible API hooks analysis
US10268466B2 (en) Software installer with built-in hypervisor
CN113821297A (zh) 仿真器和仿真方法
US9342694B2 (en) Security method and apparatus
US10162724B2 (en) Technique for inspecting a host computer
CN110096888A (zh) 一种加快验证及分析smm安全隐患的方法及系统
EP3293660A1 (en) System and method of detecting malicious code in files
Morabito Detecting hardware-assisted hypervisor rootkits within nested virtualized environments
RU2596577C2 (ru) Способ создания обработчика системных вызовов
CN104978210A (zh) 安全启动操作系统的方法
CN113836008A (zh) 针对虚拟机监视器进行模糊测试的方法和系统

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