CN101405705B - 用于外来代码检测的系统和方法 - Google Patents

用于外来代码检测的系统和方法 Download PDF

Info

Publication number
CN101405705B
CN101405705B CN2006800076790A CN200680007679A CN101405705B CN 101405705 B CN101405705 B CN 101405705B CN 2006800076790 A CN2006800076790 A CN 2006800076790A CN 200680007679 A CN200680007679 A CN 200680007679A CN 101405705 B CN101405705 B CN 101405705B
Authority
CN
China
Prior art keywords
code
page
foreign
event handler
pointer
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
Application number
CN2006800076790A
Other languages
English (en)
Other versions
CN101405705A (zh
Inventor
K·豪特乐利得
U·隆顿
V·A·舒宾
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN101405705A publication Critical patent/CN101405705A/zh
Application granted granted Critical
Publication of CN101405705B publication Critical patent/CN101405705B/zh
Expired - Fee Related 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/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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
    • 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/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2139Recurrent verification

Landscapes

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

Abstract

介绍了一种用于有效外来代码检测的方法和系统。在本发明的一个方面,认证模块检查进程空间中线程堆栈所引用的页面,其中这些页面可能包含外来代码。模块可以遍历线程堆栈以检查引用这种页面的返回地址。在另一方面,模块检查堆栈所引用的随机页面。在又一方面,模块检查堆栈所引用的经检查页面的任何邻近可疑页面。此外,模块检查指令指针所引用的页面,页面出错历史所描述的页面和调用代码、以及具有事件处理函数、动态链接库函数或可能要运行的其他函数的任何页面。

Description

用于外来代码检测的系统和方法
版权声明和许可
本专利文件的公开内容的一部分可能包含须经版权保护的材料。本版权所有者不反对任何专利文件或专利公开像出现在专利与商标局专利文件或记录中一样的复制,但在除此之外的任何情况下保留版权。以下标注应适用于本文件:Copyright
Figure 2006800076790_0
2004,Microsoft Corp.。
发明领域
本发明一般涉及计算领域,尤其涉及检测非旨在驻留在计算机系统的进程空间中的外来代码的技术。
发明背景
当今的计算机系统常遭受到各种破坏或禁止计算机系统的期望操作、并使得系统以损坏或非期望方式运行的攻击。计算机病毒、蠕虫和特洛伊木马程序是不同形式攻击的示例。攻击也可以来自计算机系统的不择手段的用户或者远程黑客。这些攻击通常是以尝试修改由计算机系统执行的现有程序代码或尝试在计算机系统中常规程序执行的各个阶段插入新的未经授权的程序代码的形式出现。防止这些恶意攻击的系统和方法变得日益重要。
一般而言,这种攻击是通过使计算机执行外来代码实现的。在这种情况下“外来”代码是指不旨在或期望在特定程序的进程空间中执行的代码。它通常由黑客写成用以进入程序的进程空间以完成某些目的,诸如删除、破坏或为了如非法制作音乐的未经授权拷贝等其它目的操纵代码或数据等。
防止外来代码的这种攻击有助于确保计算机系统(或至少是特定程序)的行为完整性。维持完整性的一种方式是执行模块认证,其中保护一个或多个软件模块的安全性以免被篡改。这提供了对诸如代码补丁、重定向和软件断点等对软件的恶意改变的一定程度的保护。
模块认证的一种形式是确保包含在软件模块中的内容没有被改变(或者至少诸如代码部分等模块的不期望改变的部分真正保持未变)。这可以通过静态模块认证来完成。静态模块认证是验证模块(在某些情况下可被认为是“on-disk(盘上)”模块)的持久存储图像的过程。例如,检查盘上模块的一种机制可以通过取文件的散列值、并将所得散列值与已由受信任签署者签名的文件的预先计算散列值作比较来完成。
散列(Hashing)的处理是一种众所周知的密码技术,它使用相对唯一但相比原始数据小得多的表示来标识数据。如SHA-1等好的散列算法即使对于源数据中(或者该情况下的二进制文件)微小的变化也会生成显著不同的散列值。因此,当预期的攻击是对所存储代码的修改时,散列法在检测出修改方面很有效。
然而,对于检查代码和数据的完整性和安全性方面有基本的限制。简而言之,不能一直检查所有的代码和数据。从性能的角度看,用户可能不希望计算机系统专门使用其过量的资源来不断地搜索代码或数据篡改。例如,像Microsoft Suite等大型软件程序的大小是许多兆字节,并且会花费大量的资源来反复检查整个程序以获得代码或数据篡改的证据。
解决该性能问题的一个方法是通过在存储器中选择一些数量的随机页面然后扫描它们来检查外来代码。可以在某些设定的时间间隔或在事件发生时扫描这些页面。通过随机地检查有限量的代码和数据,可为用户释放更多的资源以供使用,同时提供对外来代码破坏计算机系统完整性的合理检查。
然而,用于检查对计算机系统的攻击的一种经改进方式是仔细地选择程序的哪些部分用于检查可能的篡改。例如,如果没有引用代码,那么它不能被执行,这意味着它不会对计算机系统完整性造成危险。因此,提供智能技术来检测外来代码是有优势的,其中检查和验证将要执行的代码或者很有可能要执行的代码。具体地,通过检查可引用任何外来代码的进程空间中的线程堆栈来确定外来代码的存在是有优势的。此外,检查指令指针所指向的代码、页面出错历史、以及任何指针和可执行的其相关联函数,诸如整个动态链接库(DLL)中的指针和函数、事件处理器的指针和函数等,是有优势的。
发明内容
本发明的各个方面示教了检测外来代码的一种智能方法。本发明一方面的重点在于可能运行的代码,即以某种方式引用的代码。在本发明的一方面,不管线程堆栈是否活动检查由线程堆栈引用的代码。特别地,检查在任何给定线程堆栈上引用的选定代码页面。此外,在本发明的另一方面,也选择邻近那些选定页面的任何可疑页面来作外来代码检查。在本发明的又一方面,检查线程堆栈上引用的随机页面。
在本发明的其它方面,在处理器的指令指针所指向的页面中检查外来代码。在本发明的另外方面,检查页面出错历史,这容许检查从扩展存储器页入到物理存储器的任何页面,以及要求页入这些页面的任何代码。在本发明的其它方面,检查诸如故障处理器的事件处理函数以及指向其的指针,它们处理计算机系统用户、计算机系统本身或者两者同时带来的事件。所有这些方面具有相同的概念,即检查可能要执行的代码,而相反不检查不大可能执行的代码。
以下描述本发明的其他特征。
附图说明
结合附图能更好地理解上述发明内容和以下对发明的详细描述。为了说明本发明,示出了描述本发明的各个方面的示例性实施例。然而,本发明不限于所揭示的特定系统和方法。包括以下附图:
图1提供了对结合其可实施本发明的合适计算设备的简要描述;
图2示出了外来代码检测候选,即位于进程空间中的几个线程堆栈;
图3A示出了遍历线程堆栈并在页面中检查外来代码的概念;
图3B示出了检查线程堆栈所引用的随机页面的概念;
图3C示出了在邻近可疑页面中检查外来代码的概念;
图4示出了对事件处理函数和指针检查外来代码的存在;
图5示出了对指令指针检查外来代码;
图6示出了对页面出错历史检查外来代码;
图7示出了外来代码检测的示例性实现。
具体实施方式
概述
首先,以下针对本发明的各个方面描述了一示例性计算环境。其次,详细描述了这些方面。例如,讨论了检测外来代码的方法,其中认证模块遍历堆栈,并且检查存储器中堆栈所引用的任何页面。或者,认证模块检查随机页面和堆栈所引用页面的邻近可疑页面。
此外,检查由指令指针引用的页面、以及由事件处理函数引用的任何页面,不管是用户调用的、系统调用的、还是两者都调用的。此外,对页面出错历史检查被页入到物理存储器中的页面、以及请求那些页面页入的代码。这些仅是一些示例,意在示出贯穿本发明各个方面的宽泛原理:检查可能运行的代码,不检查不大可能运行的代码。
示例性计算环境
图1和以下讨论旨在提供对结合其可实施本发明的合适计算设备的简要描述。例如,图1中示出的任何客户机或服务器计算机或设备可采取这种形式。然而,应该理解,可构想手提式、便携式和所有类型的其他计算设备和计算对象可结合本发明使用,即,计算环境中可生成、处理、接收和/或发送数据的任何地方。尽管以下描述了通用计算机,但这仅是一个示例,本发明可使用具有网络/总线互通和交互的瘦客户机来实现。因而,本发明可在网络化主机服务环境中实现,其中牵涉极少或最少的客户机资源,例如其中客户机设备仅用作连接网络/总线的接口(诸如置入装置中的一对象)的网络化环境。本质上,可存储数据以及数据可从中获取或发送到另一计算机的任何地方都是对本发明的对象持久方法的操作而言合乎需要或合适的环境。
虽然不是必须的,但是本发明可通过操作系统实现,供服务开发者用于设备或对象、和/或包括在根据本发明运行的应用程序或服务器软件中。可在计算机可执行指令的通用环境中描述软件,诸如可由例如客户机工作站、服务器或其他设备的一个或多个计算机执行的程序模块。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。通常,在各个实施例中可按需组合或分布程序模块的功能。此外,本发明可用其他计算机系统配置和协议来实践。适用于本发明的其它众所周知的计算系统、环境和/或配置包括但不限于个人计算机(PC)、自动取款机、服务器计算机、手提式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、网络PC、装置、灯光、环境控制元件、小型机、大型计算机等。
图1由此示出了可实现本发明的合适计算系统环境的一个示例100,尽管如上所阐明的,计算系统环境100仅是合适计算环境的一个示例,且并不旨在提出对本发明的使用范围或功能的任何限制。计算环境100也不应当被解释为对有关示例性操作环境100中示出的任一组件或其组合具有任何依赖或要求。
参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可包括但不限于,处理单元120、系统存储器130以及将包括系统存储器的各个系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的任一种的局域总线。作为示例而非限制,这类体系结构包括工业标准体系结构(ISA)总线、微信道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局域总线以及外围部件互连(PCI)总线(也称为Mezzanine总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任一可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁性存储设备、或可用来储存所需信息并可由计算机110访问的任一其它介质。通信介质通常具体化为诸如载波或其它传输机制的已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接接线连接,以及无线介质,诸如声学、RF、红外和其它无线介质。上述任一个的组合也应当包括在计算机可读介质的范围之内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。包含如在启动时帮助在计算机110内的元件之间传输信息的基本例程的基本输入/输出系统133(BIOS)通常储存在ROM 131中。RAM 132通常包含处理单元120立即可访问或者当前正在操作的数据和/或程序模块。作为示例而非限制,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器141、对可移动、非易失性磁盘152进行读写的磁盘驱动器151、以及对可移动、非易失性光盘156,如CD-RW、DVD-RW或其它光学介质进行读写的光盘驱动器155。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动的存储器接口,如接口140连接到系统总线121,而磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。
上文讨论并在图1示出的驱动器及其关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被示为储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。用户可以通过输入设备,诸如键盘162和定位设备161(诸如鼠标、跟踪球或触摸板等)向计算机110输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线121的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。图形接口182也可被连接到系统总线121。一个或多个图形处理单元(GPU)184可与图形接口182通信。监视器191或其它类型的显示设备也通过接口,诸如视频接口190连接至系统总线121,该接口又可与视频存储器186通信。除监视器之外,计算机也可包括其它外围输出设备,诸如扬声器197和打印机196,它们通过输出外围接口195连接。
计算机110可以使用到一个或多个远程计算机,如远程计算机180的逻辑连接在网络化或分布式环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公用网络节点,并通常包括许多或所有相关于计算机110所描述的元件,尽管在图1中仅示出了存储器存储设备181。图1描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络/总线。这类网络环境常见于家庭、办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过WAN 173,如因特网建立通信的其它装置。可以是内置或外置的调制解调器172通过用户输入接口160或其他适当的机制连接至系统总线121。在网络化环境中,相关于计算机110所描述的程序模块或其部分可储存在远程存储器存储设备中。作为示例而非限制,图1示出远程应用程序185驻留在存储器设备181上。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它手段。
外来代码检测方面
以下讨论的本发明的各方面在进程空间中检查外来代码的存在。具体地,将执行或可能执行的代码是要检查的目标。图2示出了用于外来代码检测的一些候选200。通常,诸如可执行代码的代码和所支持库被映射到进程空间中。进程空间不执行,而仅是定义在该进程空间中运作的任何事物可访问的存储器边界、资源等。线程是在进程空间的边界内运作的执行的实例。在一个进程空间中可以执行许多线程,且一般地,在进程空间中创建的所有存储器和资源可被该进程空间中的任一执行线程使用。
通常,每个线程具有它自己的堆栈,这种堆栈可以被称为“线程堆栈”。在本发明的一个方面,图2示出了在进程空间224内分配的三个这种线程堆栈218、220和222,这些线程堆栈是用于外来代码检测的候选,因为它们可能引用可能运行的代码。诸如ModAuth 204等认证模块在每个线程堆栈所引用的要执行页面内检查外来代码的存在。例如,ModAuth 204检查线程堆栈A 218的页面206和208,以查看它们是否包含任何外来代码。它对线程堆栈B310执行相同的操作,检查其页面310,并且对线程堆栈C322检查其页面312、314和316。
ModAuth 204尝试要避免的(如用粗体“X”所示)是检查包含页面228、230、232和234的其他存储空间(进程空间)226。由于存储空间226不是进程空间224的一部分,其内容228、230、232和234将不会被执行,因此ModAuth 204无需在该存储空间226中检查任何外来代码。简而言之,ModAuth 204检查潜在地可能执行的这类代码。在图2中,ModAuth 204将其对任何外来代码的搜索限制在进程空间224的线程堆栈218、220和222中。这种智能外来代码检查导致了极大地改进的计算机性能,因为处理器无需浪费宝贵的时钟周期来检查不会被执行的代码。
在本发明的另一方面,图3A示出了认证模块ModAuth 304遍历线程堆栈,以获取可能引用页面306、308或310中的外来代码的返回地址。同样地,以任何方式可能最终导致外来代码执行的堆栈上所引用的任何要执行代码值得ModAuth304检查。堆栈遍历仅是获取对外来代码引用的一种手段,即通过堆栈上的返回地址,但可以采用找到对可能执行代码的引用的其它技术。
在本领域中堆栈遍历的概念是公知的,尤其是在调试阶段使用时。在该阶段,在提供有关堆栈框架的信息(也被称为激活记录)及其大小的调试符号的帮助下完成堆栈遍历,这样可执行可靠的堆栈遍历。在本发明的一个方面,ModAuth 304遍历线程堆栈。具体地,ModAuth 304遍历线程堆栈A318的框架(未示出),检查本地变量和引用要执行代码的页面306和308的返回地址。它对线程堆栈B作出相同的操作,该线程堆栈包含引用页面310的返回地址。这样,ModAuth 304可检查整个进程空间324中的所有线程堆栈。
在图3B中,在本发明的另一方面,ModAuth 304检查进程空间324的线程堆栈所引用的随机页面。具体地,ModAuth 304检查页面306,但是并不必然检查线程堆栈A 318中的页面308,并且它不检查线程堆栈B 320中的页面310。对随机页面的检查可以在每个指定时间间隔进行或者在特定时间间隔内进行若干次。检查实现依赖于运行ModAuth 304功能的系统的性能。换言之,ModAuth 304针对不存在外来代码必须认证的越是频繁,要认证的页面越是多,就会越多地降低系统性能,因为更多的计算资源将必须专用于检测外来代码。
在图3C中,在本发明的又一方面,ModAuth 304不仅检查选定页面,而且也检查邻近选定页面的任何可疑页面。例如,如果ModAuth 304已选择检查线程堆栈A318中的页面308,那么它可能也要检查接着要执行的页面,即页面306。同样地,如果ModAuth 404已选择检查线程堆栈B 320中的页面310,那么它也可能要检查下一页面,即页面311。选定页面可随机或非随机地选择。在任一情况下,可检查选定页面的下一、上一或任何邻近页面。
在本发明的另一方面,图4示出了可对事件处理器函数以及指向这些函数的指针检查外来代码,其中函数通常是计算机系统事件处理器函数。事件处理器的一个示例是响应一事件执行的函数或方法。事件可包括(1)用户动作,诸如键击和鼠标移动,(2)系统事件,诸如存储器用完(例如异常处理器函数),或(3)这两者的混合,诸如用户开启拼写检查器并由系统每分钟更新拼写检查。检查这些函数的完整性是有利的原因在于它们可能在任何时刻被调用执行,并由此落入“可能执行的代码”的类别。典型的事件处理器包括以下函数,但不限于这些示例:
·onclick(处理当用户点击一元时发生的事件)
·ondblclick(处理当用户双击一元时发生的事件)
·onkeydown(处理当按下按键时发生的事件)
·onkeypress(处理当用户按下字母数字键时发生的事件)
·onkeyup(处理当放开按键时发生的事件)
·onmousemove(处理当用户在一元上移动鼠标指针时发生的事件)
·onmouseout(处理当用户将指针从一元上移开时发生的事件)
这些仅是许多事件处理函数中的一些,这些事件处理函数可预防外来代码以改进程序的行为完整性。
在图4中,示出了三种类型的事件:用户413可通过按键或鼠标移动401来创建事件,窗口系统414程序可以发生403;或者可由用户实施定时器例程415并由系统更新505。这些事件由一些运行中的应用程序404处理,应用程序404具有指向这些函数的指针以处理这些事件。例如,在定时器例程415事件时,应用程序404处理该事件并通过指针416调用Spell Checker Routine()406。这个例程406会每隔60秒钟执行拼写检查。
ModAuth 408通过检查(418)指向像Spell Checker Routine()406等的事件处理函数的指针416,并检查(420)例程406本身即检查包含例程406的页面来预防任何外来代码渗入。换而言之,黑客412可能改变(426)指向指定例程(在所示示例中为Spell Checker Routine()406)的指针416,从而指针416将指向(422)某个外来代码410而不再指向指定例程406。同样地,黑客412可能侵入(428)指定例程406,使得这个例程406引用(424)某个外来代码410,或者黑客412可能将某个外来代码插入例程本身406。如果ModAuth 408要保护系统代码的完整性,则它必须预防这种侵入情况。预防这些情况的原因在于事件处理代码将响应可能发生的特定事件而运行。不会指示ModAuth 408来认证将不运行的代码,而是相反会指示ModAuth 408来认证将运行或可能运行的代码,因为这些代码可能潜在地调用外来代码。
在本发明的又一个方面,图5示出了检查计算机系统的指令指针(或程序计数器)以及它所指向的代码。指令指针504是寄存器,它指向(506)要从存储器加载并接着执行的下一指令512。指令指针504一般存储在处理器502中。
认证模块(未示出)可检查指令指针504是否被改写以指向(514)某个外来代码516,或者它是否指向(506)下一个要执行的指令512,但是该指令实际上是某个外来代码516且不是指定代码518。由于指令指针指向(506)将要执行的指令,因此检查是否可能经由指令指针执行外部代码是合乎需要的。
检查事件处理函数和代码所引用的指令指针只是需要检查的这类代码中的一些示例,即可能运行的代码。这对于包括动态链接库、子系统程序(例如负责窗口操作的那些程序)等也成立。本领域技术人员会理解对这种可能运行代码的检查,而不管检查(存储在页面上的)代码的标准是基于事件处理、指令指示、动态链接库、还是窗口子系统等。
检查页面出错历史
页面出错是当程序请求当前不在物理存储器中的代码或数据时发生的中断。该中断触发操作系统从诸如磁盘驱动器等某个外部存储器中获取代码或数据,并将其加载到诸如RAM等物理存储器中。该情况不同于无效页面出错或页面出错错误,后两者是在当操作系统在由物理存储器和至少某些部分的外部存储器组成的虚拟存储器中找不到代码或数据时发生。这通常在虚拟存储区域或将虚拟地址映射到实际地址的表格发生损坏时发生。
当发生页面出错时,创建其历史和所有其他页面出错。该历史包含有关哪个页面被页入到物理存储器中以及哪个代码请求页入特定页面的信息。当页面被页入到物理存储器时,很有可能执行页面中的代码。因此,检查页面出错历史是寻找潜在外来代码的有效方式,因为页面中的代码和请求页面的代码可能被执行,且也可能是外来代码或至少包含某些外来代码。
图6示出了检查页面出错历史600。虚拟存储器602是扩展物理存储器604的一种方式。这种扩展是通过硬盘606的协助来完成的。通过在物理存储器604与硬盘606之间交换(618)页面614,在程序看来物理存储器604比其实际的要大,即其大小是虚拟存储器602的大小。虚拟存储器602是物理存储器604和硬盘606的页面文件608的总和。因此,硬盘606可包含分割出来以供虚拟存储器602使用的单独磁盘空间610。
页面出错历史620维护哪些页面614被页入到物理存储器604中、以及哪个调用者612请求(616)将特定页面614页入的记录。通过检查页面出错历史620,认证模块ModAuth 722能知道要检查物理存储器604中的哪些页面。同样地,基于页面出错历史620,ModAuth 722能知道哪个代码请求页入特定页面。
如上所述,ModAuth 622会想要检查页入页面的原因在于它将很可能被执行。此外,通过检查页面出错历史620,ModAuth 622也能够检查请求页面614的调用者612。如果调用者612是不期望驻留在物理存储器中的某个外来代码,那么它可能页入某个其它的外来或恶意代码。
本发明一方面的示例性实现
在图7中,示出了本发明一方面的示例性实现。具体地,在框702,认证模块检查当前线程堆栈所引用的页面。这些页面上的代码将被执行或可能被执行,因此检查它对防止外来代码渗入是重要的。
接着,在框704,认证模块检查进程空间内其他线程堆栈所引用的页面,因为在任何环境切换时,这些其他线程堆栈中的任一个可能被调用,且它们所引用的代码将被或者至少是可能被执行。
同样,在框706,检查可能调用的任何函数以及指向他们的指针。这些函数可能是基于某个用户事件、计算机系统事件或其组合调用的事件处理函数。由于可能基于一指定事件调用事件处理函数,因此检查这些函数以防外来代码渗入是重要的。换而言之,检查这些函数所驻留的页面是重要的。
在框708,检查指令指针。由于该指针指向在当前执行指令之后将要执行的代码,因此检查和确定指令指针是被侵入而指向外来代码,还是指向可能被侵入并由此包含外来代码(由此可能进一步引用外来代码等)的正确指令集是重要的。
在框710,检查页面出错历史。从硬盘上的页面文件被页入到物理存储器中的页面是将可能运行的页面,因此对其检查外来代码。此外,也检查请求页入这些页面的任何调用代码。这种调用代码可能是调用更多外来代码的外来代码。
在框712,如果这种代码被认为是外来代码,则本发明的这个方面至少执行一个动作以防止执行代码。这种动作可以包括在某个随机时间点使得系统出错、使得进程被终止并从存储器卸载、信令另一进程终止或改变行为,或者触发显示用户界面。
在框714,示例性实现在某个指定时间段之后再次执行检查。该时间段对于每次反复检查可能在长度上都一样,或者它可能是任意的。这大部分是基于性能考虑,因为认证模块越是必须频繁地检查外来代码,运行该模块的系统就会越慢。此外,这种外来代码检测模块并非必须检查所有将运行或潜在地可能运行的代码,而是它可以仅检查任何可执行代码或可能被调用的代码的几个页面。
虽然如各个附图中所示已结合优选方面描述了本发明,应该理解可以使用其他类似的方面,或者可以对所描述的方面作出修改或增加以执行本发明相同的功能而不背离于此。例如,描述了外来代码检测,其中检查将运行和可能运行的代码以确定外来代码的存在。这种外来代码检测的一个示例包括检查引用带有代码的页面的给定进程空间中的当前堆栈线程;其他示例包括检查随机页面和邻近页面。然而,通过这里的示教也可构想这些所描述方面的其他等效方法。因此,本发明不应限于任何单个方面,而是应该在广度和范围上根据所附权利要求来解释。

Claims (20)

1.一种检测对执行外来代码的尝试的方法,包括:
基于关于包含在存储器的页面中的代码将被执行的可能性的标准来标识包含所述代码的所述存储器的页面;
验证所述代码是否满足完整性测试;
如果所述代码不满足所述完整性测试,则采取至少一个动作来防止代码执行;以及
对计算机系统事件处理器函数和指向计算机系统事件处理器函数的指针检查外来代码,每个事件处理器函数是响应于包括用户动作和/或系统事件的一事件而执行的,对每个事件处理器函数的检查包括:
检查指向该事件处理器函数的每个指针,以确定指针实际上指向该事件处理器函数而不是指向别处;
检查该事件处理器函数的任何外来代码渗入;
对该事件处理器函数检查任何引用外来代码的黑客侵入。
2.如权利要求1所述的方法,其特征在于,所述标准是引用所述页面的线程堆栈。
3.如权利要求2所述的方法,其特征在于,所述页面是随机选择的。
4.如权利要求2所述的方法,其特征在于,还包括所述线程堆栈引用的附加页面,其中所述附加页面邻近所述页面,其中所述附加页面是基于所述标准标识的、并由所述完整性测试验证、且如果所述附加页面上的代码不满足所述完整性测试则采取预防动作。
5.如权利要求1所述的方法,其特征在于,所述标准是将所述页面标识为被页入到物理存储器、以及调用要被页入的所述页面的任何调用代码的页面出错历史。
6.如权利要求1所述的方法,其特征在于,所述标准包括事件处理代码,其中可以基于用户事件、计算机系统事件或它们的组合中的任一个来调用所述事件处理代码。
7.如权利要求1所述的方法,其特征在于,所述标准包括由指令指针引用的页面。
8.如权利要求1所述的方法,其特征在于,所述标准包括包含动态链接库函数的页面。
9.如权利要求1所述的方法,其特征在于,所述完整性测试包括检查所述页面的散列是否匹配一存储的散列。
10.如权利要求1所述的方法,其特征在于,所述防止代码执行的至少一个动作是以下之一:在某个随机时间点使得系统出错、使得一进程被终止并从存储器卸载、通知另一进程终止或改变行为、或者触发显示用户界面。
11.一种用于检测对执行外来代码的尝试的系统,包括:
基于关于包含在存储器的页面中的代码将被执行的可能性的标准来标识包含所述代码的所述存储器的页面的装置;
验证所述代码是否满足完整性测试的装置;
如果所述代码不满足所述完整性测试,则采取至少一个动作来防止代码执行的装置;以及
对计算机系统事件处理器函数和指向计算机系统事件处理器函数的指针检查外来代码的装置,每个事件处理器函数是响应于包括用户动作和/或系统事件的一事件而执行的,对每个事件处理器函数的检查包括:
检查指向该事件处理器函数的每个指针,以确定指针实际上指向该事件处理器函数而不是指向别处的装置;
检查该事件处理器函数的任何外来代码渗入的装置;
对该事件处理器函数检查任何引用外来代码的黑客侵入的装置。
12.如权利要求11所述的系统,其特征在于,所述标准是引用所述页面的线程堆栈。
13.如权利要求12所述的系统,其特征在于,所述页面是随机选择的。
14.如权利要求12所述的系统,其特征在于,还包括由所述线程堆栈引用的附加页面,其中所述附加页面邻近所述页面,其中所述附加页面是基于所述标准标识的、并由所述完整性测试验证、且如果所述附加页面上的代码不满足所述完整性测试则采取预防动作。
15.如权利要求11所述的系统,其特征在于,所述标准是将所述页面标识为被页入到物理存储器、以及调用要被页入的所述页面的任何调用代码的页面出错历史。
16.如权利要求11所述的系统,其特征在于,所述标准包括事件处理代码,其中可以基于用户事件、计算机系统事件或它们的组合中的任一个来调用所述事件处理代码。
17.如权利要求11所述的系统,其特征在于,所述标准包括由指令指针引用的页面。
18.如权利要求11所述的系统,其特征在于,所述标准包括包含动态链接库函数的页面。
19.如权利要求11所述的系统,其特征在于,所述完整性测试包括检查所述页面的散列是否匹配一存储的散列。
20.如权利要求11所述的系统,其特征在于,所述防止代码执行的至少一个动作是以下之一:在某个随机时间点使得系统出错、使得一进程被终止并从存储器卸载、通知另一进程终止或改变行为,或者触发显示用户界面。
CN2006800076790A 2005-04-08 2006-04-06 用于外来代码检测的系统和方法 Expired - Fee Related CN101405705B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/102,341 2005-04-08
US11/102,341 US7631356B2 (en) 2005-04-08 2005-04-08 System and method for foreign code detection
PCT/US2006/012710 WO2006110426A2 (en) 2005-04-08 2006-04-06 System and method for foreign code detection

Publications (2)

Publication Number Publication Date
CN101405705A CN101405705A (zh) 2009-04-08
CN101405705B true CN101405705B (zh) 2011-04-13

Family

ID=37084512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800076790A Expired - Fee Related CN101405705B (zh) 2005-04-08 2006-04-06 用于外来代码检测的系统和方法

Country Status (8)

Country Link
US (1) US7631356B2 (zh)
KR (1) KR20070118074A (zh)
CN (1) CN101405705B (zh)
AU (1) AU2006235058B2 (zh)
MX (1) MX2007011026A (zh)
NO (1) NO20074054L (zh)
NZ (1) NZ560861A (zh)
WO (1) WO2006110426A2 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984304B1 (en) * 2004-03-02 2011-07-19 Vmware, Inc. Dynamic verification of validity of executable code
US8239686B1 (en) * 2006-04-27 2012-08-07 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
US8387139B2 (en) * 2008-02-04 2013-02-26 Microsoft Corporation Thread scanning and patching to disable injected malware threats
US8627303B2 (en) * 2009-11-30 2014-01-07 International Business Machines Corporation Memory optimization of virtual machine code by partitioning extraneous information
EP2348444B1 (en) * 2009-12-16 2014-03-19 Nxp B.V. Data processing apparatus
US9135443B2 (en) * 2010-05-06 2015-09-15 Mcafee, Inc. Identifying malicious threads
WO2012119218A1 (en) 2011-03-09 2012-09-13 Irdeto Canada Corporation Method and system for dynamic platform security in a device operating system
US8584242B2 (en) * 2011-07-12 2013-11-12 At&T Intellectual Property I, L.P. Remote-assisted malware detection
CN102346780B (zh) * 2011-10-18 2016-01-06 北龙中网(北京)科技有限责任公司 网页地址的获取方法和获取装置
US9734333B2 (en) * 2012-04-17 2017-08-15 Heat Software Usa Inc. Information security techniques including detection, interdiction and/or mitigation of memory injection attacks
GB2510641A (en) * 2013-02-12 2014-08-13 F Secure Corp Detecting suspicious code injected into a process if function call return address points to suspicious memory area
US9852290B1 (en) * 2013-07-12 2017-12-26 The Boeing Company Systems and methods of analyzing a software component
US9479521B2 (en) 2013-09-30 2016-10-25 The Boeing Company Software network behavior analysis and identification system
WO2015113052A1 (en) * 2014-01-27 2015-07-30 Webroot Inc. Detecting and preventing execution of software exploits
US9984230B2 (en) * 2015-06-26 2018-05-29 Mcafee, Llc Profiling event based exploit detection
US10904291B1 (en) * 2017-05-03 2021-01-26 Hrl Laboratories, Llc Low-overhead software transformation to enforce information security policies

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5103394A (en) * 1984-04-30 1992-04-07 Hewlett-Packard Company Software performance analyzer
US7093239B1 (en) * 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
KR20040089386A (ko) 2003-04-14 2004-10-21 주식회사 하우리 메모리를 감염시키는 바이러스의 치료방법, 프로그램을기록한 컴퓨터로 읽을 수 있는 기록매체 및 바이러스의치료장치
EP1507414B1 (en) * 2003-08-15 2008-04-30 STMicroelectronics Limited Circuit for restricting data access
US7555777B2 (en) * 2004-01-13 2009-06-30 International Business Machines Corporation Preventing attacks in a data processing system

Also Published As

Publication number Publication date
KR20070118074A (ko) 2007-12-13
US20060230388A1 (en) 2006-10-12
MX2007011026A (es) 2007-09-26
CN101405705A (zh) 2009-04-08
NZ560861A (en) 2010-03-26
AU2006235058B2 (en) 2011-05-12
AU2006235058A1 (en) 2006-10-19
WO2006110426A2 (en) 2006-10-19
NO20074054L (no) 2007-12-28
US7631356B2 (en) 2009-12-08
WO2006110426A3 (en) 2007-11-15

Similar Documents

Publication Publication Date Title
CN101405705B (zh) 用于外来代码检测的系统和方法
US9852289B1 (en) Systems and methods for protecting files from malicious encryption attempts
KR101928908B1 (ko) 멀웨어 스캐닝을 용이하게 하기 위하여 명성 표시자를 사용하기 위한 시스템 및 그 방법
KR101888712B1 (ko) 운영 체제 구성 값 보호 기법
US8281410B1 (en) Methods and systems for providing resource-access information
US10079835B1 (en) Systems and methods for data loss prevention of unidentifiable and unsupported object types
JP4159100B2 (ja) 情報処理装置による通信を制御する方法およびプログラム
US20070136807A1 (en) System and method for detecting unauthorized boots
US20190332765A1 (en) File processing method and system, and data processing method
US8984629B2 (en) Apparatus and method for preemptively protecting against malicious code by selective virtualization
EP3847568B1 (en) Protecting selected disks on a computer system
US20130276128A1 (en) Secure option rom firmware updates
US20180026986A1 (en) Data loss prevention system and data loss prevention method
US20110126293A1 (en) System and method for contextual and behavioral based data access control
US20220067195A1 (en) Controlling installation of unauthorized drivers on a computer system
TW201939337A (zh) 行為識別、數據處理方法及裝置
US9659182B1 (en) Systems and methods for protecting data files
US20160335433A1 (en) Intrusion detection system in a device comprising a first operating system and a second operating system
CN101150459B (zh) 提高信息安全装置安全性的方法及系统
US20240163264A1 (en) Real-time data encryption/decryption security system and method for network-based storage
Viswanathan et al. Dynamic monitoring of website content and alerting defacement using trusted platform module
US11960606B2 (en) System and method for protecting against data storage attacks
US20220327211A1 (en) Data processing system and method capable of separating application processes
JP2005227981A (ja) ソフトウェア配信装置、端末装置、およびインストールプログラム
KR20190108233A (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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150428

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150428

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110413

CF01 Termination of patent right due to non-payment of annual fee